简介: 前不久,阿里云技术天团空降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目前也在边缘云原生和云网一体化调度上做了很多技术上的演进,后面我们将持续给大家进行相关分享,谢谢观看。

作者:樰篱

原文链接

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

大促密集,CDN如何保障电商体验如丝般顺滑?的更多相关文章

  1. 与Boss大雷探讨JavaWeb开发、电商与网络安全

    最近几个月,与公司Boss大雷交流得比较多,也学习到了很多新的东西,了解到了一些没有接触和实践的业界做法. 简要介绍下Boss,姓雷,定居武汉好几年了,之前在一号店.UC.支付宝干过,有丰富的电商-支 ...

  2. Laravel 开源电商体验与部署

    体验 开源项目已经部署了体验环境,开源通过扫描下方小程序码进行体验: 我们部署了 Laravel API demo 环境,访问地址:https://demo-open-admin.ibrand.cc/ ...

  3. 谈B2B电商平台与大数据

    数据为王,服务为本——谈B2B电商平台与大数据 2013-06-27 11:10:41 作者:B2B行业资讯 标签:                             大数据           ...

  4. 把握这两点,抢占下一个电商风口|2016最新中国电商App排名&研究报告

    序言 电商,是随着中国互联网经济的持续发展所成长起来的.淘宝.京东这些电商从交易额和影响力上看都位列中国最为成功.最具话题性的互联网企业之中.尽管近几年中国经济有所放缓,但中国消费市场的增长速度仍有望 ...

  5. 未来京东真能成为中国第一大B2C电商平台吗?

    ​     2月10日,京东集团在北京举行2017年"科技引领未来"开年年会.在本届年会上,京东宣布全面向技术转型.京东集团CEO刘强东正式对外公布未来12年的战略:在以人工智能为 ...

  6. 电商大促准备流程v2

    1 概述 对于电商企业而言,每年都会有几次大的促销活动,像双十一.店庆等,对于第一次参加这个活动的新手,难免会有些没有头绪,因而将自己参加双十一.双十二活动中的过程心得进行下总结,一方面供以后工作中继 ...

  7. 重学 Java 设计模式:实战责任链模式「模拟618电商大促期间,项目上线流程多级负责人审批场景」

    作者:小傅哥 博客:https://bugstack.cn - 原创系列专题文章 沉淀.分享.成长,让自己和他人都能有所收获! 一.前言 场地和场景的重要性 射击

  8. 电商架构设计-通过系统和业务拆分,遵循单一职责原则SRP,保障整个系统的可用性和稳定性

    个人观察 1.通过系统和业务拆分,遵循单一职责原则SRP,保障整个系统的可用性和稳定性. 2.单一职责原则SRP,真的很关键,广大程序员需要不断深入理解这个原则. 3.架构图是架构师的重要输出,通过图 ...

  9. 大型电商业务架构 IT大咖说 - 大咖干货,不再错过

    大型电商业务架构 IT大咖说 - 大咖干货,不再错过 http://www.itdks.com/dakashuo/new/dakalive/detail/591

随机推荐

  1. ASP.NET Web API运行提示:找到了与该请求匹配的多个操作的解决方法

  2. 写一个nginx.conf方便用于下载某个网页的所有资源

    写一个nginx.conf方便用于下载某个网页的所有资源 worker_processes 1; events { worker_connections 1024; } http { include ...

  3. MySQL建立索引遵循原则的注意点

    1.选择唯一性索引 唯一性索引的数据是唯一的,可以更快的通过该索引查询某条数据. 2.为经常需要排序,分组和联合操作的字段建立索引 order by,group by的字段在排序操作时很是耗时,可以对 ...

  4. 为什么MySQL不推荐使用uuid作为主键?

    前言 在mysql中设计表的时候,mysql官方推荐不要使用uuid或者不连续不重复的雪花id(long形且唯一,单机递增),而是推荐连续自增的主键id,官方的推荐是auto_increment,那么 ...

  5. java 反射给字段重新赋值

    1.获取实体的所有字段,遍历 2.获取字段类型 3.调用字段的get方法,判断字段值是否为空 4.如果字段值为空,调用字段的set方法,为字段赋值 Field[] field = model.getC ...

  6. 看起来很唬人,然而却简单实用的CAP理论

    在做分布式系统开发时,经常会或多或少的听到CAP理论.或者是处理节点间数据一致性的问题.CAP理论很简单,但却是很多软件设计的宏观指导,因此也有人将之称为架构师必须掌握的理论之一.鉴于理论的东西相对来 ...

  7. Idea创建Maven项目时出现Failed to execute goal org.apache.maven.plugins:maven-archetype-plugin:3.0.1错误

    如果Maven中用的jre用的是idea中自带的,但是环境变量JAVA_HOME配置的是自己的jdk,那么就会出现 解决方法是到settiing中把jre改成自己的jdk中的jre 经过尝试,问题解决

  8. Linux内核源码分析之setup_arch (三)

    1. 前言 在 Linux内核源码分析之setup_arch (二) 中介绍了当前启动阶段的内存分配函数memblock_alloc,该内存分配函数在本篇将要介绍paging_init中用于页表和内存 ...

  9. 分析http协议和高并发网站架构

    案例任务名称 分析http协议和高并发网站架构 案例训练目标 深入理解http协议的工作原理 掌握http协议的分析方法 包含技能点 搭建web服务器 编辑简单的html页面并上传到服务器 使用wir ...

  10. jq 右键菜单在弹出菜单前如果需要显示与否的判断相关操作

    菜单插件(ContextMenu)接收一个额外的参数对象来设置菜单项的样式和绑定鼠标事件. 菜单插件(ContextMenu)支持一下参数设置: bindings 包含id的对象:函数组. 当关联的菜 ...