世界杯百T级CDN智能流量调度系统的实战分享
摘要: 在刚刚落幕的重庆云栖上,阿里云高级技术专家仔晟为现场观众带来议题《百T级CDN智能流量调度系统的实战分享》,重点介绍了在世界杯直播业务场景之下,阿里云CDN的产品架构、技术方案与客户实践。
在刚刚落幕的重庆云栖上,阿里云高级技术专家曾福华为现场观众带来议题《百T级CDN智能流量调度系统的实战分享》,重点介绍了在世界杯直播业务场景之下,阿里云CDN的产品架构、技术方案与客户实践。
曾福华老师的分享从CDN系统相关介绍、智能调度产品、世界杯场景优化三个方面展开。
CDN系统相关介绍
在最开始,曾福华老师讲到,阿里云CDN正式商业化是在2014年3月份,到了2015年2月份,CDN智能调度正式上线。经过这么多年的商业化,支持数次阿里集团双11,外部的春晚洪峰流量,以及今年的世界杯,阿里云CDN如今已经具备规模化、自动化、智能化、PaaS化这几大特点。“阿里云CDN带宽储备120T+,在全球拥有1500多个节点,服务30多万客户。如此庞大的资源与业务体系,其实内部只有2名运维,全部依赖着智能化、自动化的调度系统来完成。”
下图为CDN系统架构,与大部分提供CDN服务的厂商大致相同,分为缓存系统,调度系统和支撑系统。但是阿里云CDN与其他厂商主要区别在于所有的软件基本都是自研的和阿里深度参与的开源项目,比如LVS和Tengine。
智能调度产品
CDN智能调度主要有三个核心组件:
第一个是资源规划,这是给每个业务分配节点的环节,在传统厂商更多是人工去解决的,在阿里云只有2个运维在做调度相关工作,具体各个业务跑在哪里节点上是由智能调度系统解决。今天我们已经做到,15%业务弹性自动化兼容,节点水位能够平稳跑到80%。
第二个是精准控流,阿里云基于全球LDNS进行画像和基于分钟级别日志精准分析基础上的流量预测,流控系统的策略带宽和实际带宽可以控制偏差在5%以内。
第三个是调度执行器,首先是调度策略是秒级生效,另外一个特点所有调度执行器都是双异构并行方案,如同飞机引擎一样,即使一个引擎坏了,另一个引擎也可以马上启动,保障业务稳定性。
资源规划
智能化资源规划是云CDN和传统CDN最大的差别所在,资源规划是一个多目标的运筹优化问题,第一是如何解决资源合理分配的问题;第二是自动化确保业务快速接入,资源规划每天进行对应的调整保障大客户接入做到天级别;第三是要赋予业务必要的弹性,应对客户业务的流量上涨;第四点是流控自由度,资源规划是一个离线程序,要给实时调度提供的调度自由度;第五点是全网1500个节点里做负载均衡,所有节点的流量和负载趋势趋同,水位齐涨,智能化资源规划保障有限资源承接更多的业务。
第六点是追求规模优势下的成本最优;除了这些点之外,资源规划还需要考虑业务特点做CPU,存储等倾向性选择, 同时需要保障运维资源管理的易用性。
曾福华老师现场用一张图来详细进行阐述,这个格子是CDN的节点,一个格子里面有四个小格子,他有不同的分组,还有几条黑线几个节点连接起来了,哪些业务应该在哪些节点、分组上去跑。而实际线上是30万以上的业务和1500以上的节点之间的组合,复杂程度非常高,为了简化示意图的左边是两个直播、点播的调度域,中间是四个节点,这四个节点里面,分别都有一些机器分组。然后左边的调度域在各个区域的业务流量需要分配到中间各个节点、分组上,我们期望所有的节点水位均衡,尽量处于大致同一个水位上。
精准控流
如何实时的进行精准控流,任何CDN厂商都要面临这个问题,是CDN最基础的核心能力。下图左边是节点的列表,右边是业务的列表,这个节点列表和业务列表的对应关系是经过资源规划系统大致离线算出来,哪些业务当前时刻跑在哪些节点上,这是实时精准流控来决定的,从图看上去像网络流一样,但实际上用网络流的办法解决精准问题有一些局限性。
曾福华老师现场也与观众一同重新认识了运营商的LDNS, 剖析了通过LDNS调度无法做到按任意比例的流量分摊到多个节点的具体原因。
谈到调度,曾福华老师现场做了一个比喻,一个装了很多冰块和水的杯子,如果我们要把杯子里面的狭小空间全部用上,我们先要把冰块放进去,再倒液态水。前文刚刚讲到的DNS的协议限制,类似冰块。其他别的调度形式,比如IP调度,可以做好请求级别的调度,也就是支持任意比例的负载均衡,就像液态水一样。
所以,在智能调度的场景里,也需要把“固体”和“液体”结合起来考虑,才能做到所有的节点、水位的精准控制。
另外通过实践,阿里云CDN的智能调度可以精准预测流量,在10分钟内的预测的精准度到98%,一小时的精准度95%以上。 综上几个方面的特性,CDN流控的精准度大致能控制在5%左右。
世界杯场景下的调度优化
接下来分享世界杯场景下CDN调度的优化,今年俄罗斯世界杯应该是有史以来最大规模在线观看的体育赛事了,而阿里云CDN今年承载国内世界杯网络直播70%+流量。整个护航过程中,我们面临了几大挑战:
第一个挑战是优酷拿到的转播权是5月底到6月初,6月中旬就要开赛直播,前期筹备时间非常短,而新资源在陆续交付,对我们的挑战还是挺大的。
面对这个挑战,我们有以下几点优势:
一、规模化共享资源池,最充分使用空闲资源
与传统CDN厂商不同的是,阿里云所有的资源池是在一起共享的,离线资源规划程序每天运算,用来保证空闲资源的充分使用,在资源紧张时尽量把所有空闲资源都使用上,如果像传统CDN厂商把硬件资源隔离开分到不同业务上,当这么巨大业务短期内要上来的时候是没有办法完成空闲资源的集中使用的。
二、天级离线资源规划,确保业务能快速接入
离线规划可以按天级别,这样业务接起来会比较快,每天可以预估第二天的峰值量,这样只要我们预测偏差不大的情况下,可以确保第二天平稳的跑下来。
三、时级资源局部调整,资源层动态水位均衡
如果对于流量的预测偏差导致流控无法合理分配的问题,采用小时级别的局部的资源调整,来保证整体资源的动态平衡。
四、高效流量仿真平台,资源规划结果可验证
不管是天级别的资源规划,还是小时级别的资源规划,都可以通过仿真系统,确认每一次调整的效果,也可以针对仿真系统的结果不断迭代到我们需要的结果。
第二个挑战,在码率瞬间变大比较大的情况下,常规的流量预测算法失算了,进而会干扰流控程序, 这个问题我们是怎么解的?阿里云使用了一个黑科技——AI预测+智能锁定,大致思路是预测的不是10分钟后的业务量,而是预测这场比赛的峰值业务量是多少。
上图画了很多格子,最左边的格子开赛前的时间,世界杯还没开始的时候,我们会根据峰值预测量锁定一定比例的带宽空间,这样这部分带宽空间不会被别的业务量抢占导致世界杯的卡顿。当每场次的比赛开播后一段时间,流量上涨非常快,这个锁定量基本上保证了前面流量攀升比较剧烈的20分钟的节点带宽是充足的,可以给世界杯提供流畅的带宽保障。等到比赛过了20分钟以后,就是整个流量流量上涨变平缓了许多,接下来我们始终保证世界杯当时的业务量,或者说这场比赛达到的最高峰值和整个锁定量之间保留一定的差距,如上图中黄色区域代表的锁定量,通过这种方式我们解决了世界杯赛事的一个流畅保障问题。
第三个挑战就是阿里云有1500多个节点,面对世界杯业务几个域名特大业务流量,如何做到节点不跑超跑低两极分化,整体水位比较一直状态?
解法是HTTPDNS跟DNS调度要组合起来做调度,在世界杯的业务场景中就是很好应用了这个组合。在下图我们可以看到,比如通过优酷各端兼容HTTPDNS,那么流控就像控制水流,和不兼容HTTPDNS的WEB端DNS调度组合,我们就做到了比较好的节点水位精准控流。
以上就是2018俄罗斯世界杯期间,百T级别CDN智能流量调度系统的一些实战经验分享。
作者:樰篱