简介: 前不久,阿里云技术天团空降CSDN在线峰会,对核心技术竞争力进行解读。其中,阿里云高级技术专家曾福华分享了《双11: CDN如何保障电商大促如丝般顺滑》的议题。俗话说:养兵千日,用兵一时。每一次的战役,后面都有无数的团队、无数的预案以及无数的演练在支撑着。双十一的稳定,不仅仅有各种创新各种高科技,还有非常多的体系化工程给与了足够的保障,从物理层到应用层,从资源准入到线上演练,无一不例外的都蕴含着各种门道。面对电商大促,面对百 Tbps 级别的流量,阿里云 CDN 又是如何确保如丝般顺滑的呢?

讲师:曾福华,高级技术专家,阿里云边缘云智能调度系统负责人,主要研究技术方向为边缘云网一体化调度。

阿里云CDN发展历程

  • 2008年:阿里云CDN起源于淘宝CDN,当时主要服务对象就是淘宝电商。
  • 2009年:双11启动; CDN研发团队成立; 阿里的CDN和电商有着千丝万缕的联系。
  • 2011年:CDN作为流量基础设施,逐渐从服务淘宝电商扩展到全面服务阿里集团。
  • 2014年:阿里云CDN正式商业化; Tengine+Swift节点架构上线,替换了ATS节点架构。
  • 2015年:阿里云CDN与电商携手迈进全站https阶段;阿里云CDN自研AIM1.0智能调度系统上线。
  • 2017年:阿里云CDN开启全球化战略;合并优酷CDN;正式发布SCDN、DCDN等产品;同年被Gartner评定为全球级供应商。
  • 2018年:阿里云CDN支撑了全网70%世界杯直播流量;AIM2.0智能调度系统发布。
  • 2019年:围绕“智能化”,阿里云CDN在技术上深耕,在可编程CDN、多维资源负载均衡、精细化运营、各种边缘场景服务上持续打磨。
  • 2020年:在全民抗疫的背景下,阿里云CDN支撑直播\在线教育等场景流量大幅增长;在技术层面,进行CDN边缘云原生与云网一体化调度改造。

上图中可以看出,伴随着每年双十一以及移动互联网、视频的普及,CDN的流量也呈现一个指数级增长。截止目前,阿里云CDN在全球有2800+边缘节点,覆盖了3000多个地区和运营商。服务全球数十万客户,为超百万域名提供加速服务。阿里云CDN打造的一张连接全球的边缘生态网络,在晚高峰期间每秒处理上亿QPS的用户连接请求,每天将客户数十亿次配置管理指令下发到全网所有节点。

CDN简介与技术架构

众所周知,站点加载速度对上网体验影响非常大。据统计,大部分站点如果不能在3秒内打开的话,接近50%的用户会选择离开。对于大型在线系统来说尤为明显,加载时间每延长1秒,一年就会减少数以亿计的营收。
CDN就是旨在提供客户站点访问加速的PaaS云服务(虽然CDN诞生的时候云计算的概念还没有提出来),CDN非常普及,承载了互联网90%以上的流量。工作的原理是通过广域覆盖的边缘节点将内容分发到全球各地,调度系统将用户请求引导合理的边缘节点来大幅减低访问时延,并控制着缓存内容回源流向,进而达到给客户站点加速的目的。

CDN比较切确的定义是,基于运营商资源通过低成本、高可靠、广覆盖的计算基础设施、内容链接能力及视频承载平台。CDN内部系统覆盖智能调度、网络/协议以及供应链的管理等模块,同时加之数据和安全防护生态能力,在此基础之上,提供面向网页、图片、点播、直播、动态、政企、安全等不同场景的加速能力。

电商大促的技术特征与挑战

今天的大促规模十分庞大,通常是百T级的业务带宽,亿级的并发请求,需要百万级的CPU核消耗,如此大规模的场景磨炼下,推动了云产品尤其是CDN的快速成长。

大促活动有两个特征,第一是密集排布,包括活动安排紧凑,对应不同业务方;活动形式多样,如猫晚直播、大主播、红包、秒杀、0点开抢等等;同时活动估量非常复杂,需要考虑并发连接、带宽、算力、命中率等指标。第二是需要在高负载下灵活变阵,考虑到:高负载大盘资源运行水位;各活动场景对不同维度资源需求差异大;各活动场景的调度覆盖策略要具备随机应变能力,以及强大的资源弹性伸缩能力。

那在这样复杂的背景之下,如何去满足业务高速发展的需求呢?

直面洪峰流量:CDN如何承载大促洪流?

通常,拿双11大促举例,CDN的保障分为预备、战前、护航三个大的阶段。同时,因为双11保障是组织和系统结合的体系工程,详细拆解下来可以分为需求评估、预案准备、需求交付、演练压测、封网保障、大促护航等不同阶段。

一、预备

在需求采集和评估阶段,CDN需要向各个业务侧去采集业务需求,明确时间点、业务特征画像和业务活动报量,同时要明确是否涉及新的功能定制。然后根据业务需求转化成资源需求,包括库存盘点、错峰复用和资源缺口与建设;
在预案的准备阶段,需要盘点清楚往年既有预案和新增预案;按场景和用途分成提前预案、还是紧急预案;大部分预案是CDN平台侧独立完成即可,还是部分需要和业务方一起配合联动;
定制需求交付过程中,主要涉及定制开发、联调测试、上线验证等过程;资源在建设交付过程中,也需要对交付的资源进行业务模拟仿真,并配合进行业务资源池的调整。

二、战前准备

首先需要完成演练压测阶段,包括对容灾、安全、性能和功能各方面的演练,进一步确保双11对软硬件系统、人员组织等方面的准备工作是到位的,包括预案是否覆盖完整;接下来,就要进入封网保障阶段了,一般在大型活动上线之前都会禁止所有的发布和变更,不断进行系统巡检,巡检中确保所有出现的缺陷修复到位,同时这个阶段也会进行战前动员保障,激励士气的同时也对大促保障规范做进一步强调。

三、护航阶段

正式开始护航后,通常会按照提前安排好的分工进入现场保障,尤其前期工作做得充分,这个阶段主要工作就是盯盘,针对异常情况需要快速地发现并定位问题,按计划启动相应紧急预案进行响应。最后,保障结束后需要对整体护航进行复盘总结,为未来的大促保障去做更多参考沉淀。

CDN保障大促的关键技术点应用

一、大促场景弹性如何保障?

由于大促期间业务排布非常多,那么在高资源运行水位的情况如何进行灵活的弹性调度保障非常关键。阿里云CDN是如何保障的呢?如下图(上半部分)所示,海量业务中每个业务都有自己的资源偏好,为了保障弹性在业务和资源的匹配过程中,采用了不强制只择优的业务资源匹配机制。总结下来,阿里云的CDN调度系统在弹性保障上:
资源共池融合是业务弹性保障的最关键因素;
不做业务级别的节点硬件隔离,流量实时按需流动到全网所有节点上;
弹性、质量是可权衡的双目标,可根据实际情况进行自主灵活可控(业务资源匹配程度);
按整体大盘需求进行资源规划、资源建设、资源调度;

如上图(下半部分)所示,我们要做到通过业务资源池资源调度优化,让全网2800+CDN节点所有节点的齐涨齐落,这样才能给大促业务提供最大的资源弹性保障。所以,调度不仅是全局负载均衡,更是弹性伸缩,阿里云CDN调度系统进行了以下准备:

  • 节点角色交调度系统决策,剪除硬约束;
  • 业务资源池交调度系统实时决策,灵活变阵;
  • 节点上业务混布交调度系统决策,充分复用;
  • 资源池规划、全局负载均衡中台的双剑合璧,弹性伸缩;

二、 大促场景算力如何调度?

很多人认为CDN单纯是流量分发系统,但其实这个观念是值得商榷的,在一些场景下还会海量大促突发请求会消耗巨大算力资源。拿双11来举例,电商网站进行了全站的https改造,在11日凌晨0点电商大促开抢瞬间,所有请求汇聚进来,这时候会形成非常巨大的尖脉冲,算力消耗十分巨大,此时如果没有很好的机制去进行算力资源调度和全局负载均衡,就会出现大面积的业务异常。按天维度来看,双11当天QPS比平时要高出约三成。所以CDN在大促场景下的另一个核心挑战是:如何对海量业务算力消耗进行精准的全局负载均衡调度?

曾福华在此介绍:在带宽调度或流量调度时,我们可以从日志上精准推演每个请求消耗的流量,但是比较难精准去推算出每个请求消耗了多少算力,这对我们来说是非常大的难题。如下图所示是阿里云CDN的解题思路,基于已知的每个节点的CPU消耗以及节点的并发QPS这两个数据,可以对每个业务单位QPS的CPU消耗进行公式的计算。同时根据不同时间点的不同数据变化,不断进行机器学习训练,得出各个业务平均单请求的CPU消耗精准数据了。有了带宽和算力消耗的数据,如此一来,之前的单维带宽调度就需要升维到多维资源调度模型,生成带宽与算力等多资源维度下的全局负载均衡的调度新策略。

