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 方法。

更多相关文章

  1. golang 如何模块化
  2. golang 如何部署到服务器?
  3. go mod模块化介绍
  4. golang项目如何部署到linux服务器
  5. golang服务器有优势吗
  6. golang如何做一个服务器?
  7. 教你使用golang实现redis服务器
  8. 关于Go语言的http/2服务器功能及客户端使用方法
  9. 一个简单的基于XML的模块集成框架

随机推荐

  1. android 安装apk包 卸载 包
  2. Android 使用CoordinatorLayout+AppBarLa
  3. [Android] Fastest Way to Get on Track
  4. android studio SDK版本的调节
  5. android中ScrollView中TextView无法铺满
  6. "equals"和"=="的区别
  7. android 复制信息内容到剪切板 (2011-12-
  8. Android存储访问目录
  9. Android 4.2 setContentView 流程研究分
  10. [置顶] android中加载图片