<strong id="m1i4d"></strong>
<em id="m1i4d"><ol id="m1i4d"></ol></em>
        1. 王者荣耀高并发背后的故事

          作者:黎斌

          摘要

          堪称中国最火爆的手机游戏“王者荣耀?#20445;?#25317;有亿级用户体量,千万级日活用户,如何快速、?#32479;?#26412;地保障业务突发?本文从该问题出发,论述了问题对应的解决方案,并?#20113;?#25928;果做出总结。

          背景

          “王者荣耀”是一款国民级手机游戏,用户体量巨大,而且一直保持着较高的更新频率。这种业务场景下,突发也变得非常频?#20445;?#28982;而业务体验是至关重要的,使用CDN必不可少。类似地,经常有带宽突发的场景,比如新闻爆点视频、大型直播活动、热门影视剧上线、热门游戏等应用发布。同?#20445;?#30001;于家庭带宽和移动网络的快速升级,突发带宽量?#23545;?#26469;越大,经常达到Tb级,甚至10Tb 。如何快速、?#32479;?#26412;地保障业务突发,成为CDN的一大挑战。

          2007年,腾讯自建CDN启用,接入了第一个业务腾讯网。到现在CDN带宽量级,从最早的数十Gb,发展到现在的数十Tb;单业务的带宽也越来越大,大部分业务常量带宽在几百Gb,部分突发业务达到了10Tb。网络的快速升级,移动用户爆发式增长,以及视频类业务包括点播和直播的?#20284;穡?#20351;得业务突发越来越频?#20445;?#31361;发带宽越来越高,对CDN的要求也越来越高。

          自建CDN得益于腾讯业务的蓬勃发展,先后支持了游戏下载、流媒体视频加速、春节红包等腾讯内部业务;2014年腾讯将CDN全面能力开?#29275;?#25104;为腾讯云CDN产品,除承载内部业务外,也开始接入第三方?#31361;В?#27604;如快手点播、斗鱼直播等。以上各种业务都有突发场景,也有很强的成本诉求,在如何?#32479;?#26412;地保障业务突发,腾讯CDN积累了丰富的经验。接下来就挑战和问题、解决方案、效果三个方面来解析。

          一、挑战和问题

          下面将从业务特点开始,分析目前存在的挑战和问题。

          1、 业务特点和挑战

          CDN多样化的场景,注定了突发业务充满挑战。突发业务具有体量大、场景多样化、 无规律等特点。

          a) 体量大:突发业务带宽大部分都超过Tb,部分甚至达到了10T ;

          b) 场景多样化:点播中的热剧和新闻爆点;直播中的LOL/KPL/DOTA2等游戏直播,NBA/世界杯等体育直播,演唱会等综艺直播;应用下载中的王者荣耀等游戏下载;静态网页加速中的红包活动、电商促销等;

          c) 无规律:部分突发活动无法预知,活动快要开始或已经开始了才知道,比如新闻爆点。

          体量大,需要准备更多的资源;场景多样化,需要满足不同的资源需求;无规律性则对我们的扩容效率提了很高的要求。

          2、 目前存在的问题

          仅仅为了满足业务突发需求而储备大量的资源,成本太高,会造成资源极大的浪费。所以一般会通过复用资源?#20174;?#23545;业务突发。但是直接复用资源,存在两个问题:

          a) 只能复用部分资源:CDN业务,一般按业务类型来区?#21046;?#21488;和资源使用,主要原因是不同业务类型对资源需求不同,比如点播类需要更多的存储;有较多https请求的静态页面类,则需要更多CPU资源。这种限制使得资源无法充分利用,加大了资源准备的?#35759;取?#27604;如视频突发主要使用视频Buffer,而下载类和网页类Buffer无法直接使用,这限制了Buffer的大小。即使复用同类型资源,因为涉及多个业务资源的协调,准备时间一般会超过两天,无法应对临时突发;

          b) 无法降?#32479;?#26412;:另外针对部分突发业务,比如游戏应用下载,带宽高峰期在上午和中午,如果只使用本平台资源,会导致结算带宽明显上涨,从而增加成本。无法利用同其他业务错峰的特点来降低结算带宽。

          二、解决方案

          腾讯云CDN通过虚拟化复用现有资源,搭建全业务通用的突发池,所有平台共享Buffer。 突发池中的设备为Docker虚拟机,虚拟机有不同的规格,只要业务有需求,都可以按需使用。突发池中的带宽储?#22797;?#21040;了10Tb,基本能满足所有业务突发需求 。任何业务有突发需求,配合自动化上架接口,可在10?#31181;?#23436;成10Tb突发池的扩容。

          1、 突发池系统架构

          突发池系统架构见图1

          图 1突发池系统架构

          a) 突发池:在各平台物理机的上层,由Docker虚拟机组成的资源池,对CPU/内存/磁盘等使用进行了限制,防止对物理机造成影响。原有业务依然部署在物理机上,不用调整。

          b) 自动化部署和监控系统: 能根据业务?#23548;?#38656;求,自动预测需求并扩容 。所有的突发需求,都能在10?#31181;?#20869;扩容完成。针对点播/下载业务,自动分发热点文件,降?#31361;?#28304;带宽。

          c) 调度系统?#21644;?#21457;业务的突发性和体量大两个特点,使得相比域名调度系统,直通车更占优势。直通车调度更灵活,生效时间快,能达到?#31181;?#32423;。

          虚拟机和物理机部署了上报Agent,业务信息和服务器负载每?#31181;?#37117;会上报到监控系统。监控系统会根据历史带宽预测一个值,并与当前带宽比较,如果当前带宽超过预测值的50%,则认为有突发。根据带宽上涨的比例,系统会自动从突发池中扩容相应数据的设备。针对提前准备的突发活动,运维可以指定带宽需求量,之后系统便会自动计算设备需求并扩容。

          ?#31181;?#31890;度上报的服务器负载信息则为监控系统做调度决策提供了依据。系统会依据机房剩余带宽、服务器带宽、CPU、IO等综合信息决定虚拟机是否需要从直通车中启用或者禁用。用户访问时先请求直通车调度系统,直通车会根据调度策略返回一个302地址,302地址中为?#23548;蔆DN资源地址。用户跳转到302地址,并获取?#23548;?#20869;容。

          2、技术优化

          使用虚拟化技术复用资源的重要前提是,不影响现有业务。这就要求对资源有充分的隔离,比如CPU/磁盘,以及对带宽的使用。下面是实现过程中存在的几个问题及解决方案:

          精准控制单机负载:负载过高会影响业务质量,需要对单机负载进行精准的控制。

          解决方案:

          a) 配额系统:直通车中有配额系统,对每个虚拟机可使用的资源做了限制,包括CPU/IO和带宽。监控系统中上报的信息,结合配额系统,可以确保服务器负载被限定在制定的范围内,粒度为?#31181;?#32423;。

          b) 部分请求返回302:对CPU/带宽/IO等做了限制后,应用程序能根据母机当?#26696;?#36733;,实时判断是否处理一个请求。如果负载在限制范围内,直接处理;如果负载超出限制,则返回302,使用户跳转到直通车的调度地址,这样能在尽量不影响业务质量的情况对负载做精准控制。程序层面对负载的实时控制,是配额系统的有效补充。

          c) 网卡流量控制:在极端情况下,业务带宽超过设定阈值,这时虚拟网卡会主动丢包,避免对母机造成影响。

          限制磁盘大小:Docker在ext3/ext4文件系统中无法对文件/目录级别进行磁盘大小限制。

          解决方案:

          由于腾讯云CDN业务基本都是使用ext3/ext4文件系统,这种情况下Docker只能对根据用户或用户组对磁盘进行限制,但现网业务都是直接在root环境下使用。这里我们使用loop device来解决磁盘大小限制问题。虚拟机中突发业务使用?#20197;?#22312;loop device上的目录,这样就可以间接限制磁盘大小,防?#25925;?#29992;太多磁盘影响其他业务。

          CPU绑定:默认?#21069;?#23450;所有CPU,部分单CPU负载高会影响母机业务。

          解决方案:

          通过脚本每?#31181;?#37319;集一次系统所有单CPU负载,为避免频繁调整和受毛刺数据影响,取15?#31181;?#30340;均值。最后选取负载?#31995;?#30340;部分核,并通过配置文件cpuset.cpus来动态绑定,将虚拟机对母机业务影响降低到最小,并且能充分利用资源。

          效果

          突发池上线后,高效支持了王者荣耀下载、NBA直播、KPL/LPL游戏直播等多次大型突发活动,节约成本2000万。通过共享buffer,搭建突发池能显著提高突发能力和降?#32479;?#26412;。

          总结

          腾讯云CDN通过Docker技术复用资源,搭建Tb级别突发池,能支持直播、点播、静态等各种业务突发,能自动检测到业务突发需求并在10?#31181;?#20869;完成资源扩容,具有发布快,成本低等特点。资源复用能提高资源利用率,为业务提供极大的突发池,但要注意复用业务之间不能相互影响,这需要对服务器进行实时的监控和及时的调度。另外还有一些待改进的地方,比如内核?#38382;?#22522;于容器隔离,方便不同业务调?#29275;?#37096;分业务?#31361;?#31471;不支持302跳转,调度系统需要支持域名调度方式。

          相关推荐

          CDN免费体验

          一?#31181;?#23398;会使用CDN

          原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

          如有侵权,请联系 [email protected] 删除。

          编辑于

          我来说两句

          0 条评论
          登录 后参与评论

          相关文章

          来自专栏网站设计制作、数?#38047;?#38144;

          做网站留后门的网站制作公?#38745;?#33021;选

          无论是做公司网站?#25925;?#20854;他类型的网站,如果你发现做网站的公司做的网站留有后?#29275;?#22312;网站上线后,网站制作公司仍可以自由通过后门权限对网站后台进行操作的,最好?#25925;?#25442;一家...

          750
          来自专栏DevOps时代的专栏

          一篇文章搞清楚 CI, CD AND CD

          CI, CD AND CD 当我们在谈论现代的软件编译和发布流程的时候,经常会听到CI 和CD这样的缩写短语。CI很容易理解,就是?#20013;?#38598;成。但是CD既可以?#22797;?#30721;...

          3248
          来自专栏腾讯架?#25925;?#30340;专栏

          王者荣耀、NBA突发支撑

          如何快速、?#32479;?#26412;地保障业务突发,本文从目前问题出发,论述了问题对应的解决方案,并?#20113;?#25928;果做出总结。

          1.2K1
          来自专栏程序员的SOD蜜

          2010技术应用计划

          ?#32423;粒?“2010技术应用计划”是去年3月中心部门头脑风暴“成果”的一部分,现在重新回顾一下,当时的许多计划或许对现在及以后还有一定的意义,故放在我的博客“朝花...

          2106
          来自专栏人人都是极客

          如何搭建一个物联网系统框架?

          只有设备接入到网络里面,才能算是物联网设备。这里涉及到2个关键点:接入方式以及网络通信方式。

          6894
          来自专栏韩伟的专栏

          缓存系统在游戏业务中的特异性

          本文主要从以?#24405;?#20010;方面:电?#30001;?#21153;/一般互联网类业务的数据处理流程、游戏类业务的数据处理流程、一般的缓存系统的特点在游戏中的问题、本地分布式缓存服务的特点和优?#24179;?..

          1.6K0
          来自专栏云计算D1net

          基础设施即代码让混合多云管理更为复杂

          对于任何一个力,都存在着一个与其大小相等方向相反的反作用力。这个物理学上的牛顿第三定律也同样适用于IaC?#26680;?#28982;这一服务是有优势的,但它也带来了一些问题。 本文是...

          2768
          来自专栏ThoughtWorks

          ?#20013;?#20132;付2.0:云原生?#20013;?#20132;付

          《?#20013;?#20132;付》提出了一系列贯穿整个软件交付生命周期的最佳?#23548;?#20294;它成书的年代(2010年)云计算尚未得到广泛应用,尤其在软件开发过程中的应用非常有限。如果站在今天...

          4045
          来自专栏技术墨客

          multi-tenant solution(多租户方案)?#24471;?

          今天在?#33455;縱ertx-Metrics时碰到了一个multi-tenant solution的概念,特此整理记录相关资料。

          1862
          来自专栏WeTest质量开放平台团队的专栏

          Now 直播应用的后台服务器性能测试?#23548;?/a>

          直播的火爆带来了海量的用户,也带来了海量的服务器并发。本文分析了目前直播行业存在的难点,从腾讯目前的新直播产品的 NOW 直播出发, 了解直播应用背后的那些事...

          2.2K1

          扫码关注云+社区

          龙江福彩36选7开奖结果
          <strong id="m1i4d"></strong>
          <em id="m1i4d"><ol id="m1i4d"></ol></em>
              1. <strong id="m1i4d"></strong>
                <em id="m1i4d"><ol id="m1i4d"></ol></em>