游戏服务器引擎弹性伸缩技术详解

  • 1
    关注“腾讯产业互联网学堂”公众号加群互动有好礼相送
  • 2
    向学习君回复口令 “小游戏”
  • 3
    获得课程福利包
腾讯产业互联网学堂微信公众号
“腾讯产业互联网学堂”微信公众号

讲师简介

张小华

腾讯云高级研发工程师 / 高级产品经理

现负责游戏服务器引擎GSE、小游戏联机对战引擎MGOBE的产品策划、设计工作。曾从事资源管理、负载均衡、织云流程系统、质量监控系统的研发工作。曾负责游戏语音Gvoice、GME、游戏数据库Tcaplus、游戏更新Dolphin、游戏测试WeTest的产品运营和推广工作。

简介

本课程带你深入了解游戏服务器引擎GSE的功能特性: 弹性伸缩和就近调度、容灾、不停服更新能力。并快速带你快速体验游戏服务器引擎的完整流程。游戏服务器引擎 GSE 提供专用游戏服务器托管服务,支持有状态的游戏服务部署和扩缩容,实现服务发现、以天为周期的高效灵活的服务器伸缩,以及就近调度的能力,帮助开发者快速构建多人游戏的部署环境,并节约大量的运维成本,应用于FPS、MOBA、回合制、MMORPG、棋牌游戏中战斗服、登录服等需要保持状态的场景。

讲义

一、GSE背景知识介绍

首先就是游戏行业的部署特征,它有一个非常细的特征,它是波谷和高峰很明显,中午和晚上是一天的高峰期,然后从一个星期来看,那么周末的时候会是一个高峰期,从一年来看的话,暑假是一个高峰期。其实我们在购买服务器的时候,可能是按月或者按半年或者按年这样来进行购买,我们有没有可能说实时的进行做出这种在周末和晚上的时候会使用到200台服务器,那我有200台,然后在凌晨不需要使用服务器的时候就没有服务器或者只有很少量的服务器,这样部署产品可不可以做到,当前的话一些弹性伸缩的产品是可以这样做的,但是对于游戏这种有状态的这种支持,比如不太顺畅要重连或者指定服务器连接,这种可能当前还没有,就是在国内还没有一个很好的产品能解决这个问题。

第二部分就是指玩家的体验。对游戏行业来说,服务器有波动对玩家的游戏体验影响非常大,可能只有一点点波动,但是在游戏玩家就会感觉到卡顿,这是其他互联网行业可能不存在的这样一个问题。

第三部分就是其实我们游戏服务端经常要停服,要维护。

第四个部分是整个游戏模块其实很难去做容灾,因为容灾的成本非常大,比如说你要三次容灾那要三份就是相同数量的服务器,这样的成本呢,就会变成原来的三倍,真正的灾难也许就只有一天或者几个小时,这个时候你会觉得付原来三倍的成本容灾其实是是不划算的,那我们有没有那种非常低成本的容灾,因为毕竟你一天不提供服务,那边也是损失的一个真金白银,这是游戏行业现在能够感受到的一些问题。

二、GSE产品介绍和入门指引

那么GSE这个产品会努力解决这些问题。为了我们后面能更理解GSE,我们会讲一下这个游戏他的部属架构的一个演变,就是随着玩家的增多,随着需求的增多,这个游戏架构会发生什么样的变化。当只有少量玩家的时候,它用一台服务器就可以支持。这个S1就是客户端上面的一部分的一个玩家。那么当玩家变多的时候,我们就会增加一台服务器来进行连接,可是当服务器增加的越来越多的时候我们客户怎么知道去连接年哪个服务端呢?这个时候他这种CLB负载均衡,这种一个中转的服务。挂一个CLB,那么CLB他就会随机的、平衡的去转发到后面的服务器上面去。

那我们假如说C1和C2要进行一个消息通讯,那会是一个什么样的过程呢,因为每个客户端它就服务端建立的这个常见的通道它是固定的,那么C1要发消息给C2,知道C2在这个服务器上,那怎么会知道呢,首先是我每个玩家登录在哪台服务器上,我要去注册这个信息注册中心,那我要push的时候push模块不行了,就会去注册东西,而在里他这个时候再把消息发给C2。这种就是最普通的通讯。那对战当中,因为发现其实这个环节挺长的那对战刚刚也说了对网络很敏感。并且这个环节越多,可能出错的可能性越大,所以他对象中呢,通常采用这样一种模式。那我们的服务最大图已经部署好了不说好了,我们把它注册了一个也相当的东西去。我们的掉落方就是我们的客户端,它就会去匹配或者加入房间的时候,比如说有四个人都都匹配在一起了,那么这四个玩家他会给他分配到同一台服务器上去进行一个游戏,就是是C1C2分到同一台服务器上。那这种东西我也是这种是路由模式。都有一套==共同特征就是我先去询问一下服务地址是什么,询问到的这个服务地址,我再去。包括我们的这是这是典型的一个房间服务器的一个架构。对大地图的也是这样子的,比如说我那一个地图很大,但是可能其中的一部分是一台服务器上,另外一部分在另外的一台服务器上,这个时候呢,也是会采用这种模式的我先去询问询问我的地图是在哪台服务器上,或者我把所有的地图的服务地址都发出来,然后去找就根据这些信息去找到他需要保证的那一台。

总结起来整个是随机到一台服务器上,这种房间的是我们给他推荐的一台服务器,这种列表类型的是拉取所有的一个服务地址,然后根据自己的一个规则去路由的。那总结起来就是通用的一个架构,我们可以看到这里,随机的去登录到一台服务器上,那我们的房间服务可以就是通过匹配的时候匹配好了,有四个玩家可以把它一起分配到某一台服务器上。然后也有这种形式的就是我不管访问哪一个服务,我先去问一下地址是什么,然后我再去访问这个服务。这个是游戏里面非常典型的服务寻址一个方式。

讲到这个通用架构就是因为整个GSE游戏服务器引擎是在这个基础上去做的,所以我先前面的先普及一下,可能同学还不是很了解。那些GSE就是我的客户端要去调用服务,基本的功能就是叫做服务部署、服务注册、服务寻址、服务访问,并对这些服务进程进行一个管理。那么它的最终的目标是什么,最终目标就是解决我们刚开始讲的游戏行业一些特征,就是我们怎么去做,第二个是如何低成本的进行跨地域的容灾,第三个是怎么去就近的调度,最后是不停服更新。然后因为这个其实它整体就是一个游戏服务器的托管服务。刚这个服务进程部署的这个服务器上的时候,我们还会提供很多的监控和日志,帮助大家去看这些服务器的状态,包括这些涉及到的一些概念的一个状态。

对他的整个典型使用场景的第一个是对战服务,就在对战的时候像王者荣耀吃鸡这种对战的。,非常适合用模式。第二个是通信的时候。第三个就是大世界。现在我先给大家分享一下整个GSE接入的流程。

这是一个服务器的托管服务,那么开发者进程就是程序是要部署到这个服务器上的,GSE会做调度,那么是需要我们的进程去上报这些状态的,所以客户的程序,我们开发的程序要继承GSE的上报一些状态中心,然后他GSE才能正常的工作,第一个过程就是我们的服务端去集成,然后是成功的发布,发布了之后就会涉及到我先请求我的服务地址,请求了之后再去访问这个服务。不论哪个地址去发这个服务。这个过程其实会涉及到写代码。

三、GSE多场景实战

①弹性扩缩容实战演示(演示已删)

第一个就是弹性扩缩容的。如果是人工来进行扩缩容的话,可能是按照周期的比如说可能是一个月或者半年或者三个月或者一年这样的一个周期,那如果GSE自动扩缩容的话,它就是实时的就是每一天的每一个时刻,只要是按照就是符合规则的,那都会进行快速的一个扩缩容。然后我们用一款真实的游戏进行了分析,就是如果这款游戏是通过高云付费的还是包月付费,还是通过GSE进行扩缩容这种计费模式,我们可以看得到用GSE这种扩缩容的形式可以比包年的29%的成本,然后比包月的话可以节省23%的成本。

②不停服更新实战演示(演示已删)

第二个特性是不停服更新。那怎么去做到不停服更新呢?第一个是这组服务器舰队,就是生成包上传到这种服务器舰队,我们有一个别名。这个别名会一一关联上这个旗舰,那如果版本更新了之后,那就新创建你们服务器舰队。这个别名就指向新的服务器舰队,但是请求还是通过这个别名请求,这个时候就会请求到一个新的服务器上,从而做到不停服更新,并且这个新的服务器舰队他也是去自动扩容,原来的这个服务器舰队它是自动去缩容的,所以他会慢慢的把流量切换到新的舰队为上。

我们来演示一下第二个特征就是不停服更新。不停服更新了就是通过。先创建一个服务器舰队,然后关联上一个别名,然后自己通过别名来访问了就访问到关联的服务器舰队。那如果我有新的版本,我再创建一个新的服务器舰队,这个别名就会去关联一个新的服务器舰队上面去。

③就近调度实战演示(演示已删)

④多地容灾实战演示(演示已删)

第四个就是我们的多地容灾,可能你要做多地容灾对于游戏来说是可能是一件很不划算的事情,可能一天或者几小时在多个地域部署几套,这样的成本是非常大的。

为什么没花两份的钱或者三份的钱来进行容灾呢?因为我们这个是根据实际情况来的,就是服务器舰队都添在里面。但是这个服务器舰队不会说会根据这个最大的配置来进行收费,我们这里有个扩容配置,我们不会根据最大的来收费,只是根据实际的使用量来收费,就是比如说以前配了两个地方,但是你可能一个地方没有使用,那就是没有费用,不进行任何收费的,当一个出现了故障的成全部迁到另外一个地方,那也是按照另外一个地方来收费,那个地方是不收费的,所以这种按量计费模式,这种让你的容灾成本变得非常的低。因为我们腾讯有一个很大的资源池,这个资源池就帮你做到了一个服务器的容灾。

四、GSE技术详解

接下来讲这些基本的一些原理和概念。

第一个是生成包,生成包就是编译后的程序和依赖,你可能会依赖这东西打成一个包,然后把它上传到GSE上面,这个概念叫生成包。他这个生存包是要继承GSE的一个CSDK的。

第二个概念就是服务器舰队,针对这种服务器GSE会对他进行一个检测,可以根据页面配置也可以通过调api,api有很多的策略,基于目标的、基于规则的,因为现在时间有限,没法把规则讲得那么细致,大家听完可以去研究一下。然后会根据开发者指定的规则进行弹性伸缩。这个服务器舰队是可以在各个地区去构建舰队的,比如说我们现在是上海和硅谷,接下来会把全球都覆盖的,这是服务器舰队,是一种服务器。

游戏服务器队列是什么呢?就是多个服务器舰队放在里面形成一组服务器,少因为你这个对你就可以用来就近跳动,可以用来做容灾低成本的,然后再是笔名,这个笔名是关联一个复习件对的长最后有两个逻辑上赶紧应该是有一夫妻花不花。游戏和计划呢,就是上就是部署在这个服务器上的一个键盘。然后玩家达不到这个游戏不计划他是相当于我一定有关加加入一个服务或者加入到一个对局这个对战的对局里面这样子姐好再见工作流,因为刚刚,我们那个也是电脑的时候该有点慢的时候你讲的话,这个及时的主流工作员让他就是在在。在控制台上去注册服务发布代码了,你的后台就会把这个这个代码我手机来的最后呢,这个代码程序就起来了,在页面上就是创建服务器舰队的时候,这我没有眼色,你们会不会有。配置一个启动的脚本起到什么样一个脚本,然后或者好的就急用钱这个净水器用起来了,就可以调一些初始化,直接搞搞我的点开是不是不太好,那行你对他进行健康检查,健康检查,OK就。提供服务了,那我们的调用方。创建酷音就是创建这个游戏服务器会话。也行,就给它分配分配之后分配到这个进程上这个建成说,,我可以接受分配就回一个消息,回个消息之后呢,就把这个ID了霍特给到我们的客户端那客户端通过这个APP破了就去就去访问这个进程,这些进程上的具体的逻辑和代码。房价是我开发的自己写的,我们做的就是这个服务部署或双荣究竟标度。这事情最近成绩年关你监控,然后看他自己健康证。发生的每一个事件,怎么会在页面上去。告知到开发者。对有有可以吧,就过了无法所有也可以呢系统给你测您就是这个工作流程你讲的这个工作流程然后这个是接你的一个架构解析长的工作流程,怎么可以唱。

现在这个服务器建对必须的刚刚吗,颜色很多,但是从来没有创建一点对,然后创建福建对你就可以看到可以。系统地产地址是新城参数可以并发并发多少,你进指数。

这个夫妻上可以逆行多少个进程拿的,然后就可以选择一个不庆后面这个不计会慢慢的增多。

这个时候就几个,这个被大家继续教没有关系。然后,那这个服务器选这个国企。安全网络怎么样的端口,什么样的IP就是他报了一个。是的,IP积累这个这个服务器。如果是配置这个默认的就是所有初始的时候呢就。不是的一台鸡汤。

这台服务器,部署成功了之后他不是因为如果一下子就不说很多有可能是太这样的话旧版本让你不说,估计付费,所以的次次部署一台那整个保策略,现在呢。是商店的完全保护时限保护和不保护完全。意思就是说我再说荣的时候呢。如果你有敬才在另新又活的进行补肾植物保护的。不会给你付多调那个车,一个有众泰服务的一个特征是当前就是说具备的,这样的一个能力然后又回到了这个最后的一个价格,这个就西城可以看得到现在看出来了。晚上不是说如果一开始拿出来这个假划算,大家都不太可能把那现在经济的前面的一些过程等一下是的,你说我朋暴露开发时行好复习件对这个减肥就是一种服务器还比你别别是指像这种服务器

全部评论
讲师/助教

评论

直播日历