本文主要探讨如何设计一款百万人同时在线的棋牌类网络游戏服务器系统,如果您发现本文的设计上存在漏洞或不对的地方欢迎提出共同探讨。
1.总体架构图
注: CMS(control and manage server) : 控制管理服务器. GateServer : 门服务器
2.相关服务器介绍
注:除CMS外每台服务器都由两个程序实例构成,服务器管理客户端和服务器程序。
2.1 控制管理服务器(CMS)
CMS的作用是管理和配置所有的服务器。主备账号服务器、主备GATE服务器的切换也是由CMS决定的,服务器管理员通过CMS来管理所有的服务器。
2.2 账号服务器
账号服务器的主要用于处理用户注册和登录游戏系统。用户是否重复登录游戏也将在账号服务器上处理。账号服务器由主备构成,任何时候只有主账号服务器负责和客户端及GATE服务器交互;备用账号服务器主要处理CMS发来的控制消息及主账号服务器发来的实时数据备份消息,及其他服务器发来的心跳消息。
2.3 门服务器(GateServer)
门服务器的作用是负责各服务器之间的消息转发,确定用户的资料在哪台数据库服务器上。门服务器也分为主用和备用两台,除CMS外的其他服务器只和主用的门服务器交互。当CMS发现主用门服务器故障时将通知其他服务器进行主备切换。
2.4 大厅服务器
当用户登录成功后将和大厅服务器保持长连接以实时获取游戏系统的信息。
2.5 游戏服务器
当用户在大厅中点击进入某个游戏时,用户将登录相应的游戏服务器进行游戏。
2.6 数据库服务器
数据库服务器主要保存用户的资料和用户的游戏数据。
2.7 消息服务器
主要负责用户聊天消息的处理。
3.流程介绍
3.1 系统启动流程
如图所示,系统最先启动的是CMS,当CMS启动之后将从本地数据库读取相关服务器配置信息,只有本地配置中存在的服务器才可以连接本系统正常工作;这样就可以保证只有合法的服务器才能连接到本系统以防止非法服务器的接入。当门服务器启动并连接CMS后CMS将选择其中一个作为主用门服务器。接下来依次启动的是数据库服务器,大厅服务器,游戏服务器,消息服务器。最后启动的是账号服务器。
3.2 添加一台新服务器流程
3.3 用户登录流程