三、大促限流保障机制

前面有介绍到大促期间整个大盘是在资源高水位状态下运行,所以需要业务侧做精准的业务报量,CDN平台会根据这个报量去进行资源评估。但是任何事情都需要考虑到突发性和意外性,如果突增业务量超过了之前评估的业务报量,CDN平台怎么进行风控呢?

这一方面需要业务侧对于报量进行精准评估,而另一方面CDN平台侧需要限流的策略来确保整体业务平稳运行。
阿里云CDN在限流保障上已经在多方面沉淀了很多实战经验和能力。阿里云CDN多级全方位限流保障包含:

  • 业务类型: 直播、点播、下载、动态加速等场景限流;
  • 限流类型: 带宽、QPS、连接数等;
  • 限流形态: 单阈值区间限流,多阈值区间限流;
  • 限流范围: 全网、区域、节点等;
  • 限流层级: L1限流、L2限流、回源限流;

四、调度模拟仿真平台

前面我们讲到大促场景中需在高负载的情况下进行灵活变阵,调度模拟仿真平台是一个非常好用的工具。
大促场景结合各个业务预估报量进行全局调度策略侧模拟仿真,可以在事前未卜先知资源瓶颈和风险点会发生在什么地方,需要针对各个业务怎么做资源补充和策略调整,循环迭代调整业务资源池,直到模拟仿真平台上风险点解除掉。
除了大促场景之外,调度模拟仿真平台还可以加速辅助CDN调度核心系统的功能演进,从全局角度来观察验证新组件带来的变化影响是正面还是负面。

模拟平台的用途总结:

第一,基于沙盘模拟迭代,打磨了一套零成本试错之路

•加速调度核心系统等组件的进化;
•测试平台+模拟仿真平台,共同捍卫稳定性;
•业务策略、资源的调整实时评估;

第二,通过大促模拟仿真,可以提前预知风险

•业务报量到资源建设,衔接管控全流程;
•精确推导资源缺口,精确推导承载增量;
•大促活动变阵模拟,循环迭代业务资源池;

以上是阿里云CDN基于多年电商大促场景保障过程中沉淀下来的一些实战经验分享。阿里云CDN目前也在边缘云原生和云网一体化调度上做了很多技术上的演进,后面我们将持续给大家进行相关分享,谢谢观看。

作者:樰篱

原文链接

本文为阿里云原创内容,未经允许不得转载

最新文章

  1. 【菜鸟学习jquery源码】数据缓存与data()
  2. c#中的23种设计模式
  3. 【BZOJ】1015: [JSOI2008]星球大战starwar(并查集)
  4. C#系列教程——lock语句定义及使用
  5. linux 内核的各种futex
  6. PHP cURL的详细使用手册
  7. Python3 词汇助手 有道翻译助手 有道导出文件格式转换
  8. 大数据技术Hadoop笔试题
  9. JavaScript手工编写滚动条组件
  10. LeetCode 590 N-ary Tree Postorder Traversal 解题报告
  11. Azure PowerShell (16) 并行开关机Azure ARM VM
  12. Codeforces.810D.Glad to see you!(交互 二分)
  13. jspSmartUpload使用初步
  14. socket编程介绍
  15. 740. Delete and Earn
  16. Flask从入门到精通之Flask表单渲染成HTML
  17. PropertyPlaceholderConfigurer读取配置文件
  18. 20155229 2016-2017-2 《Java程序设计》第四周学习总结
  19. winform 弹出窗体指定位置
  20. 导出php5.4支持的数组格式,即以[]为标识符而不是以array()标识

热门文章

  1. Selenium Web元素定位方法
  2. C#中RDLC报表中日期显示格式
  3. 深入浅出JVM(一):你写得.java文件是如何被加载到内存中执行的
  4. Python文件部分(不包括数据)
  5. easyui中开始时间小于结束时间 不然无法点击
  6. Cys_Control(六) MTreeView
  7. [leetcode]720. Longest Word in Dictionary字典中最长的单词
  8. Qt学习笔记-Qt-4.8.6+phonon+mplayer
  9. 为什么import React from 'react',React首字母必须大写?
  10. ES6 浅谈Reflect