Leaf 是一個由 Go 語言(golang)編寫的開發效率和執行效率并重的開源游戲服務器框架。Leaf 適用于各類游戲服務器的開發,包括 H5(HTML5)游戲服務器。
Leaf 的關注點:
良好的使用體驗。Leaf 總是盡可能的提供簡潔和易用的接口,盡可能的提升開發的效率
穩定性。Leaf 總是盡可能的恢復運行過程中的錯誤,避免崩潰
多核支持。Leaf 通過模塊機制和 leaf/go 盡可能的利用多核資源,同時又盡量避免各種副作用
模塊機制。
Leaf 的模塊機制
一個 Leaf 開發的游戲服務器由多個模塊組成(例如 LeafServer),模塊有以下特點:
每個模塊運行在一個單獨的 goroutine 中
模塊間通過一套輕量的 RPC 機制通訊(leaf/chanrpc)
Leaf 不建議在游戲服務器中設計過多的模塊。
游戲服務器在啟動時進行模塊的注冊,例如:
leaf.Run( game.Module, gate.Module, login.Module, )
這里按順序注冊了 game、gate、login 三個模塊。每個模塊都需要實現接口:
type Module interface {OnInit()OnDestroy()Run(closeSig chan bool)
}Leaf 首先會在同一個 goroutine 中按模塊注冊順序執行模塊的 OnInit 方法,等到所有模塊 OnInit 方法執行完成后則為每一個模塊啟動一個 goroutine 并執行模塊的 Run 方法。
最后,游戲服務器關閉時(Ctrl + C 關閉游戲服務器)將按模塊注冊相反順序在同一個 goroutine 中執行模塊的 OnDestroy 方法。
以上就是golang leaf用的多嗎的詳細內容,更多請關注億速云其它相關文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。