遊戲伺服器 gonet-遊戲伺服器
gonet 遊戲伺服器架構,mmo架構,分散式snowflake64為整形uuid,ai行為樹,配置data,遊戲大部分都在記憶體運算,分散式快取redis,增加db模組讀取blob資料。
設計之初,建立在actor模式下的;rpc,以及訊息驅動,rpc無需註冊,支援通用資料(int,[]int,[3]int),map資料,以及struct資料,rpc效能測試如下;sql封裝簡單的orm(orm支援pb結構體做mysql blob,orm支援結構體做mysql json型別)具體看demo
websocket模式下,要在net,websocket注視掉如下程式碼,在netgateserver裡面註釋回//websocket這段
程式碼除了mysql,protobuf,redis, etcd這幾個庫以外,其他都是自己寫的,方便效能和修改,主動權在自己手裡
伺服器之間rpc,客戶端伺服器之間protobuf + rpc,客戶端tcp遵從如下訊息包頭(支援json,考慮到效能,兩種傳輸協議不相容,請切換json分支)
前四位 protobuf name 的 crc,中間protobuf位元組流, 尾部+結束標誌?♡ (結束標誌也可以自己定義在base.TCP_END控制) //另外支援包頭大小- 前四位包體大小,再四位protobuf name 的 crc,中間protobuf位元組流,程式碼注視掉,(搜尋tcp粘包固定包頭) 1.支援go mod, gopath可以不需要設定(使用gomod可以使用goproxy代理(GOPROXY=
// go get github.com/golang/net
// go get github.com/go-sql-driver/mysql
// go get github.com/gomodule/redigo/redis
// go get go.etcd.io/etcd/client
// go get github.com/golang/protobuf
2.下載etcd做服發現(new),(redis做排行榜,全域性快取,可選)
3.bin目錄下的sxz_server.cfg配置資料庫以及埠
4.資料庫在sql檔案目錄下生產
5.win下執行build.bat,start.bat
6.linux下執行build.sh,start.sh
有問題可以加qq群:950288306
目前遊戲庫分類:
1.actor核心庫,actor模式的雛形。
2.base基礎庫,分裝rpc以及其他基礎庫。
3.db庫,mysql,支援簡單orm,沒有重度gorm,更加輕便,還在受gorm 0 nil “” 資料庫更新就失敗的痛苦嗎。還在忍受重度gorm帶來sql語句都不知道怎麼寫,沒錯這個是輕度的。
4.message庫,pb用於傳輸協議。
5.nework庫,網路庫,tcp,websocket網路管理。rd庫,redis庫,做一些叢集唯一快取用。
6.client,測試客戶端原始碼,包括go和lua的原始碼
目前遊戲模組:
1.account賬號服務,提供註冊賬號,登入校驗,叢集服務。
2.natgate閘道器服務,所有對外都是通過閘道器轉發,叢集服務。
3.world世界服務,所有邏輯,叢集服務。
4.第三方中介軟體:etcd分散式服發現,redis分散式快取。
伺服器架構如下: image
bobohume/gonet
888229go分散式伺服器,基於記憶體mmo—Read More
Latest commit to themasterbranch on 6-17-2021 Download as zip