開源一個go的H5遊戲服務端開發框架

本人也是因為go的魅力從原來的node.js轉go開發的,但並沒有放棄node.js開發。node.js開發起來極為舒服,誰用誰知道。go的性能,併發,靜態編譯速度還是更令人著迷,在雲計算,區塊鏈等未來領域的發展也是極為看好。

之前遊戲開發所使用的是網易的pomelo框架,它應該是遊戲開發中node.js領域的主流框架。pomelo使用過程中遇到幾個痛點:

  • 性能提升:pomelo適合做IO密集型的場景應用,對於CPU密集型的處理影響性能。但遊戲開發中經常會遇到需要大量計算的情況。雖然node.js後來版本也加入了多線程。
  • 代碼保護:對於做過外包的同學應該有很深體會,代碼更本不敢部署在客戶的服務器上。合作時是密,談崩了是血淋淋教訓。
  • 所有進程依賴master的管理模式已經out:節點進程不能自己啟動,需要通過master,而且master只有一個,跪了就全跪了。現在各行業服務開發已經進入微服務模式,沒有一個節點是唯一的,都是可以替代的。先進的服務發現機制還帶健康檢查,自動踢除宕機或響應慢的節點。全面擁抱大數據,雲時代吧。

在go上進行遊戲快速開發極需要一件稱手的兵器。我先後學習了cellnet,leaf,mqant都不是太滿意(各種優劣日後做評析)。pomelo的架構和設計還是深入骨髓。有沒有對於熟悉了pomelo轉過來的同學門檻更低的呢?所以自己擼了起來。

微服務模式核心就是rpc,環顧主流rpc框架,阿里的dubbo,新浪的motan,google的gRPC,Apache的thrift,騰訊的Tars。要麼太重,要麼語言不適合。最後rpcx https://rpcx.io勝出,性能高,又是原生go寫的。已經在馬蜂窩等應用場景中有實踐。自己也沒必要再擼個rpc,更不可能超越前者了。

kudos框架: https://github.com/kudoochui/kudos
開發腳手架: https://github.com/kudoochui/kudosServer

特點

  • 簡單:容易上手,遊戲開發需要基本組件和服務都已集成,直接調用。對於熟悉pomelo的特別友好。
  • 組件化:功能分為一個個組件,按需要加載。
  • 分佈式:可以分成多個節點分佈式部署,也可以打包一起作為一個進程部署。
  • 微服務架構,支持服務發現:consul,etcd,zookeeper等主流注冊中心。
  • 基於rpcx的rpc:rpcx是一款高性能的rpc框架。其性能遠遠高於 Dubbo、Motan、Thrift等框架,是gRPC性能的兩倍。支持服務治理。更多功能請參考:http://rpcx.io
  • 跨語言:除go外,還可以訪問其它語言實現的節點服務。得益於rpcx。
  • 支持pomelo通信協議:該協議廣泛用於各種遊戲開發中,支持多端,多種語言版本。
  • 易部署:各服務器獨立,無依賴,可以單獨啟動。


開源一個go的H5遊戲服務端開發框架


kudos服務節點分為前端服務節點和後端服務節點。前端服務節點主要指的是gate。它負責管理連接,解碼來自客戶端的消息,通過proxy組件調用後端服務,拿到返回數據後,再編碼發送回客戶端。後端服務節點主要運行遊戲的邏輯,數據的存儲等。

所有節點需要向服務中心註冊,一個節點不知道其它節點在哪,都是通過這個註冊中心查詢,獲得對方的地址。支持如consul,zookeeper,etcd等。

每一個節點,如gate,logic等,內部是組件的組合。框架實現的有connector,remote,proxy,timers等。當然可以添加自定義組件。

kudos裡提供一些global service。如idService,msgService,channelService等。sessionService主要是給後端服務節點使用的。

更多內容請查看kudos wiki


分享到:


相關文章: