专栏名称: 高效运维
高效运维公众号由萧田国及朋友们维护,经常发布各种广为传播的优秀原创技术文章,关注运维转型,陪伴您的运维职业生涯,一起愉快滴发展。
目录
相关文章推荐
InfoQ架构头条  ·  Cloudflare在11月发生重大故障,导 ... ·  5 天前  
51好读  ›  专栏  ›  高效运维

腾讯:大型实时对战手游的毫秒级网络优化

高效运维  · 公众号  · 运维  · 2017-04-18 10:32

正文


作者简介

张丹

腾讯游戏 新终端运营中心总监

手游技术专家,华为腾讯 NFV 产业联合创新实验室发起人,拥有12年无线互联网和游戏运营经验,腾讯移动游戏技术平台以及腾讯手游 SDK 的创始人,并全面负责腾讯移动游戏的技术评估、优化、接入和运维工作。

前言

本文主要是针对手机游戏进行一些整体解决方案的分享,手机游戏这个业务的特点就是数据的包的大小比较小,但是频率非常高,可能一秒钟会有几十甚至上百个包的发送,对网络延时要求会更高,对于实时对战手机游戏来说体验好就是一百毫秒内, 如果延迟超过两百毫秒对于游戏体验伤害非常大。

本文分为五个部分:

  1. 运维的价值;

  2. 阐述一下手游这个业务当中用户体验如何来衡量;

  3. 下载服务优化;

  4. 实时对战网络手游优化;

  5. 我对新时代运维的理念;

1、运维的价值

在传统运维时代,运维的工作主要是安装服务器,发布、变更、监控,故障处理等等这些工作,但是随着越来越多的云的厂商,亚马逊、腾讯云、阿里云、以及其他平台的崛起,越来越多的传统运维工作已经被替代,新时代的运维何去何从?

我们觉得新时代的运维应该做到除了业务逻辑请把一切都交给我们。也就是说,让开发和项目组集中精力去进行业务逻辑开发,而周边环境,公共平台,公共技术等,都由运维来提供统一化的高质量服务。

2、手游用户体验

这个是我们对于手游各个环节的用户体验的整体解决方案,我们将手游的用户体验主要分为五个大的环节,包括下载、登录、游戏体验、支付、游戏外的舆情。


  • 首先是下载,下载包括应用市场的下载也包括游戏内的自更新,从我们的下载的详情页的点击到下载完成到安装完成到新用户启动到用户注册,这才是下载获得用户。

  • 登录
    第二个是登录,从游戏启动到游戏检查版本更新,再到登录SDK最后到选择大区服务列表,最后到进入游戏大厅,每个环节的失败率是多少,流失率是多少,这都是我们关注的重点指标。

  • 游戏体验
    首先是进入游戏大厅,在游戏大厅我们会监控大厅各个模块是否能正常展示,公告是否能正常弹出,背包商城道具工会等模块点击后是否正常加载。

     大厅的各环节检查完之后接着就是进入玩家对战的匹配环节,这个时候我们会关注,玩家匹配以及地图加载的时长,耗时过长或匹配失败都容易引起玩家流失。

     匹配成功之后就是最重要的玩家对局环节,对局中我们主要关注游戏的延时,fps 帧率,耗电量,耗流量,断线率,重连率等。

     对战结束后就是结算环节,这个环节时间虽然不长,但是却是玩家这局对战成果的展示和对战奖励的获得,我们会关注结算页面是否正常,对战奖励是否正常到账。

  • 支付
    除了游戏的可玩性之外,我们也要重点关注游戏的支付环节,包括从支付最开始的验证用户登录态,到拉取货物列表,再到下单,付款,以及最后的发货,每个环节的成功率和流失率都会进行一个分析。

  • 舆情
    在游戏外,我们主要关注游戏舆情的情况,包括官网论坛、百度贴吧、应用市场、公众号、qq群的各种渠道的舆情分析,包括我们关注的一些关键字,通过对舆情的一个情感分析,包括正面情绪,负面情绪等,可以知道当前这个游戏出现什么问题,版本质量有没有下降等。

然后所有的这些数据我们会经过数据清洗之后进行一个系统分析以及决策,出现问题的时候,会将解决方案通过游戏内邮件或者消息 push 工具及时知会到用户,如果是游戏故障会通过流程引擎进行自动的故障修复,如果是版本质量问题,会给出分析报告给项目组进行决策。

最后我们会再次采集用户体验数据,看看这次故障以及版本优化的一个效果,达到一个闭环。

在这五大环节里面,其中和用户体验最敏感的就是下载和游戏对局,这也是和移动网络最相关的两个部分,接下来我重点分享下这两块我们的一个解决思路。

我们目前手游用户体验整个体系中上报采用了“灯塔”服务,我们是紧密合作的。

3、下载服务优化

在下载的优化措施方面,下图是我们下载服务的用户流失图,从点击下载到现在成功到安装成功一直到点击启动,然后右边这个图是我们的下载失败的原因分析。

刚才已经讲过了,下载失败最多的其实就是用户主动选择下载,其次就是选文件失败,里面包括空间不足,也可能SD卡上锁或者是SD卡的写入问题,最后还有网络问题,这三块是最大的。

最下面这个图是我们提供的手游下载整体服务,这个服务我们重点关注几个指标,包括我们的下载成功率、转化率还有我们的成本和最优速度的选择。我们主要提供以下几个大的模块。

  • 下载周期管理
    首先是我们提供下载周期的管理,我们在应用市场或者在官网的下载,我们提供了一些游戏的分发打包以及分析工具;游戏内的版本更新提供了版本管理和回流率分析,对于资源包更新我们提供了资源管理以及资源校验纠错等等解决方案。

  • 下载优化
    第二个大块就是我们提供了协议优化模块,第一个是防劫持,劫持里面有两块,一块是域名劫持,一块是资源劫持。这两个劫持的解决方案等一会儿都会详细介绍,另外一个是预下载。

     防劫持主要是解决了上面所对应的网络问题造成的失败率,预下载主要是对上面的用户主动取消下载造成的失败率,预下载这部分我们主要是提供增量下载,还有就是 P2P 下载,以及游戏中的边玩边下,来减少下载时长,降低用户主动取消率。

     协议方面也做了优化,包括对终端硬件进行判断,还有一些跨网调度,分片下载,多线程下载技术。

  • 其他增值服务
    同时我们还做了增值服务,我们对异常用户的跟踪,包括我们对实时数据的分析,这个分析我们可以达到秒级,另外和运营商合作,针对腾讯游戏一些 VIP 用户和指定用户,进行下载提速。

     另外我们提供智能限速的服务,因为我们的成本是按照峰值来计算的,我们会对峰值的时候对于部分用户启动智能限速以降低我们的带宽成本。

图中蓝色方框标注的这三个是在这些下载优化这块收益最大的三个解决方案,包括资源防劫持和域名防劫持。

3.1 域名防劫持优化方案-智营解析服务

针对我们域名劫持的情况,我们提供智营解析服务:
我们主要是通过自建一个 HttpDns 后台,给业务提供正确的ip解析服务。

HttpDns 是使用 HTTP 协议代替传统解析域名。使用 HTTP 协议向 HttpDns 服务器的80端口进行请求,代替传统的 DNS 协议向 DNS 服务器的53端口,绕开了 Local Dns,从而避免了使用 Local Dns 造成的劫持和跨网。

我们 HttpDns 后台服务使用的是 BGP IP,经过验证,BGP 有5%左右的访问失败率,所以我们多线路智能选路方案将劫持率(包括失败率)降低到0.01%。

目前,我们智营解析服务,已经为每天数千万用户提供每天近十亿的解析服务,劫持率有高峰期的1.5%下降到万分之一,解析耗时整体下降了50%,投诉大幅下降95%以上。

这页是我们智营解析和外面的一些域名解析方案的一个优势吧,第一个就是我们精准可靠,我们提供的后台目前覆盖了 TOP17 的运营商,覆盖了95%的用户。

另外我们做了IP三地容灾,实现智能缓存,这样降低了更多的网络开销,同时使用多路解析,从中选择最正确的IP给客户端,另外我们会精确识别IP,对IP进行一系列的测速进行纠正,将速度最好的IP返回给客户端。另外我们提供非常多的接口,我们也支持多线程调用,提供同步和异步接口。

我们的智能解析服务适用也非常广泛,包括纯 IPV6 网络和 IPV4 网络,也支持 H5,也支持 HTTPS 协议。

目前我们的数据提供20多个关键指标,包括解析量/劫持量/解决量/域名量/解析IP量/运营商统计/云服务商统计/解析耗时/缓存率等。我们还通过大数据计算对劫持的趋势进行预测。

其次我们提供一个整体的劫持趋势的一个分析,以及通过大数据进行劫持故障的发生概率预测。

最后我们还提供一个劫持原因分析,这些劫持原因主要包括解析为空/解析网关地址/解析到同网段地址(包括内网)/解析到错误地址/解析到旧地址/解析出非ip等。

以上是我们智营解析服务的优势,目前智营解析服务已经为所有的腾讯手游,以及部分腾讯云移动app合作伙伴提供服务,如有需要,可与腾讯云进行沟通使用这项服务。

3.2 资源防劫持优化方案-智营回源代理服务

接下来是我们资源防劫持的优化方案,资源劫持主要包括3种劫持:

  1. 文件劫持,也就是文件不能下载。

  2. 302劫持,某些运营商会对302跳转请求进行。

  3. 内容劫持,某些运营商会解析 HTTP 的内容,在其中加入广告。

针对资源劫持我们主要是提供一个回源代理的解决方案,当我们判断资源或者页面无法正确下载之后,有可能这个资源被运营商劫持了,我们会这个请求转到我们的IP回源代理服务器,我们代理服务器再去cdn节点进行资源的一个拉取。

如果其中发生了302跳转到另外的下载页面,我们的代理服务器直接进行302跳转,不把这个跳转请求发给客户端,避免运营商对302跳转的一个屏蔽。

另外,由于种种原因,可能业务无法使用 HTTPS 协议,那么我们的 sdk 和回源代理之间可以通过 HTTPS 协议加密交互,防止运营商在 HTTP 协议加入广告内容,业务的客户端和后台还是使用 HTTP 协议。

经过这一系列资源防劫持的优化,我们的下载成功率提高了20%以上,其中资源劫持严重的业务下载成功率从之前的70%提高到97%。

以上智营解析和智营回源代理服务,解决了运营商劫持问题,也就是之前原因分析中的 HTTP 错误等原因。

3.3 用户主动取消下载优化方案-增量下载

接下来我一下针对用户主动取消下载的一个优化方案。用户主动取消下载,最大的一个原因就是下载包太大,流量消耗太高,我们主要是提供一个增量更新的服务。

增量更新服务,主要是在服务端将新版本与每个旧版本之间的二进制差异进行一个打包,客户端只用下载更新包,然后在客户端sdk将更新包和旧版本合成的新版本游戏包,这样下载的数据包大小比新版本大幅降低达到50%以上,下载时长缩短45%,用户主动取消的比例大大降低,成功率提升10%以上。

P2P下载是用户之间端到端的一个下载,可以节省cdn带宽,边玩边下就是在游戏打开闲时进行下载。将增量更新和P2P下载和边玩边下进行比较,增量更新带来的收益是最大的。

以上就是我们在下载这个服务优化里面我个人觉得收益最大的三个方面。

4、实时对战网络优化

接下来我们实时对战的网络优化。这是我们手游的网络特点,我们手游网络和传统的 PC 网络有些不一样,一个是我们的无线接入网部分,一个骨干网部分,还有内网部分。

在手机游戏这个领域,我们的网络还面临很大的不稳定性,比如网络从4G切换到 Wifi,在4G情况下,突然来了一个电话一个短信,这样导致我们的网络终断,或者信号比较微弱或者无线网络负载过高的情况下导致网络非常不稳定,综上所述,手机的网络特点是和传统的PC游戏对比,具有非常大的复杂性和不稳定性。

4.1 智营网优服务

针对这些原因,我们提供了一个整体解决方案,我们叫智营网优服务,包括两个大功能,一个是网络优化,我们对骨干网的加速,另外对接入网的优化。还有在客户端我们也会进行一些智能优化,包括对路由器的选择或者是对我们本地的一些网卡或者是缓存设置的一些智能优化。

另外一个我们是网络诊断,网络诊断包括实时卡顿的诊断,也包括游戏全局的卡顿分析,我们会告诉用户你在什么时间点,发生了什么卡顿,卡顿的原因是什么解决原因是什么。

我们也提供非常精准的测试服务,我们会在全国所有的省份所有的运营商部署一个测试节点,测试我们的用户到骨干网最边缘节点的速度是多少,也对到路由器网关进行测试,以及到游戏服务器进行测试,得出每段网络的延时分别是多少。

另外我们也提供了信道拥塞分析以及同一 Wifi 下多个终端的干扰分析。我们所有的策略是通过云端控制进行下发,而且我们接入非常简单,只需要游戏是对局之前调用我们进行网络优化,以及游戏结束之后告诉我们这个游戏已经结束,我们将这个优化停掉。

然后我们提供非常多的数据分析,帮助游戏了解它游戏对局中的各种用户体验详细数据。

4.2 网络优化实战-接入优化

首先我们看一下在实时对战的手机游戏,最核心的指标就是网络延时,不知道大家有没有玩过王者荣耀,或类似的Moba游戏,当网络延时超过了两百毫秒基本上就会被人虐的很厉害,如果超过一百五十毫秒一些高玩玩家会感觉放技能别人慢。

我们现在提供网络延时的整体分析,网络延时包括三个部分。

  • 第一个部分是服务器处理延时,当服务器收到一个请求包处理完请求包返还给客户端这段时间是多少。

  • 第二部分可能和手机的硬件比较相关,也就是手机侧延时,我们对手机的 CPU 和内存进行监控,还有网卡的一些错误数和丢包数进行监控,看看这个延时是不是手机的性能或者网卡拥塞造成的。

  • 第三个就是我们的网络分段延时,首先我们测试收集到 Wifi 路由器之间的延时是多少,高负载的路由器情况下,手机到路由器延时就到了上百毫秒,游戏肯定卡。

我们在全国每个省份运营商部署一个边缘节点,测试从手机到边缘节点的速度,同时测试手机到游戏服务器的速度,我们把网络延时这块分成两个部分,一个是接入网的延时一个是骨干网的延时,到边缘几点的延时就是接入网延时,到游戏服务器的延时减去到边缘节点的延时就是骨干网延时。

这页是我们对游戏卡顿数据的分析,我们发现 Wifi 卡顿比4G卡顿更为严重,Wifi 的情况下,用户可以感受到的卡顿情况比例已经接近了20%,五分之一的用户在玩的时候都会感受到卡顿。而4G的情况下,7%的用户会感受到卡顿。

我们来看一下卡顿原因,从我们上面说的网络延时分析来看,造成网络卡顿的原因。

  1. 信号不好,最多的就是信号不好,包括 Wifi 信号小于两格或者 Wifi 信号小于一格;

  2. 路由器负载比较高,第二个可能的原因就是路由器负载比较高,路由器的延时已经超过了五十毫秒;

  3. Wifi 出口拥塞,第三个比较大的原因是出在整体 Wifi 出口,可能你的小区出口比较拥塞,延时比较高,占了20%左右;

这三个原因,在我们这里归结的话都属于一个接入网的原因造成的卡顿大概占85%以上,所以玩家投诉的时候请大家不要责怪我们的后台,责怪开发,为什么用户这么卡,其实卡的原因是由于用户的接入网络造成的,不是由于服务器造成的。

4.2.1 破解信号不好问题

4G情况下最大的原因也是由于信号不好,信号小于两格一格的情况下,占比超过的30%,另外基站负债高占比30%左右,我们和运营商进行了多次沟通,部分运营商表示高峰期的时候有18%的基站处于高负荷的状态。

刚才说到了为什么信号弱的时候会造成卡顿,信号弱会对卡顿和延时有什么影响,这是我们对空口丢包的分析,4G情况下,延时高主要的原因是因为误码重传导致的,当基站收到手机发过来的数据包,如果误码率较高,会要求手机重新发送一份。

在手机信号正常的情况下,有10%的概率会误码重传,在信号比较弱的情况下,基本上100%会造成误码重传。重传超过一定的阈值以后,基站就会将这个包丢弃,这也就是为什么信号弱的情况下,我们会产生更多的丢包或者是延时比较高的问题。

在 Wifi 情况下,主要有以下两个协议造成我们的丢包原因,其中一个是在 RTS 和 CTS 协议,主要是为了解决 Wif i隐藏终端的问题。第二个就是信道被占或者冲突,Wifi 在 2.4G 的频段,Wifi 有很多信道有相互干扰的情况。

如果是当两个手机同时进行数据传输的情况下,或者周围有微波炉,蓝牙等设备,就会造成信道的数据误码率比较高。还有误码降速,信号不稳定比信号差更容易造成丢包,信号在一格两格之间来回跳,为什么这样更差?

因为在 Wifi 协议里面,当你的误码率到了一个比较高的程度的时候,Wifi 会和手机终端协商,我们要降低速率保证提高成功率,当你的信号不断的跳动,他们不断协商这个过程,每次协商就会把之前数据传输的数据丢掉,新的数据传播传一份,再加上 RTS/CTS 等待和信道干扰,在路由器严重超负荷的情况下,有70%的概率会造成丢包。

4.2.2 破解路由器严重超负荷问题

路由器严重超负荷是指很多人在这个 Wifi 下看视频或者说下载,70%会发生丢包。信号不好的情况下,有50%的概率丢包。针对丢包这么多原因,我们有什么解决方案?

对于移动接入网的优化,我们主要是和运营商合作,启动了一个 QoS 技术方案,我们发现其实在空协议里面有一个指标是专门优化包量较小但延时要求很高的场景的,我们经过和中兴华为一起推动这个事情的优化。

目前我们这个解决方案当游戏启动被读的时候调用一个加速 SDK,然后判断这个用户是否具有 QoS 加速的能力和是否需要 QoS 加速,在把这个 QoS 加速请求发给运营商的能力开放平台,运营商将请求发到基站,基站就会和手机之间建立一个 QCI=3 的专用承载,相当于一个贵宾通道,会保证你的连接的带宽以及速率等,保证空口的成功率。

这是某个大型游戏在某省使用了 QoS 的效果,使用了 QoS 之后,延时在五十毫秒以内的用户从12%提升到25%左右,而且我们在一些极度拥塞场景下做了测试,大型的商场或者是地铁站,甚至在演唱会现场,这个时候连朋友圈都发不了的情况下,但是玩我们的游戏非常畅快,在极度拥塞的环境下,延时从260毫秒降低到130毫秒,丢包率从20%直接下降到0.1%。

对于移动接入网我们可以和运营商合作进行网络优化,但是对于 Wifi 来说,Wifi 我们应该怎么优化。对于 Wifi 来说使用组合方案,首先对 Wifi 进行网络分析,看 Wifi 到底是什么卡顿,是连续的卡顿还是随机的卡顿。

4.2.3 破解WIFI出口拥塞问题

通过数据分析有相应的方案,首先对协议进行优化,因为游戏都是一些数据量比较小的包,我们可能对游戏包进行多路双发,把一个数据包在一定的时间内重发一次。在这种情况切下,就算一个包丢掉了,后面还有一个冗余包,这样对游戏的影响非常小,经过我们的测试这种优化可以降低30%80%的丢包率。

第二个就是包冗余,这个数据包带上前一个数据包的内容,即使前面一个数据包丢掉了,这个数据包也会对前面一个数据包进行处理,这样降低丢包率。

信号弱是一个比较大的原因,我们会检测 Wifi 信号,信号弱的时候提醒用户靠近信号源,另外检测一些 Wifi 信道,如果 Wifi 信道比较忙,提醒更换空负载的信道,如果 Wifi 负载比较高,我们会提醒一下对其他终端进行限速,或者重启一下 Wifi。

我们现在也在积极推动 Wifi 厂商开发适合这种延时要求高但包比较小的专用的游戏路由器解决这个丢包的问题,如果这些问题都不能解决,我们可能推荐用户更换网络。

我们收集了周边所有的 Wifi 质量,到底哪个 Wifi 稳定,哪个 Wifi 延时更低,根据你搜索出来的 Wifi 列表或者 GPS 定位,推荐使用周边的高质量Wifi,如果周边没有比较好的 Wifi,提醒用户使用4G来解决问题。

4.3 面对网络延迟优化实战-骨干网优化

接下来是骨干网的解决方案,我们现在在全国布置了很多台服务器,我们会每隔五秒测试每个服务器之间的延时以及每个服务器到我们游戏服务器之间的延时,从而智能选择一条最快的路径给手机进行加速,当我们的骨干网出现了拥塞或者出现故障的情况下,智能选择路由加速效果会非常好。

我们现在骨干网加速的一例大概在12%左右,这个比例不大,因为现在确实运营商对于骨干网的优化做的很不错,骨干网加速之后,体验好的用户大概提升了8%左右。

体验好是我们用户到游戏之间的延时控制在一百毫秒以内,从这个数值来看,好像整体的比例不是很明显,但是对于个别用户来说,特别是对于那些延时大于两百毫秒以上的用户,如果这部分可以加速到一百毫秒以上,对于这些用户太说他们的体验感受非常明显。

5、新时代运维的理念

目前我们为腾讯几千万的用户提供这样的服务,上文就是我们在手游网络优化这一块做的一些解决方案。最后简单阐述一下关于新时代运维的理念,就是我们要关注用户的极致体验,打造精品S级服务。

近期好文:

《中国人寿自动化运维自主研发之路》

《一篇文章全面了解监控知识体系》

《京东15万容器:多快好省大规模弹性云集群之道》

《携程:我们是如何利用容器实现快速弹性伸缩的?》

《支付平台架构师谈大规模高并发服务化系统设计经验》

《重塑中小企业运维价值》

GOPS · 深圳站,鹅厂运维技术大揭秘



GOPS2017·深圳站

本届GOPS

揭秘鹅厂运维技术的盛会

  • 会议地点:南山区圣淘沙酒店(翡翠店)

  • 会议时间:2017年4月21日-22日


您可点击“阅读原文”,了解更多GOPS2017·深圳站信息