snake-nio游戲服務(wù)器 NIO 框架
snake 百萬級別的分布式游戲服務(wù)器實時通訊 NIO 框架
數(shù)據(jù)庫建議:Ignite/cockroach
發(fā)現(xiàn)服務(wù):Zookeeper
1. messagecreator:
基于Netty的Java消息對象池,基于Netty零拷貝專為Netty做優(yōu)化。
長時間運行,消息池和Netty總內(nèi)存占用不超過2G,不用考慮GC。
2. zk-common
Zookeeper基礎(chǔ)服務(wù)發(fā)現(xiàn)組件。
3. login
登陸服務(wù)器,Http請求,實際應(yīng)用中改為Https,集中登陸時用戶排隊。
返回用戶登陸狀態(tài)、token和connector的IP和Port。
可以部署多個login服務(wù)器,去除單點,不存儲狀態(tài)。
命令服務(wù):Zookeeper發(fā)現(xiàn)centerserver,Netty長連接到centerserver,
根據(jù)數(shù)據(jù)庫表user_state.id%centerserver個數(shù)來查找。
4. centerserver
中心服務(wù)器,可以部署多個,去除單點,不存儲狀態(tài)。
根據(jù)數(shù)據(jù)庫表user_state.id%centerserver總個數(shù)來查找。
處理用戶登陸、退出等消息。
5. connector
網(wǎng)關(guān)服務(wù)器,部署多個。
每個客戶端連接在用戶認(rèn)證成功時,創(chuàng)建一個到transfer服務(wù)器的連接,把消息轉(zhuǎn)發(fā)過去。
這兩個連接用同一個EventLoop,Netty零拷貝加快傳輸速度。
性能:服務(wù)器 i3 CPU, 16G 內(nèi)存,部署login,centerserver,connector(回傳)。
客戶端:ThinkPad筆記本,40字節(jié)消息 * 1000000個每用戶,800k/s平均傳輸速率。
connector CPU占用不超過11%。
推算:每秒可以處理8 * 800K = 6.4M加密消息(回傳測試)。
命令服務(wù):Zookeeper發(fā)現(xiàn)centerserver,Netty長連接到centerserver,
根據(jù)數(shù)據(jù)庫表user_state.id%centerserver個數(shù)來查找。
認(rèn)證算法:mangos認(rèn)證算法,Secure Remote Password(安全遠(yuǎn)程密碼),現(xiàn)在明文傳輸token。
加密算法:mangos RC4算法。
6. transfer
轉(zhuǎn)發(fā)服務(wù)器,可以直接用來做邏輯服務(wù)器。
轉(zhuǎn)發(fā)服務(wù)器開始發(fā)送的都是明文。
如果后臺功能較多,可以直連邏輯服務(wù)器(郵件)、聊天服務(wù)器(家族、好友)、排行服務(wù)器、跨服戰(zhàn)斗服務(wù)器等。
邏輯服務(wù)器直連充值服務(wù)器。
7. client
測試用客戶端。
