FishChat分布式可伸縮 IM 服務(wù)器
FishChat(魚傳——魚傳尺素),是一款純 golang 編寫優(yōu)秀的即時(shí)通訊軟件(IM), 它集合了市面上已有產(chǎn)品的優(yōu)點(diǎn), 并具備 智能硬件網(wǎng)關(guān)管理(學(xué)習(xí)QQ物聯(lián)思想, 構(gòu)思中)。
FishChat Android 客戶端見 https://github.com/oikomi/FishChatAndroid (緊張開發(fā)中)
系統(tǒng)架構(gòu)
關(guān)鍵服務(wù)器詳解
gateway
gateway server主要是接受client請求,進(jìn)行通用的功能設(shè)置,目前這塊只做了分配msg_server的功能,后面可根據(jù)需要進(jìn)行擴(kuò)展
在gateway server的配置文件中最重要的是配置msg_server列表
"MsgServerList" : [ "192.168.159.169:19000", "192.168.159.169:19001" ],
msg_server
msg_server是消息的主體,維護(hù)著客戶端連接和keeplive,同時(shí)要注意router、manager和monitor都訂閱了msg_server的channel
SYSCTRL_CLIENT_STATUS = "/sysctrl/client-status" SYSCTRL_TOPIC_STATUS = "/sysctrl/topic-status" SYSCTRL_TOPIC_SYNC = "/sysctrl/topic-sync" SYSCTRL_SEND = "/sysctrl/send" SYSCTRL_MONITOR = "/sysctrl/monitor"
這些channel保證了msg_server在事件觸發(fā)時(shí)會廣播通知后面的router、manager和monitor服務(wù)
router
router顧名思義是做了msg_server之間的消息轉(zhuǎn)發(fā)
manager
manager主要是管理client信息存儲、離線消息存儲等等,通過它和redis聯(lián)系
monitor
monitor主要是收集監(jiān)控各服務(wù)器狀態(tài)信息,目前monitor是可選項(xiàng),可按需要啟動它
部署
FishChatServer采用分布式可伸縮部署方式。如果沒有多機(jī)條件,可以單機(jī)部署:
建議: 單機(jī)測試部署
gateway一臺
msg_server兩臺
router一臺
manager一臺
monitor一臺
./gateway
./msg_server -conf_file=msg_server.19001.json
./msg_server -conf_file=msg_server.19000.json
./router
./manager
./monitor
按上面的默認(rèn)啟動方式,查看系統(tǒng)的監(jiān)聽端口如下
當(dāng)然你可以修改各文件夾下面的json配置文件修改配置參數(shù)
