了解学习服务器架构

1. 架构介绍

游戏具有强交互性、高实时性,所以要求延时在200ms以内;且用户众多,需要服务器具有高负载量。解决负载问题,其中一个解决方案可以是将游戏大区分区,把用户分到各个区中,每个区采用分布式服务器群组,再将用户分配到各个服务器中。

从宏观看,游戏大区的分区可以是:

从微观上,每个大区内部架构:

1. 超级管理服务器 SuperServer

所有服务器的管理者,所有服务器都与之连接,管理、监控各个服务器运行状况。

2. 网关服务器 GatewayServer

与客户端直接连接,将客户端发送的消息转发给各个服务器,游戏逻辑不参与处理,只处理一部分九屏逻辑(会有一篇专门学习)。支持多台服务器,游戏进程是多线程处理。

3. 功能服务器 FunctionServer

单点服务器,进程主逻辑是单线程的,会处理单区全局类数据。比如家族、帮会、国家、排行榜、战争等数据。

4. 场景服务器 ScenesServer

支持多台服务器,进程主逻辑是单线程的,处理玩家个人数据,以及地图上显示数据(九屏数据、玩家移动、玩家PK、玩家包裹、道具、NPC显示、任务系统等)。

5. 档案服务器 RecordServer

单点服务器,进程主逻辑是单线程的,将游戏数据写入DB库,处理游戏数据加载和存储,读写数据库。

6. 区公共服务器

  • infoServer(信息收集服务器):采集各个游戏区游戏数据
  • RoleChangeServer(角色跨区处理服务器):处理角色跨区相关功能
  • NameServer(角色名管理服务器):处理角色名唯一。
  • MonitorServer(监控服务器):监控各个游戏区运行状况。
  • PlatformServer(平台服务器):登陆相关,验证客户端账号密码。

2. 服务器启动流程

①启动SuperServer,等待其他服务器与之连接

②启动RecordServer,预加载一些数据库数据,启动完毕后与SuperServer建立连接

③启动SessionServer,启动完毕后与SuperServer、RecordServer建立连接

④启动ScenesServer,启动完毕后与SuperServer、RecordServer、SessionServer建立连接

⑤启动GatewayServer,启动完毕后与SuperServer、RecordServer、SessionServer、ScenesServer建立连接

3. 客户端登录流程

  • 客户端首先会向服务器区列表发送http请求,获取最近的服务器列表信息
  • 列表信息包含:区名、区id、新区标示、平台登陆地址等等

  • 每个区的SuperServer实时向平台验证服务器推送该区每个网关在线人数,以便平台中心给客户端分配最优的登陆网关
  • 客户端发送账号密码以及要登陆的区ID去平台验证,验证通过则获得平台返回的登录token,以及登陆区的网关地址
  • 同时平台通知对应游戏区,该玩家将在这台网关服务器登陆,也给该网关同步发送验证token

  • 客户端收到平台服返回的网关地址,然后去连接网关服务器,并发送token
  • 此时网关也收到了平台发来的token信息,和客户端发来的token一起比对,验证通过则允许客户端继续连接,同时也向档案服务器发送消息查询该玩家是否有角色信息,如果有则发送角色基本数据给客户端,如果没有则告诉客户端新建角色
  • 当客户端选择一个角色进行登录的时候,则网关发消息到会话服务器创建SessionUser,创建成功则会话发送消息到场景服务器创建ScenesUser,场景则会向档案服务器获取玩家详细数据,创建成功后返回给网关玩家详细数据,再推送给客户端显示出来,此时登录流程结束。
  • 18
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值