游戲服務器框架:gonet

jopen 9年前發布 | 39K 次閱讀 gonet 游戲開發

A game server skeleton implemented with golang.

游戲服務器框架:gonet

部署:

  • Game Server(GS):
    玩家直接連接GS, 處理玩家邏輯,并與 HUB/SS 通信,GS存在若干個。

  • Hub Server(HUB):
    若干個GS 連接到一個HUB, 只存在一個HUB,維護基礎的全局信息,以及 GS<--->GS 的消息轉發.

  • Stats Server(SS):
    統計服務器,根據玩家的行為,記錄策劃需要的數據,以便于后期統計。
    統計屬于事后分析,數據量較大,性能需求不同, 故單獨列為一個服務器。

通信原則:

  1. GS到HUB/SS的通信,都是Call同步調用,即GS必須等待ACK。

  2. HUB到GS的通信,只有forward數據包。

  3. 單播消息在玩家離線時會存入db, 登錄后的啟動過程 GS 直接讀取db,并forward給玩家goroutine。(持久化)

  4. 多播消息會發送給所有的在線玩家(非持久化)

  5. 廣播消息會發送給所有的在線玩家(非持久化)

服務器狀態一致性

  1. GS節點可以單獨重啟

  2. HUB 重啟后,GS必須全部重啟

  3. SS 可隨意重啟,不影響業務

安裝先決條件:

  1. 確保安裝好bzr, graphviz, gawk

  2. 確保安裝好mongodb

  3. 確保config.ini中的mongo_xxxx配置正確

  4. export GOPATH='當前目錄'

安裝:

  • xtaci@ubuntu:~$ git clone https://github.com/xtaci/gonet

  • xtaci@ubuntu:~$ cd gonet

  • xtaci@ubuntu:~/gonet$ export GOPATH=~/gonet

  • xtaci@ubuntu:~/gonet$ go get labix.org/v2/mgo

  • xtaci@ubuntu:~/gonet$ make

  • xtaci@ubuntu:~/gonet$ ./start-test.sh

項目主頁:http://www.baiduhome.net/lib/view/home/1423830453654

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!