背景介紹

游戲經(jīng)過一段時間的運營,發(fā)現(xiàn)了原來的設(shè)計缺陷太多,所以決定重新設(shè)計架構(gòu)。使用到nginx作為核心并通過lua+redis設(shè)計實現(xiàn)自己的負載分配方案。先看看下面這張簡單的架構(gòu)圖吧~

Android培訓,安卓培訓,手機開發(fā)培訓,移動開發(fā)培訓,云培訓培訓

從圖上看,結(jié)構(gòu)是非常簡單的。主要通過編寫lua分配策略使游戲房間內(nèi)的人數(shù)盡量坐滿。

技術(shù)實現(xiàn)思路

要編寫lua插件通常需求編譯nginx使其支持,如果嫌麻煩可以直接上手openresty就可以了。我剛開始編譯nginx插件模塊也費了不少時間,現(xiàn)在使用openresty方便多了。
我們的游戲房間是9個人,產(chǎn)品需要優(yōu)先坐滿一個房間才分配下一個房間;玩家通過websocket連接到咱們的服務(wù)器上,為了使nginx記住我們的節(jié)點負載情況,我使用redis記錄每一個節(jié)點的連接數(shù)量,并設(shè)計一套權(quán)重策略依據(jù)節(jié)點連接數(shù)量求9的余數(shù)進行排序。當然具體看代碼更加容易理解~~

準備工作

假設(shè)已經(jīng)安裝好了openresty,可以直接在/usr/local/openresty/nginx/conf下面找到nginx.conf文件,增加下面一行(注意如果已經(jīng)安裝了nginx的其他版本,需要將openresty安裝的nginx進行端口重新配置)

... 30     #keepalive_timeout  0;
 31     keepalive_timeout  65; 32     include /usr/local/openresty/nginx/conf.d/*.conf; 33     #gzip  on;....

延伸閱讀

學習是年輕人改變自己的最好方式-Java培訓,做最負責任的教育,學習改變命運,軟件學習,再就業(yè),大學生如何就業(yè),幫大學生找到好工作,lphotoshop培訓,電腦培訓,電腦維修培訓,移動軟件開發(fā)培訓,網(wǎng)站設(shè)計培訓,網(wǎng)站建設(shè)培訓學習是年輕人改變自己的最好方式