游戏服务器中的分布式
游戏服务器中的分布式
之前有了解一些服务器架构发展
现在大多游戏的服务端都是分布式架构,这个篇文章稍微学习以下分布式架构在游戏中使用吧。
分布式系统
在《分布式系统原理与范型》一书中定义:分布式系统是若干独立计算机的集合, 这些计算机对于用户来说就像单个相关系统
进程通信
多个组件通过网路配合协作
socket
网络编程,写服务器客户端连接,服务端与服务端连接,第三方服务连接等。
一些中间件,消息队列,MQ,tbus(腾讯的)等
tbus
Tbus基于共享内存构建无锁双通循环消息队列,发送的双方通过专用的读写队列完成数据收发,实现本地进程通信或者远程进程间通信。通信双方使用的两个队列称之为tbus通道(channel),每一组通讯的双方就需要有一个tbus通道。进程A或B启动后,通过tbus API绑定到对应的通道,使用通道的两个消息队列进行收发数据,而不用关注对方的部署位置。
如果A和B进程不在同一台物理设备上
- 标记找到进程A和B的地址(World.Zone.Func.Instance)4位十进制的地址
- 通过Tbusd将两台机器建立联系,互相发送消息
- Tbusd如何获得进程地址,以及相互建立联系呢?这时候就有了GCIM(本机)和GRM
GCIM GRM
- 一台服务器可以有诸多的通信关系,每一条tbus通道就是最小的通信单元,每条通道都有自己的配置区域,保存着通道大小,通道地址以及读写指针等,一台服务器上所有配置信息汇聚起来就是全局通道信息表(globalchannel information map, GCIM),一台服务器仅需要一份。管理GCIM的工具是tbusmgr。管理关系如下:
- 如果一台服务器不需要和其他远程服务器通信,则使用GCIM就能完成所有工作。当两台服务器需要使用tbus进行通信时,为了完成通信,除了启动tbusd服务进程之外,还需要建立一份通信配置,称之为全局路由表(globalroute map,GRM),用于说明哪些通道的消息需要中转。GRM也是保存在共享内存中,每一台机器只需要一份,管理GRM的工具为trelaymgr。
通信
通信格式,发送者和接受者统一,并且高效。
- 序列化、反序列化(高性能)
- 版本兼容
例如: protocol buffers:
定时器 - 超时处理
没什么理解(未来在做吧)
时间轮
游戏中经典的三层架构
接入层-》逻辑层-》数据层
分区分服务的实现
其他技术
异步处理框架:
- 网络处理,多路复用:
- 状态机框架
- 协程处理
eos
文章
todo: 比较杂,什么时候全面了在补全
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 大橘のBlog!
评论