上个月看了朋友推荐的mudo网络库,下完代码得知是国内同行的开源作品,甚是敬佩。下了mudo使用手册和035版的代码看了下结构,感觉是一个比较成熟而且方便使用的网络库。本人手头也有自己的网络库,虽然不敢说是一个多强大的网络库,但毕竟在外网也稳定运营了几年,多组同时在线也跑过30w左右,单组服务器也能跑上w人。做游戏服务器几年的经验,感觉稳定性才是网游服务器最核心最重要的环节,效率还在其次,这也是目前网游服务器普遍采用分组架构决定的,从运营的角度来看,有时候一组服务器即使上限能跑上w人,但运营会强制把上限定位几k人,这里面跟游戏玩法还有运营的手段有关系,就不细说了!
muduo采用的是基于消息回调机制的reactor模式,这也是目前网络库常用的模式。整个网络库的使用比较方便,只需要关心几个tcp事件:tcp连接,收数据,tcp关闭等,这几个事件分别注册好回调函数就可以简单使用。详细的使用方法看 陈硕的muduo网络库使用手册就可以。
如果要把muduo结合到一般的游戏服务器里面,则最基本的还需要加入组包和打包,如果是对外通讯则还需要加解密模块。参考的方法如下:
第一步,需要定义一个 gameserver这样的基类,该类负责做为游戏tcp服务端(不管是网关服务器或者逻辑服务器都等都可能需要使用tcp服务端),所以必须包含tcpserver,并把tcp的接受连接和收数据,关闭连接等事件注册到tcpserver的回调。
第二步:当tcp连接回调onconnection之后,需要new一个新的logicsession(该logicsession就是负责处理数据组包和加解密,消息队列等的类),可以建立一个tcpconnection指针到logicsession的映射。 当tcp连接回调onmessage之后,根据tcpconnection键值找到logicsession,把数据push到logicsession类
muduo采用的是基于消息回调机制的reactor模式,这也是目前网络库常用的模式。整个网络库的使用比较方便,只需要关心几个tcp事件:tcp连接,收数据,tcp关闭等,这几个事件分别注册好回调函数就可以简单使用。详细的使用方法看 陈硕的muduo网络库使用手册就可以。
如果要把muduo结合到一般的游戏服务器里面,则最基本的还需要加入组包和打包,如果是对外通讯则还需要加解密模块。参考的方法如下:
第一步,需要定义一个 gameserver这样的基类,该类负责做为游戏tcp服务端(不管是网关服务器或者逻辑服务器都等都可能需要使用tcp服务端),所以必须包含tcpserver,并把tcp的接受连接和收数据,关闭连接等事件注册到tcpserver的回调。
第二步:当tcp连接回调onconnection之后,需要new一个新的logicsession(该logicsession就是负责处理数据组包和加解密,消息队列等的类),可以建立一个tcpconnection指针到logicsession的映射。 当tcp连接回调onmessage之后,根据tcpconnection键值找到logicsession,把数据push到logicsession类

本文介绍了作者在使用muduo网络库作为游戏服务器的基础架构时的心得体会。muduo是一个成熟的网络库,采用基于消息回调的reactor模式。文章详细阐述了如何将muduo结合到游戏服务器中,包括设置tcp事件回调、实现组包和打包、加解密模块的集成,以及如何构建消息队列进行数据处理。通过创建gameserver基类和logicsession类,实现了从tcp连接到数据解密组包的流程,为游戏网关和其他逻辑服务器提供了一种实现框架。

569

被折叠的 条评论
为什么被折叠?



