游戲 分布式mmo游戲服務器


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=https://goproxy.i ),不然很坑爹)。(也支持go vendor(刪除項目下的go.mod文件),下載這幾個基礎庫,mysql,protobuf,redis,etcd)

// 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分布式緩存。

— Read More

Latest commit to the  undefined branch on unknown
Download as zip
授權協議:
開發語言:
golang  查看源碼»


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM