openresty使用筆記(一)

2022-07-26 07:54:08 字數 1405 閱讀 6416

遊戲經過一段時間的運營,發現了原來的設計缺陷太多,所以決定重新設計架構。使用到nginx作為核心並通過lua+redis設計實現自己的負載分配方案。先看看下面這張簡單的架構圖吧~

從圖上看,結構是非常簡單的。主要通過編寫lua分配策略使遊戲房間內的人數盡量坐滿。

要編寫lua外掛程式通常需求編譯nginx使其支援,如果嫌麻煩可以直接上手openresty就可以了。我剛開始編譯nginx外掛程式模組也費了不少時間,現在使用openresty方便多了。

我們的遊戲房間是9個人,產品需要優先坐滿乙個房間才分配下乙個房間;玩家通過websocket連線到咱們的伺服器上,為了使nginx記住我們的節點負載情況,我使用redis記錄每乙個節點的連線數量,並設計一套權重策略依據節點連線數量求9的餘數進行排序。當然具體看**更加容易理解~~

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

...

30 #keepalive_timeout 0;

31 keepalive_timeout 65;

32 include /usr/local/openresty/nginx/conf.d/*.conf;

33 #gzip on;

....

為了方便載入個人的配置,我在nginx下面自己建立了乙個conf.d檔案目錄,存放自己的配置。下面檢視nginx具體配置。

server    

}

注意這裡剛開始,我使用的是set_by_lua_file來返回乙個websocket_add。那樣容易理解但是不支援redis,與資料庫的訪問。所以這裡使用了rewrite_by_lua_file方式。在開始出宣告了websocket_add全域性變數,主要是為了在lua外掛程式裡面進行修改。下面看lua外掛程式簡單版本為了方便管理,我建立了lua**目錄在/usr/local/lua。檔名取名為dispatcher.lua

好久沒寫blog了,最近又學了那麼多新玩意,想記錄一下~~

Jupyter Notebook使用筆記(一)

notebook 自帶一組快捷鍵,能提高效率 感 jio 有點要脫離滑鼠了 下面大概總結一下,也方便以後使用。notebook裡每乙個叫做cell。command mode 和 edit mode。在乙個cell中,按下enter,進入edit模式,按下esc,進入command 模式在乙個cell...

kettle使用筆記 一

一 常用目錄結構 二 單錶操作 1.表輸入 要遷移庫表 2.表輸出 遷移目標庫表 單錶遷移這兩個就可以滿足 如果欄位要遷移的表跟目標表字段名稱不一致 可以不一致,上面也滿足 想做一致。可以用轉換中欄位選擇對映 三 多表鏈結遷移 方式1 多表關聯,可以手動寫關聯sql。直接乙個輸入,乙個輸出就可以實現...

Jquery使用筆記 一

最近使用jquery比較多,網上搜了很多有用的東西,先記下來!1.動態新增 行 2.下拉框聯動 請選擇 請選擇請選擇 3.表單驗證可以使用jquery.validate,是 4.自動填充,可以使用jquery.autocomplete,是 5.text和textarea的高度自增 input高度固定...