棋牌游戏服务器架构: 部署
小刀网络 2023-08-14 08:43:14 0

首先要说明的是, 这个棋牌游戏的服务器架构参考了网狐棋牌的架构。网狐棋牌最使人印象深入的是其稳定性和高网络负载。它的一份压力测试报告上指出:一台双核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中更新游戏列表和房间信息发送给客户端。
最后启动这个房间。在配置房间以后,玩家就能够通过客户端或网页进行游戏了。

标签: 服务器数据库
相关信息推荐