棋牌游戏服务器架构: 部署 |
首先要说明的是, 这个棋牌游戏的服务器架构参考了网狐棋牌的架构。网狐棋牌最令人印象深刻的是其稳定性和高网络负载。它的一份压力测试报告上指出:一台双核r的INTEL Xeon 2.8CPU加上2G内存和使用共享100M光纤的机子能够支持5000人同时在线游戏。 在研究其服务器框架后发现,它的网络部分确实是比较优化的。它主要采用了Windows提供的IO完成端口来实现其网络组件。本服务器虽然参考了其设计,但是还是有很大的不同,因为这个服务器框架主要是用在linux系统之上,而网狐棋牌是基于Windows平台的,严重依赖于windows sdk。这个架构延续了网狐棋牌在网络组件所作的努力,这个棋牌的服务器也使用异步IO作为网络的工作方式,更为彻底的是其数据库也是采用异步架构。boost::asio提供了一个异步框架,所以它的几个核心组件: TCPServerService, TimerService, DatabaseService, AsyncService中都可以看到boost::asio的影子。 , 图1是总体架构图。从图上我们看到服务器的整体架构分为三层:Libraries, Core和Applications。Core层基于Libraries实现,而Applications使用Core层提供的服务,并且要监听Core层的异步事件(Socket、Database等)。 在这个部署中有1个CenterServer,1个LogServer,3个LogonServer和很多个RoomServer(只显示了德州扑克的两个房间)。这些Server有可能分布在同一台机器上,也可以分布在不同的机器之上。这对扩容来说是极为方便地。在玩家数量增大,系统不足以承载其网络负载时,只需要买更多的机器,架设更多的RoomServer或者LogonServer就行了。 这里再分析一下一个中心服务器最多可支持多少玩家同时在线。假定1台机器最多可以有5000个连接,也就是说我给可买5000个机器作为LogServer + RoomServer, LogServer的数目不会太多,可以忽略,所以最多有RoomServer可以管理最多5000X5000个用户同时在线。 1布署数据库 选定作为数据库服务器的机器以后,要先安装postgresql数据库,然后导入ServerInfoDB(CenterServer使用), UserInfoDB(LogonServer、RoomServer、LogServer使用),UserScoreDB(RoomServer使用),还有有关各个游戏逻辑的数据库,比如TexasPokerDB等等。这些数据库不一定要放在一台机器上,可以布置在不同的机器上,因为本架构是支持分布式数据库的,你只要记住每个数据库所在机器的 2启动服务器 2.1 启动CenterServer 首先要修改中心服务器配置,主要包括两个方面的配置:网络配置和数据库配置。 网络配置包括: 监听端口、最大连接数。这里的最连接数它的是最多支持多少个LogonServer + RoomServer。因为只有这两种Server会连接CenterServer。 数据库配置包括:ServerInfoDB所在机器的IP地址,端口号,连接要用的用户名和密码 配置好以后,就可以直接启动中心服务器了,中心服务器会根据这些配置信息来管理游戏列表,房间列表等信息。 2.2 启动LogonServer 第一步也是配置服务器,主要的配置信息为: 网络配置: 监听端口和最大连接数。 这里的最连接数控制这个LogonServer最多同时支持多少人同时登录。 数据库配置:主要是配置UserInfoDB的地址,端口连接所用的用户名和密码。 CenterServer相关配置: 主要有中心服务器所在IP,端口。需要CenterServer的相关信息是因为LogonServer会定时地从CenterServer中更新游戏列表和房间信息。 配置好以后就可以启动LogonServer了。 2.3 启动LogServer 这个服务器做的工作比较简单,就是处理玩家的查看游戏过程用的。主要有以下配置项: 网络配置: 监听端口和最大连接数。 数据库配置: GameLogDB所在的IP,端口,连接所用的用户名和密码 配置好以后启动即可。 2.4 配置RoomServer 玩家的大部分操作都是由这种服务器来响应,启动一个RoomServer实例相当于开启一个新的房间,所以要扩容,基本上只需要增加机器并开启更多的RoomServer即可,其配置包括: 房间基本信息: 房间类型(vip房间,比赛房间,普通房间等), 桌子数,每个桌子的椅子数等等。 网络配置: 监听端口和最大连接数。这个最大连接数就是本房间最多支持多少玩家同时在线玩游戏。 数据库配置: 包括UserInfoDB,具体游戏的DB(比如TexasPokerDB)的地址,端口,以及用户名和密码。 CenterServer相关配置:这个配置和LogonServer一样,需要这个配置也是因为RoomServer会定时地从 CenterServer中更新游戏列表和房间信息发送给客户端。 最后启动这个房间。在配置房间以后,玩家就可以通过客户端或者网页进行游戏了。 湖南麓驰网络科技有限公司(www.tdaidc.com)创立于2011年,是一家专注高防服务器租用的网络IDC公司。为国内各大网络文化、媒体、网络。公司专注为用户提供低价高性能云计算产品,致力于云计算应用的易用性开发,并引导云计算在国内普及。目前公司研发以及运营云服务基础设施服务平台(IaaS),面向全球客户提供基于云计算的IT解决方案与客户服务,拥有丰富的国内BGP、双线高防、香港等优质的IDC资源。 公司一直秉承"以人为本、客户为尊、永续创新"的价值观,坚持"以微笑收获友善, 以尊重收获理解,以责任收获支持,以谦卑收获成长"的行为观向客户提供全面优质的互联网应用服务。 |