-
Notifications
You must be signed in to change notification settings - Fork 489
架构原理简介
JiangZhiYong edited this page Nov 23, 2017
·
11 revisions
此架构根据单区的棋牌游戏进行架构,同样也适用于分区分服的MMO类游戏。内部服务器统一使用TCP进行通信,同时每个游戏预留HTTP通信接口,用于管理员或用户进行调用。服务器主要模块分为:
- 注册中心 game-cluster
- 网关服 game-gate
- 大厅服 game-hall
- 日志服 game-log
- 充值服 game-billing
- 后台监控服 game-manage
- 游戏服 game-bydr(示例)
注册中心管理所有运行的游戏服务器,当其他网关服,游戏服等启动时自动连接注册中心,然后定时发送各自服务器的状态信息,用于管理监控各个服务器的状态。由于游戏服务器数量有限和注册中心宕机仍然不影响游戏的正常运行,因此注册中心设计为单服务器。主要功能为:
- 管理游戏服务器的配置,如IP、端口,状态维护。
- 实现网关服务器的负载均衡。
- 子游戏从注册中心获取可连接的网关,日志,充值等服务器进行网络连接
- 游戏客户端通过HTTP请求获取可以连接网关服务器
- 后台web监控服务器从此服务器获取所有服务器信息,用于展示及管理(如设置服务器状态为维护,暂停对外提供服务)
网关服封装了TCP、UDP、WebSocket连接通信,游戏前端可以通过任意协议进行连接,一个客户端可同时Tcp和Udp进行连接。添加UDP主要目是在弱网条件下提高通信质量。主要功能为:
- 转发玩家消息到大厅服和游戏服。
- 维护用户连接状态,玩家切换游戏。
大厅服主要完成公用逻辑,如登录,聊天,公会,邮件等。
存储业务日志,单独提出来主要目的是提高游戏服的承载量,和后台日志开发部门所提供的sdk分离。
待完善
监控服务器运行状态和对服务器进行操作,是一个独立的web项目,所有数据通过HTTP向注册中心进行获取,主要功能:
- 图表显示服务器列表,内存等信息
- GM操作,关闭服务器,设置服务器状态,重载脚本,更新配置表等
- 一个封装好的WebSocket+Protobuf+H5网页游戏客户端,用于自行调试消息逻辑是否正确(如捕鱼游戏客户端)
一个独立的捕鱼DEMO游戏,公用数据直接从redis中获取
网站:https://jzyong.github.io/game-server/
QQ交流群:144709243