首頁 >後端開發 >Golang >golang leaf用的多嗎

golang leaf用的多嗎

(*-*)浩
(*-*)浩原創
2019-12-13 13:03:583098瀏覽

golang leaf用的多嗎

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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn