Lotou是用於在Golang實施的遊戲服務器的輕量級框架。它通過抽象消息的交換來利用節點之間的通信,從而可以輕鬆實現多節點和多服務。
Lotou的靈感來自Cloudwu撰寫的框架天網。在此框架內,所有服務通過消息互相交流。服務提供的功能不會通過API調用來公開。在當前版本中,Module Core負責路由消息,每個服務都有自己的消息Chan用於接收和發送。
核心提供服務之間的通信。所有服務都註冊到core ,並通過core.send將消息發送給他人。
binary將數據編碼到二進制流中,以進行服務器與客戶端之間的通信。使用這種編碼慣例有點像JSON編組的使用。
GOB(GOB(不在Golang自己的Lib中)GOB編碼旨在維持節點的交流。服務的通信可以是跨節點,因此必須將編碼消息到二進制流中。節點內的消息切換不需要編碼以提高性能。
Golang中的所有原始類型都可以編碼。只要發件人和接收器符合相同的簽名,任何參數的組合就很容易支持
也可以支持自定義的結構,但是結構必須在高級中註冊。如果不同的節點需要使用相同的結構,則這些結構的註冊必須以固定和唯一的順序註冊。
目前,切片和地圖的編碼性能不是很好。為了編碼[]interface{} ,其每個元素均分別編碼。更具體地說,每個元素的輸入信息都已編輯。因此,如果有一種類型的元素,則類型的信息會冗餘地編組。
GOB(Lotou)的編組是通過反思來實現的。
日誌模塊用於打印調試和錯誤信息。當前,日誌是同步模式,如果我們有太多的日誌需要進行Wirte提交,則可能會阻止主邏輯。 (有一天可以更改為異步模式)
網絡實現了TCP中節點之間的路線。 server和client的角色正常工作。心跳尚未實施。 client在第一次發送消息時建立與其server的連接。
多節點服務器基於Topoloy。 LOTOU中有兩種類型的節點,不同類型的節點被粘貼到同一網絡中。在某個網絡中,只有一個主節點和服務器從屬節點。服務可以以任何類型的節點運行,並且有兩種類型的服務:本地服務和全球服務。本地服務是通過名稱相互已知的同一節點中的服務。全球服務是由不同的節點運行的,它們通過註冊給主節點來暴露於所有節點的所有服務。
如果您有興趣開發Lotou,請隨時通過
QQ 157621271
微信ID daijun_1234。
QQ組也可用362112175。 (用Lotou填寫驗證消息)
Twitter @sydnash1
建議和極客總是受到歡迎。
使用etcd作為服務發現。
使用nats作為節點消息散發器。