棋牌游戏服务器架构: 部署

      先看一下,下面这张可能的部署图吧。

图1  系统布署图

      在这个图中,可以看到,客户端的形式多种多样,可能是pc上的一个可执行文件,也可能是通过浏览器打开的一个网页,甚至于手机客户端。它们都通过internet连接到游戏服务器。

      在这个部署中有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中更新游戏列表和房间信息发送给客户端。

     最后启动这个房间。在配置房间以后,玩家就可以通过客户端或者网页进行游戏了。

  • 4
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C++棋牌游戏服务器架构通常包括以下几个主要组件: 1. 游戏逻辑层:负责处理游戏规则、游戏状态的更新和管理,以及处理玩家的操作请求。这一层通常由C++编写,包括游戏逻辑的实现和相关算法。 2. 网络通信层:负责处理客户端和服务器之间的网络通信。这一层通常使用TCP或UDP协议进行数据传输,并提供网络连接的建立、断开、数据收发等功能。常用的C++网络库有Boost.Asio、libevent等。 3. 数据库层:负责存储和管理游戏数据,如玩家信息、游戏记录等。这一层通常使用关系型数据库(如MySQL)或NoSQL数据库(如Redis)来存储数据,并提供相应的读写接口。 4. 多线程/多进程管理:为了提高服务器的并发处理能力,可以采用多线程或多进程的方式来处理客户端请求。多线程可以使用C++标准库中的std::thread或第三方库如pthread来实现,多进程可以使用fork或者第三方库如boost.process来实现。 5. 负载均衡与高可用性:为了提高服务器的性能和可用性,可以采用负载均衡技术将客户端请求分发到多台服务器上进行处理,同时可以使用集群和备份机制来实现高可用性。常用的负载均衡软件有Nginx、HAProxy等。 6. 安全认证与防作弊:为了保证游戏的公平性和安全性,可以在服务器端进行安全认证和防作弊处理。常见的技术包括数据加密、防止外挂和作弊程序的检测与防御等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值