lotou详解一:基本概念
lotou是一个基于golang的支持分布式的轻量级游戏服务器框架,主要提供游戏服务器集群的消息转发代码仓库 Serviceservice指游戏中的一个服务或者是一个模块,lotou消息转发的基本单位为服务,所有消息都是在服务之间进行转发。 Messagelotou中消息的载体最终是一个Message的结构体,Message包含如下几个成员
Node(节点)lotou支持分布式编程,可以将service分布在多台电脑上得多个应用中,这里lotou每一个进程就是lotou中的一个节点。 Master对于一个多节点lotou网络,只能存在一个唯一的master 节点,该节点负责为每一个slave节点分配一个唯一的nodeid,并且对不同的节点的消息进行转发 Slave对于一个多节点lotou网络,有N个slave节点,slave节点启动的时候会先向master节点申请nodeid。 serviceIdlotou为系统中每一个service分配一个唯一的serviceid。为了保证serviceid的唯一性,serviceid由两部分组成: agent服务lotou中将tcp服务器中的客户端连接称为agent,每一个tcp连接都对应一个agent,agent服务会把从tcp上接收到的数据发送给其绑定的hostService,同时hostService也可以通过agent向tcp客户端发送数据 client服务lotou中将tcp客户端称为client,client把从tcp上收到的数据发送给其绑定的hostService,同时hostService通过client向tcp服务器发送数据 timerlotou内部实现一个定时器调度逻辑,定时器只针对具有主循环的service,如果一个service没有主循环(即启动的时候没有设置loopDuration),则无法注册timer,timer的最小调度周期即为一个loopDuration,单位为毫秒。 ModuleModule是lotou中service对外的接口,用户通过实现一个Module的接口,然后通过func StartService(name string,m Module) ServiceID 可以启动一个service。 Skeletonskeleton是lotou中对Module的一个默认实现,对lotou的功能进行了一定程度的封装。 总结本章主要讲解了lotou中使用到的基本概念,下一章将会继续对lotou消息分发的讲解。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |