游戏服务器架构

游戏服务器

游戏服务器 由于需要和客户端实时双向交互, 需要自己精细管理每一个连接

游戏服逻辑

反向代理

将海量的客户端的连接请求, 分流给后端的多个网关

网关服务器

每台服务器上都有一个网关服务器, 专门用于和客户端保持长连接, 这样部署多台服务器, 就可以分散长连接, 当地址暴露时被攻击时可以通过扩容来抵御

每个发来的消息直接转发给登录服务器

网关管理服务器

每次收到消息时验证合法性

记录每个网关的连接的用户id, 如果没有, 则只能有登录操作, 如果有并且已经登录过, 则可以通知对应网关踢号

登录后将用户基本信息告知客户端, 其他消息转发给 消息队列MQ

消息队列 MQ

消息注册分发中心, 这样一个消息, 可以被多个服务消费

游戏管理服务器

提供除游戏中的其他服务 如永不重复的房间号, 找到用对的游戏服务器进行游戏, 游戏服务器扩容后的匹配分配

如果玩家登录后发现他已在某个游戏中, 则通知对应游戏重连

游戏服务器

提供游戏的服务

reids

针对多个服对相同数据的请求, 做的缓存. 避免同一请求重复请求数据库, 比如登录时会有多个服, 多次请求同样的玩家信息