1. 程式人生 > 其它 >遊戲伺服器 gonet-遊戲伺服器

遊戲伺服器 gonet-遊戲伺服器

https://studygolang.com/p/gonet1

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分散式快取。

伺服器架構如下: image

bobohume/gonet

888229

go分散式伺服器,基於記憶體mmo—Read More

Latest commit to themasterbranch on 6-17-2021 Download as zip
授權協議:
開發語言:
golang檢視原始碼»