背景介紹
游戲經(jīng)過一段時(shí)間的運(yùn)營(yíng),發(fā)現(xiàn)了原來的設(shè)計(jì)缺陷太多,所以決定重新設(shè)計(jì)架構(gòu)。使用到nginx作為核心并通過lua+redis設(shè)計(jì)實(shí)現(xiàn)自己的負(fù)載分配方案。先看看下面這張簡(jiǎn)單的架構(gòu)圖吧~
從圖上看,結(jié)構(gòu)是非常簡(jiǎn)單的。主要通過編寫lua分配策略使游戲房間內(nèi)的人數(shù)盡量坐滿。
技術(shù)實(shí)現(xiàn)思路
要編寫lua插件通常需求編譯nginx使其支持,如果嫌麻煩可以直接上手openresty就可以了。我剛開始編譯nginx插件模塊也費(fèi)了不少時(shí)間,現(xiàn)在使用openresty方便多了。
我們的游戲房間是9個(gè)人,產(chǎn)品需要優(yōu)先坐滿一個(gè)房間才分配下一個(gè)房間;玩家通過websocket連接到咱們的服務(wù)器上,為了使nginx記住我們的節(jié)點(diǎn)負(fù)載情況,我使用redis記錄每一個(gè)節(jié)點(diǎn)的連接數(shù)量,并設(shè)計(jì)一套權(quán)重策略依據(jù)節(jié)點(diǎn)連接數(shù)量求9的余數(shù)進(jìn)行排序。當(dāng)然具體看代碼更加容易理解~~
準(zhǔn)備工作
假設(shè)已經(jīng)安裝好了openresty,可以直接在/usr/local/openresty/nginx/conf下面找到nginx.conf文件,增加下面一行(注意如果已經(jīng)安裝了nginx的其他版本,需要將openresty安裝的nginx進(jìn)行端口重新配置)
... 30 #keepalive_timeout 0; 31 keepalive_timeout 65; 32 include /usr/local/openresty/nginx/conf.d/*.conf; 33 #gzip on;....
延伸閱讀
- ssh框架 2016-09-30
- 阿里移動(dòng)安全 [無線安全]玩轉(zhuǎn)無線電——不安全的藍(lán)牙鎖 2017-07-26
- 消息隊(duì)列NetMQ 原理分析4-Socket、Session、Option和Pipe 2024-03-26
- Selective Search for Object Recognition 論文筆記【圖片目標(biāo)分割】 2017-07-26
- 詞向量-LRWE模型-更好地識(shí)別反義詞同義詞 2017-07-26
- 從棧不平衡問題 理解 calling convention 2017-07-26
- php imagemagick 處理 圖片剪切、壓縮、合并、插入文本、背景色透明 2017-07-26
- Swift實(shí)現(xiàn)JSON轉(zhuǎn)Model - HandyJSON使用講解 2017-07-26
- 阿里移動(dòng)安全 Android端惡意鎖屏勒索應(yīng)用分析 2017-07-26
- 集合結(jié)合數(shù)據(jù)結(jié)構(gòu)來看看(二) 2017-07-26