Lotou是用于在Golang实施的游戏服务器的轻量级框架。它通过抽象消息的交换来利用节点之间的通信,从而可以轻松实现多节点和多服务。
Lotou的灵感来自Cloudwu撰写的框架天网。在此框架内,所有服务通过消息互相交流。服务提供的功能不会通过API调用来公开。在当前版本中,Module Core负责路由消息,每个服务都有自己的消息Chan用于接收和发送。
核心提供服务之间的通信。所有服务都注册到core ,并通过core.send将消息发送给他人。
binary将数据编码到二进制流中,以进行服务器与客户端之间的通信。使用这种编码惯例有点像JSON编组的使用。
GOB(GOB(不在Golang自己的Lib中)GOB编码旨在维持节点的交流。服务的通信可以是跨节点,因此必须将编码消息到二进制流中。节点内的消息切换不需要编码以提高性能。
Golang中的所有原始类型都可以编码。只要发件人和接收器符合相同的签名,任何参数的组合就很容易支持
也可以支持自定义的结构,但是结构必须在高级中注册。如果不同的节点需要使用相同的结构,则这些结构的注册必须以固定和唯一的顺序注册。
目前,切片和地图的编码性能不是很好。为了编码[]interface{} ,其每个元素均分别编码。更具体地说,每个元素的输入信息都已编辑。因此,如果有一种类型的元素,则类型的信息会冗余地编组。
GOB(Lotou)的编组是通过反思来实现的。
日志模块用于打印调试和错误信息。当前,日志是同步模式,如果我们有太多的日志需要进行Wirte提交,则可能会阻止主逻辑。 (有一天可以更改为异步模式)
网络实现了TCP中节点之间的路线。 server和client的角色正常工作。心跳尚未实施。 client在第一次发送消息时建立与其server的连接。
多节点服务器基于Topoloy。 LOTOU中有两种类型的节点,不同类型的节点被粘贴到同一网络中。在某个网络中,只有一个主节点和服务器从属节点。服务可以以任何类型的节点运行,并且有两种类型的服务:本地服务和全球服务。本地服务是通过名称相互已知的同一节点中的服务。全球服务是由不同的节点运行的,它们通过注册给主节点来暴露于所有节点的所有服务。
如果您有兴趣开发Lotou,请随时通过
QQ 157621271
微信ID daijun_1234。
QQ组也可用362112175。(用Lotou填写验证消息)
Twitter @sydnash1
建议和极客总是受到欢迎。
使用etcd作为服务发现。
使用nats作为节点消息散发器。