闲来无事用GO语言写了个简易的房间类游戏后台框架,目前实现基本房间功能,并放了贪吃蛇游戏进去,可实现多人在线贪吃蛇。由于没有前端,导致项目难以继续下去。整个项目大概完成75%,基本目标也都实现,看以后是否有前端加入再继续编写。
(一)系统结构
设计的思路就是高可扩展,只要当前负载已达到上限,只需要整体扩容或者部分扩容即可,整个扩容过程用户没有感知。最终目标全自动化,将各个组件放在docker下运行,kubernetes控制游戏的扩容。
1、网关
网关负责接收来自客户端信息,对用户身份鉴权并解析其数据,从服务发现管理中心(ETCD)获取对应服务将其信息转发。其中不符合规则、黑名单等数据将被拦截,保证服务正常运行。对服务进行流量均衡,对客户端进行协议适配,转换为统一格式发送给服务。限流功能防止客户端在同一时间段访问数量多次。同时网关可以使客户端从一个服务器到另一个服务器的平滑过渡。客户端不用感知服务器变化,降低了编写难度。
2、消息队列
消息队列用来转发信息,使服务器之间能相互通信,只需要知道对应服务器编号即可向其发送信息,解耦并降低模块之间的编码难度。
3、大厅服务器
大厅负责处理玩家创建房间、加入房间、在线匹配、公告等功能。
4、游戏服务器
游戏服务器负责玩家的游戏过程。