Leaf 是一個由 Go 語言(golang)編寫的開發效率和執行效率並重的開源遊戲伺服器框架。 Leaf 適用於各類遊戲伺服器的開發,包括 H5(HTML5)遊戲伺服器。
Leaf 的重點: (建議學習:go)
#良好的使用經驗。 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用的多嗎的詳細內容。更多資訊請關注PHP中文網其他相關文章!