服务管理、就近调度、跨地容灾、不停服更新、自动伸缩,对研发的工作量要求极大,不少大厂已经逐步在完善这些配套工具。对于一些创新工作室,或者创业者,会把更多精力放在打造游戏业务上,做这些工作是一种负担。
2. 运维工作量大
反复去做扩容、缩容、发布版本。如果不反复去做这些事,需要开发一些工具/脚本,是需要较大前期投入的事情。
3. 服务器成本大
一是来自空闲资源的成本,二是按照传统方式就近调度、跨地容灾至少需要增加1倍服务器成本。
三、GameServerEngine解决方案
腾讯游戏服务器引擎(Game Server Engine,缩写GSE)提供专用游戏的服务器托管服务,支持有状态的游戏服务部署和扩缩容,实现服务发现、高效灵活的服务器伸缩和就近调度的能力,帮助开发者快速构建稳定、低延时的多人游戏的部署环境,并节约大量的运维成本。
支持Unity引擎、Unreal引擎和自定义游戏框架的部署和运行,应用于 FPS、MOBA、回合制、MMORPG、棋牌游戏中战斗服、消息 PUSH 等需要保持状态的场景。
1. 弹性伸缩
游戏每天会有高峰、波谷,每年也会有节假日,周末等不同的玩家曲线动态变化,对服务器的伸缩调度能力有着很高的要求,而GSE最核心的能力就是弹性伸缩和资源调度能力。
游戏日每日波动曲线
游戏每年波动曲线
(1)GSE能将服务器实时伸缩
GSE 可设置服务器实例类型和伸缩范围,实例将在这个范围内进行伸缩。游戏的访问每天都有高峰和低谷,通常在中午和晚上时,服务器实例的数量将有一个高峰,在午夜后,服务器实例的数量会降到最低。GSE 将根据每天每个时刻服务器的访问量进行自动伸缩。
(2)GSE能实现有状态的缩容
GSE 不会缩减有进程运行的实例,低负载触发缩容时通知游戏进程正在缩容该台服务器,并屏蔽新的游戏服务器会话分配到该台服务器上,但不强制缩减实例导致游戏无法进行,等待游戏进程上没有玩家在对局时,发起结束指令后,才真正触发停止进程和服务器的回收。
弹性伸缩的好处是:
a. 提高灵活性
就近调度,需要时去拿服务器,不需要时退回服务器。
容灾也是一样,需要时去拿服务器,不需要时退回服务器。
b. 节省成本
减少每天、每周、每年空闲资源成本,经计算可节省20%-30%的成本
减少就近调度的成本
减少容灾的成本
2. 就近调度
弹性伸缩是一个基本前提,强大的调度资源能力在此基础上延伸,可以随时调度腾讯云各个区域的资源,从而不需要在各个区域提前预留服务器资源,这让就近调度变得简单。
GSE提供客户端到服务端的测速,获得客户端到所有服务部署区域的延时,GSE通过这个延时情况进行就近调度。
如下图所示,可以看到一组匹配好的玩家,会被分配到最近的服务器进行对战。北京、上海、广州、成都刚开始都可以部署1台服务器,和配置好伸缩策略,这样在需要时就能自动伸缩。
3. 多地部署,跨区域容灾
弹性伸缩是一个基本前提,GSE可以随时调度腾讯云任何区域、任何机型的资源,从而轻松做到容灾。
游戏服务器队列下面包含了各个区域的游戏服务器舰队(一组服务器),业务只需要请求游戏服务器队列,游戏服务器队列会根据每组游戏服务器舰队的健康状态和客户端到服务器的网络延时情况,会自动剔除到有问题的区域,选择正常的服务器来提供服务,正常区域如果需求旺盛,则会自动扩容。不需要提前在多个区域部署相同数量的服务器,从而达到0成本容灾的效果。
4. GSE和普通弹性伸缩的区别
GSE专注于有状态扩缩容场景。
游戏中通常会有两个特殊需求:断线重连、游戏中不能退出。而一般游戏服务器都是有状态的,那么该如何进行缩容呢?
GSE的设计对游戏服务器有三种保护策略:
(1) 全保护 :如果有进程在运行的话,则不会缩容。
(2)不保护:需要缩容时,立即缩容。
(3)时限保护:保护一定期限,比如1个小时。
5. GSE不停服更新设计
GSE拥有极致的资源调度能力,能够轻松做到更新不停服。