棋牌游戏服务端架构(总)

 

 

棋牌游戏服务端架构(总)_第1张图片

棋牌游戏服务端架构(总)_第2张图片

H5Gateway

接入H5客户端

Gateway
服务器仅暴露 Gateway 监听端口,Client 与 Server 之间通讯均通过 Gateway 转发
Client 与 Gateway 仅建立一条连接,Gateway 可与多种 Server(Login、Center)建立连接,初步设想同一时间仅保留一条连接,内网连接的切换代价不高,当然同时保留多条连接也行
Gateway 应具备以下功能:加密与解密、压缩与解压,我个人认为没有太大必要让除 Gateway 之外的 Server 具备压缩与解压,逻辑简单就好
Center
所有的 Gateway、Server、DBProxy 均来这里注册注销用于 Client、Gateway、Server 发现可用的 Gateway、Server、DBProxy,来注册的服务,应即时报告当前处理数量,实现负载均衡;应具有状态(开放、关闭),实现伪热切换
提供管理接口:开关指定服务,消息广播(系统消息,全局消息),查找和通知玩家所在 GameServer 玩家充值事件等等
Login
玩家注册,玩家鉴权登陆,和不需要缓存玩家信息的所有逻辑(玩家在大厅里的操作)
Game
缓存玩家信息实现游戏相关逻辑
DBProxy
数据缓存与持久化,监听并与 Login、Center 进行交互
Message
消息头(长度32bit + 标识8bit + 主命令16bit + 子命令16bit) + 消息体
标识用来按位指定是否加密是否压缩
使用网络字节序即大端字节序
从主命令开始加密压缩
 

注:
1. 所有服务均可多开进而负载均衡
2. 客户端发送心跳包,服务端接收心跳包,实现客户端保活
3. 独立出来日志服务器
4. 客户端获取 Gateway 地址列表,要么自己实现 Http 服务,要么购买相关云服务,相较于 DNS 指向这些地址更加灵活
5. 没有最好的架构,只有最适合的架构

你可能感兴趣的:(棋牌游戏服务端架构(总))