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