产品概述

最近更新时间:2020-04-10 20:53:01

游戏服务器引擎(Game Server Engine,缩写 GSE)提供专用游戏的服务器托管服务,支持有状态的游戏服务部署和扩缩容,实现服务发现、高效灵活的服务器伸缩和就近调度的能力,帮助开发者快速构建稳定、低延时的多人游戏的部署环境,并节约大量的运维成本。支持 C# 和 C++ 游戏引擎和自定义框架的部署和运行,应用于 FPS、MOBA、回合制、MMORPG、棋牌游戏中战斗服、消息 PUSH 等需要保持状态的场景。

产品架构

游戏服务器引擎为游戏代码包提供运行环境,该环境可以进行服务发现、扩缩容、多地部署、就近调度,开发者在服务端框架中集成 GSE 的 ServerSDK,客户端通过 API 请求游戏服务器,GSE 返回最恰当的游戏服务器供客户端访问。

整体架构

产品功能

程序部署和更新

程序部署

开发者可以通过 GSE 上传程序代码包和依赖,GSE 将程序部署到服务器舰队(fleet),并根据配置启动。

不停服更新

游戏场景一般会停服更新,但 GSE 提供别名机制,可以实现不停服更新。

A/B Test

可轻松实现 A/B Test,或者结束 A/B Test。

服务器实例管理

弹性伸缩

  • 以一天为周期进行弹性伸缩:GSE 可设置服务器实例类型和伸缩范围,实例将在这个范围内进行伸缩。游戏的访问每天都有高峰和低谷,通常在中午和晚上时,服务器实例的数量将有一个高峰,在午夜后,服务器实例的数量会降到最低。GSE 将根据每天每个时刻服务器的访问量进行自动伸缩。
  • 有状态的缩容:GSE 不会缩减有进程运行的实例,低负载触发缩容时通知游戏进程正在缩容该台服务器,并屏蔽新的游戏服务器会话分配到该台服务器上,但不强制缩减实例致客户端无法连接,等待游戏进程发起结束指令后,才真正触发停止进程和回收服务器。

多地部署

GSE 支持多地部署,在多个地区构建服务器舰队,构建成一个服务器舰队的队列,当请求队列时,系统自动选择运行正常地域的服务器舰队,供游戏客户端访问,开发者也可手动调整舰队优先级。某个地域出现故障后,短时间内切换到其他地域。

全球发布

GSE 在上海、北美等地部署,即将部署在更多区域。

进程管理

进程启动

GSE 按照页面配置的进程启动路径、启动参数、允许并发进程数,将进程启动起来。

进程准备就绪

进程启动后,调用 API 告知 GSE,进程准备就绪,可以接受访问。

进程健康检查

GSE 会定时将进程进行健康检查,如果进程不健康,会屏蔽进程,将不会再被分配给调用方。

进程结束

  • 当 GSE 需要缩容,或者健康检查失败时,会通知进程结束。进程可以选择是否结束,如果进程没有当即结束,GSE 根据页面配置的保护策略来处理进程。
  • 进程也可以主动调用 API 告知 GSE 结束。

游戏服务器会话管理

GSE 对游戏服务器会话进行管理和分配。从业务上看,一个游戏服务器会话代表游戏的一个对局,更广泛代表一个服务;从后台程序上看,游戏服务器会话对应一个进程,GSE 会根据配置预先启动进程,通常一个进程对应一个游戏服务器会话。客户端通过云 API 请求为客户端分配一个游戏服务器会话,GSE 会将游戏服务器会话分配在一个空闲的进程上。

游戏服务器会话开始

当调用方请求游戏服务器会话时,GSE 会分配一个空闲、健康的进程来开始游戏服务器会话。

游戏服务器会话结束

当游戏服务器会话上没有玩家,或者游戏服务器会话不健康时,游戏服务器会话会主动或者被动地结束,在结束前会保存日志,方便开发者查找问题。

游戏服务器会话的就近分配

GSE 可以根据网络延时选择离玩家最近的地域分配给玩家。

服务器根据可用的游戏服务器会话比例进行伸缩

游戏服务器舰队上可以配置游戏服务器会话缓冲作为弹性扩缩容条件,游戏服务器会话缓冲即游戏服务器会话可用比例。

监控和日志

系统提供服务器实例(CVM)监控、游戏服务器会话监控和操作日志。

目录