九年双11云化架构演进和升级,打造更加完美的双11

本文涉及的产品
性能测试 PTS,5000VUM额度
简介: 12月13-14日,由云栖社区与阿里巴巴技术协会共同主办的《2017阿里巴巴双11技术十二讲》顺利结束,集中为大家分享了2017双11背后的黑科技。本文是《阿里巴巴云化架构创新之路》演讲整理,主要讲解了双11的技术挑战与突破、云化架构演进的背景、统一调度和混部的挑战、Pouch容器和容器化的进展、双11的未来技术发展路线。
12月13-14日,由云栖社区与阿里巴巴技术协会共同主办的《2017阿里巴巴双11技术十二讲》顺利结束,集中为大家分享了2017双11背后的黑科技。本文是《阿里巴巴云化架构创新之路》演讲整理,主要讲解了双11的技术挑战与突破、云化架构演进的背景、统一调度和混部的挑战、Pouch容器和容器化的进展、双11的未来技术发展路线。内容如下。

分享嘉宾:

  fd363985ef63c0e44e6628873e42217721ba73b3

叔同(丁宇),阿里巴巴资深技术专家,8次参与双11作战,阿里高可用架构、双11稳定性负责人,阿里容器、调度、集群管理、运维技术负责人。
 
叔同:
双11推动了阿里技术的进步,它有哪些挑战?
  • 互联网级规模,每天有数亿人在阿里网站上进行交易;
  • 企业级复杂度,每完成一笔交易都需要数百个系统的服务支撑;
  • 金融级的稳定性,每一笔交易都必须保证其完整性和正确性;
  • 双11存在数十倍的业务峰值,要求系统绝对稳定。
阿里巴巴9年双11经历下来,交易额增长了280倍、交易峰值增长800多倍、系统数呈现爆发式增长。系统在支撑双11过程中的复杂度和支撑难度以指数级形式上升。双11的峰值的本质是用有限的成本最大化的提升用户体验和集群吞吐能力,用合理的代价解决峰值。面对增长如何发挥规模效应,持续降低单笔交易成本以提升峰值吞吐能力,为用户提供丝般顺滑的浏览和购物体验,是极大的挑战。

随着分布式架构、异地多活、限流降级、全链路压测等技术的突破,扩展性和稳定性问题得到了很好的解决。系统架构伴随9年双11的发展一代一代向后演进,每一年都有很大的提高。08年开始阿里巴巴着手系统从由集中式架构变成分布可扩展架构,其中沉淀了大量互联网中间件技术。13年通过异地多活的架构演进,把阿里完整的交易单元部署到全国各个城市站点,实现了地域级水平扩展。这两种技术的叠加解决了整个双11扩展性问题。

由于分布式架构的演进,系统稳定性问题开始凸显、系统复杂度急剧上升、多个系统间协同出现问题。我们建设了限流降级、预案体系、线上管理管控体系。在2013年时做了双11备战的核心武器——全链路压测。它能对整个系统的依赖关系里跟双11有关的部分进行完整的用户级的线上大流量真实场景读写压测,使系统提前经历几次“双11”,验证整个线上生产环境处理能力,及时发现问题并修复。

云化架构的演进

由于双11本身峰值增长很快,当我们做好了系统的稳定性后,发现硬件、时间、人力成本的消耗很大。成本挑战的出现推动我们解决IT成本的问题,即服务器资源问题。首先来看云化架构演进背景。

  ba9e33fd1b0d91bacd1f27cd6d822659ec906c04

上图为阿里业务六个月的峰值数据表。表中两个最大的峰值依次代表双11和双12的交易峰值,其他较小的峰值是日常交易峰值,红线代表日常准备系统服务器资源的处理能力。

在13年之前,我们采购大量的服务器资源以支撑双11流量高峰。高峰过去后,长时间低效运行产生很大的资源浪费,这是非常粗放的预算和资源管理模式。阿里的多种业务形态产生了多种集群,每个集群之间运维体系差异较大、各个板块无法互用、资源整体弹性能力不足导致双11无法借用这些资源。每个板块的资源池有不同的buffer,每个资源池的在线率、分配率和利用率无法统一。我们通过云化架构提高整体技术效率和全局资源的弹性复用能力。例如某个不做双11的集群把资源贡献出来给双11的交易使用。由于云能提供双11正需要的弹性能力,所以我们也开始大量使用阿里云来解决双11成本问题,通过拉通技术体系来降低大促和日常整体成本,提出通过云化架构来实现双11单笔交易成本减半的目标。

先来梳理一下整个运维体系现状。我们将集群大致分在线服务集群、计算任务集群、ECS集群三类。这三种集群上的资源管理和基础运维、调度都是独立的。它们有各自的调度编排能力,在线服务Sigma调度、计算任务的Fuxi调度、ECS的Cloud Open API;它们在生产资源、资源供给、分配方式上也是不同的。在线服务用的是容器、计算任务调度最后生产的是LXC的轻量级隔离封装容器、云生产的是ECS;它们在应用层上运维集群管理也是不一样的。最上层业务层跑的任务也不一样。在线服务器跑的是在线业务如交易搜索广告、有状态的存储。计算集群跑的是大数据分析的任务,云集群跑的是各式各样的外部客户的任务。

通过技术全面云化逐层进行重构升级,建设弹性复用的能力实现全局统一调度。在线任务和计算任务混合部署,通过统一运维部署和资源分配的标准化提高调度效率,以此来实现容量的自动交付。所以我们需要做全面容器化,利用公有云,发挥云的弹性能力,减小自采基础设施的投入。通过混合云弹性架构和一键建站复用阿里云的能力,降低双11的成本。利用阿里云做到以前一年的资源持有时间缩减到只需1-2个月。

统一调度体系

始于2011年建设的Sigma是服务阿里巴巴在线业务的调度系统,围绕Sigma有一整套以调度为中心的集群管理体系。

  0d97c153e5e7fd1c31f5bc5c8d2f0724f21d2100

Sigma是有Alikenel、SigmaSlave、SigmaMaster三层大脑联动合作,Alikenel部署在每一台NC上,对内核进行增强,在资源分配、时间片分配上进行灵活的按优先级和策略调整,对任务的时延,任务时间片的抢占、不合理抢占的驱逐都能通过上层的规则配置自行决策。SigmaSlave可以在本机上进行CPU的分配、应急场景的处理。通过本机Slave对时延敏感任务快速做出决策和响应,避免因全局决策处理时间长带来的业务损失。SigmaMaster是一个最强的大脑,它可以统揽全局,为大量物理机的容器部署进行资源调度分配和算法优化决策。

整个架构是面向终态的设计理念,请求进来后把数据存储到持久化存储,调度器识别调度需求分配资源。系统整体的协调性和最终一致性是非常好的。我们在2011年开始做调度系统,2016年用Go语言重写,2017年兼容了kubernetes API,希望和开源社区共同建设和发展。

发挥统一调度,集中管理的优势,释放了规模效益下的一些红利。在线服务的调度和计算任务调度下有各种业务形态,它们在一层调度上进一步细分成二层调度,通过合并资源池提升利用率和分配率,合并buffer进行空间维度的优化实现全局打通。全局打通后进行弹性分时复用、时间维度的优化,共节省超过5%的资源。由于基数大,这个优化效果是非常可观的。
 
8e32c64f2e54b5164713a4a173ca618c13907193

阿里巴巴在2014年开始推动混部架构,目前已在阿里巴巴内部大规模部署。在线服务属于长生命周期、规则策略复杂性高、时延敏感类任务。而计算任务生命周期短、调度要求大并发高吞吐、任务有不同的优先级、对时延不敏感。基于这两种调度的本质诉求的不同,所以我们在混合部署的架构上把两种调度并行处理,即一台NC物理机上可以既有Sigma调度又有Fuxi调度。Sigma调度是通过SigmaAgent调用OCI标准的RunC 、RunV、 RunLXC 三种标准来启动Pouch容器。Fuxi也在这台NC物理机上抢占资源,启动自己的计算任务。所有在线任务都在Pouch容器上,它负责把服务器资源进行分配切割通过调度把在线任务放进去,离线任务填入其空白区,保证物理机资源利用达到饱和,这样就完成了两种任务的混合部署。
 
29461f315ff53064d12233bb153ec5031f7d0ceb

混部的关键技术

内核资源隔离上的关键技术
  • 在CPU HT 资源隔离上,做了Noise Clean内核特性,解决在/离线超线程资源争抢问题。
  • 在CPU调度隔离上,CFS基础上增加Task Preempt特性,提高在线任务调度优先级。
  • 在CPU 缓存隔离上,通过CAT,实现在、离线三级缓存(LLC)通道隔离(Broadwell及以上)。
  • 在内存隔离上,拥有CGroup隔离/OOM优先级;Bandwidth Control减少离线配额实现带宽隔离。
  • 在内存弹性上,在内存不增加的情况下,提高混部效果,在线闲置时离线突破memcg limit;需要内存时,离线及时释放。
  • 在网络QoS隔离上,管控打标为金牌、在线打标为银牌、离线打标为铜牌,分级保障带宽。
在线集群管理上的关键技术
  • 对应用的内存、CPU、网络、磁盘和网络I/O容量进行画像,知道它的特征、资源规格是什么,不同的时间对资源真实使用情况如何,然后对整体规格和时间进行相关性分析,进行整体调度优化。
  • 亲和互斥和任务优先级的分配,哪种应用放在一起使整体计算能力比较少、吞吐能力比较高,这是存在一定亲和性。
  • 不同的场景有不同的策略,双11的策略是稳定优先,稳定性优先代表采用平铺策略,把所有的资源用尽,让资源层全部达到最低水位。日常场景需要利用率优先,“利用率优先”指让已经用掉的资源达到最高水位,空出大量完整资源做规模化的事。
  • 应用做到自动收缩,分时复用。
  • 整个站点的快速扩容缩容,弹性内存技术。
计算任务调度+ODPS上的关键技术
有弹性内存分时复用、动态内存超卖、无损降级与有损降级三个关键混部技术。动态内存超卖指内存是可以超卖的,如果有在线任务要用,就快速归还。有损降级和无损降级的策略指的是对影响在可接受范围内的波动干扰进行无损降级,不增加新任务,慢慢把它降下来,对影响大的干扰直接杀掉任务属于有损降级。利用零层管控,管理每台NC上的在线任务和离线任务之间的关系。

  a150a41303996f7e1caeabe8d36a355ff8390308

混合部署指将计算任务引入在线服务集群以提升日常资源效率。把离线任务引入后,CPU平均利用率从10%上升到40%以上,同时敏感类应用的延迟影响时间小于5%,属于完全可接受范围。目前我们整个混部集群已达到数千台的规模,经过了交易核心链路双11大促的验证。这项优化可以为日常节省超过30%的服务器。由于涉及到硬件的迭代和网络的迭代,需要一个很长的准备周期,所以我们预计明年会扩大10倍的部署规模。

  34ff43df9f914446708cc7f4b86994fdae0c2548

通过分时复用,达到进一步提升资源效率的效果。上图中的曲线是我们某个应用的流量曲线。它是非常有规律的,左边代表晚上波谷期,右边代表白天处于波峰期。正常的混部指占用图中蓝色阴影部分的资源把利用率提高到40%,弹性分时复用技术是指对应用画像找到应用流量波谷期,对应用缩容,大量释放内存和CPU,调度更多计算任务。通过这项技术,把平均CPU利用率提升到60%以上。

  21c0abf7a0d474ff42c101524208fc1be084155b

在双11时,如何利用计算任务集群混合部署助力双11降低成本?我们把计算任务集群分成三种状态:完全没有在线服务的状态、在线服务和计算任务共同存在的过渡状态、双11时在线服务占主流计算任务短时间降级状态。集群混合部署后资源分配三七开,计算任务可以抢占在线任务分配的资源;在压测和大促非峰值时资源分配五五开;在大促峰值到来时,计算任务短时间降级,空闲资源支持支撑双11峰值。通过一小时快速建站拉起完整交易站点,大幅度降低了双11的单笔交易成本。

Pouch容器和容器化的进展

全面容器化是提升运维能力、拉通运维差异的关键的技术。首先介绍一下阿里巴巴内部容器技术产品Pouch。它从2011年开始建设和上线,基于LXC,在2015年初开始吸收Docker镜像功能和很多标准。阿里巴巴的容器非常有特点,它结合了阿里内核,大幅度提高了它的隔离性,目前以百万级规模部署于阿里集团内部。

再来了解一下Pouch的发展路线。以前用的是虚拟机的虚拟化技术,虚拟化技术过渡到容器技术面临着很多运维体系的挑战。运维体系的迁移是一个很大的技术成本。我们做到了阿里内部运维和应用视角,有独立IP,能够ssh登录,有独立的文件系统和资源隔离使用量可见性。2015年以后,阿里巴巴引入Docker 标准,形成了新的一套容器Pouch并集成整个运维体系。

  482982d04f9181d29cc56e8d32fd596e709c4e68

Pouch的隔离性非常好,是富容器,可以登录容器,看到容器内进程自己占的资源量,有多少进程,进程挂了容器是不会挂的,可以运行很多的进程。兼容性很好, 旧版本和以后的版本都支持,对利旧很有帮助。同时他经过了百万级容器部署的规模化验证,我们研发了一套P2P镜像分发机制,大幅度提升分发效率。同时兼容了业界更多标准,推动标准的建设,支持RunC 、RunV 、RunLXC等标准。

  dc988f109bc8fde426e3efbd34de00a5ca1682ba

Pouch的结构是比较清晰的,Pouchd如何跟kubelet、swarm、Sigma交互。在存储上跟业界一起建设了CSI标准。支持分布式存储如ceph、pangu。在网络上使用lxcfs增强隔离性,支持多种标准。

目前Pouch化覆盖了阿里的大部分BU,2017年达到百万级部署,在线业务达到100%容器化,计算任务也开始容器化,它拉平了异构平台的运维成本。覆盖运行模式,多种编程语言,DevOps体系。Pouch覆盖了阿里几乎所有业务板块如蚂蚁、交易、中间件等等。

Pouch于2017年10月10号宣布开源,11月19日正式开源,把代码放到 https://github.com/alibaba/pouch上,计划在2018年03月发布第一个大版本。我们希望通过Pouch的开源推动容器领域的发展和标准的成熟,给业界提供差异化有竞争力的技术选择。不仅方便传统IT企业利旧,老的基础设施也同样能够享受容器化带来的运维层的好处和优势,而且方便新的IT企业享受规模化稳定性和多标准兼容性带来的优势。

  f2c69c5b0a6e85e9d1764c0f99bdc350c8126166

在存储计算分离上,由于有状态任务需要复制状态,会严重影响分时复用运维自动化程度和调度效率。我们在云化过程中实现了存储计算分离技术。由于计算集群和在线服务不在一个机房,计算任务的数据需要先缓存到在线业务的集群上,所以我们搭了一个缓存桥头堡,然后进行计算。随着机房结构的调整和网络的优化,我们开始对在线计算同时进行存储计算分离。目前已经实现去桥头堡方案,不受网络长传带宽的限制,减少了大集群跨网络核心对穿流量,提升了调度的灵活性。存储计算分离技术不仅可以使用阿里盘古技术,同时也兼容业界这一套容器上的存储标准,这也是阿里实现云化架构的非常关键的技术。在网络架构的升级上,我们大规模使用25G网络,在公有云上使用VPC,overlay能云上、云下和数据集群整个网络打通,这也是阿里大规模混合部署的前提。

云化架构和双11未来技术路线

  e3ff5a0998e97b44615b4b5a4b53bfa3e26610fa

这是阿里混合云弹性架构,是基于编排的一套技术体系,也是面向动态的架构。它可以分钟级进行单元的扩容和缩容,快速在云上或大数据集群上建立交易单元,实现秒级巡检,确保交付的可靠性。这套体系能持续降低资源持有时间和服务器的非ONLINE时间,降低损耗时间,提升了弹性的效率。双11超过60%的峰值流量都跑在阿里云上,全面使用阿里云弹性基础设施,8个小时快速构建全球最大混合云。

  cc7625849982f39eac10e9bb02de68965839b2c6

这是双11云化架构运维体系介绍。将资源分为在线任务集群、计算任务集群和ECS集群。资源管理,单机运维、状况管理,命令通道、监控报警这类基础运维体系已经打通。在双11场景中,我们会在云上划出一个独立的区域与其他场景互通。在互通区域,Sigma调度可以到计算集群服务器里申请资源,生产Pouch容器,也可以到cloud open API去申请ECS,生产出容器的资源。在日常的场景中Fuxi可以到sigma里申请资源,创建需要的容器。在双11场景中,利用应用和规模化运维在容器上构建大量在线服务,包括业务层的混合部署,每个集群都有online service和有状态服务及大数据分析。阿里云的独占集群也部署了在线服务和有状态的数据服务,做到了datacenter as a computer,多个数据中心像一台计算机一样来管理,实现跨多个不同的平台来调度业务的发展所需要的资源。构建了混合云用极低的成本拿到服务器,解决有没有的问题。先有服务器规模,再通过分时复用和混合部署来大幅度提升资源利用率。真正实现了弹性资源平滑复用任务灵活混合部署,用最少的服务器最短的时间和用最优效率完成业务容量目标。通过这一套云化架构,我们在双11实现了新增IT成本降低50%,使日常IT成本下降30%,带来了集群管理和调度领域的技术价值爆发,也说明容器、编排调度技术的流行是一种必然。

  acec7755c0d4a0fd01e0ecbad73be864ddfef74e

后期我们会通过阿里云平台把内部储备的技术对外输出。这套技术是内部调度容器运维领域的优势技术,具备调度、编排、应用管理、监控、混合云的快上快下构建、弹性伸缩、混合部署的能力,同时兼容Kubernetes API,提供企业级容器应用管理能力,提高企业IT效率,进而提高企业竞争力和创新效率。混合部署和自动化混合云构建技术经过双11规模验证,成为一个非常成熟稳定的技术体系。在云上,我们和ACS 、EDAS 、EMR合作,提高了产品的完整性。

未来云化架构和双11有哪些技术的发展方向?在双11场景下利用技术解决了大促成本的问题,找到了一个正确的方向,通过长期建设和发展,有更大的优化效率的提升。未来我们希望通过云化架构提升阿里云IDC资源利用率、通过扩大调度规模和混部形态扩大效益。继续推进面向终态的体系结构和运维体系的提升,资源持有时间优化30%以上,持续降低大促的交易成本。对双11本身,成本的问题已经得到了比较好的优化,未来着手于效率的提升,减少时间和人力成本,通过双11技术变量的采集、分析、预测微观视角的剖析和数据算法驱动,用智能决策进行处理。通过数据化、智能化、人与机器智能协同指挥,提升双11准备和作战效率,减少人力投入。通过加速基础技术的迭代,在体验、效率、成本和最大吞吐能力上找到新的平衡点,为整个行业和消费者带来一个更加完美的双11。

                                                          
《2017阿里巴巴双11技术十二讲》全部讲师直播回顾&资料下载,请点击进入https://yq.aliyun.com/articles/280798


本文由云栖社区志愿者小组zengzengzeng整理,王殿进校审,编辑:刁云怡。

相关文章
|
3月前
|
存储 SQL 缓存
快手:从 Clickhouse 到 Apache Doris,实现湖仓分离向湖仓一体架构升级
快手 OLAP 系统为内外多个场景提供数据服务,每天承载近 10 亿的查询请求。原有湖仓分离架构,由离线数据湖和实时数仓组成,面临存储冗余、资源抢占、治理复杂、查询调优难等问题。通过引入 Apache Doris 湖仓一体能力,替换了 Clickhouse ,升级为湖仓一体架构,并结合 Doris 的物化视图改写能力和自动物化服务,实现高性能的数据查询以及灵活的数据治理。
快手:从 Clickhouse 到 Apache Doris,实现湖仓分离向湖仓一体架构升级
|
2月前
|
分布式计算 大数据 Serverless
云栖实录 | 开源大数据全面升级:Native 核心引擎、Serverless 化、湖仓架构引领云上大数据发展
在2024云栖大会开源大数据专场上,阿里云宣布推出实时计算Flink产品的新一代向量化流计算引擎Flash,该引擎100%兼容Apache Flink标准,性能提升5-10倍,助力企业降本增效。此外,EMR Serverless Spark产品启动商业化,提供全托管Serverless服务,性能提升300%,并支持弹性伸缩与按量付费。七猫免费小说也分享了其在云上数据仓库治理的成功实践。其次 Flink Forward Asia 2024 将于11月在上海举行,欢迎报名参加。
214 6
云栖实录 | 开源大数据全面升级:Native 核心引擎、Serverless 化、湖仓架构引领云上大数据发展
|
2月前
|
存储 消息中间件 人工智能
ApsaraMQ Serverless 能力再升级,事件驱动架构赋能 AI 应用
本文整理自2024年云栖大会阿里云智能集团高级技术专家金吉祥的演讲《ApsaraMQ Serverless 能力再升级,事件驱动架构赋能 AI 应用》。
|
2月前
|
存储 消息中间件 运维
架构升级的救星!流量回放自动化测试的必备指南
大家好,我是小米,一名29岁的技术宅。今天分享一个物联网领域的实用技能——流量回放自动化测试。系统重构后,测试工作量巨大,本文介绍如何通过日志收集和数据回放进行自动化测试,包括离线、实时和并行回放模式,帮助快速定位Bug,提升测试效率和系统稳定性。欢迎关注我的微信公众号“软件求生”,获取更多技术干货!
50 3
|
2月前
|
存储 SQL 缓存
Apache Doris 3.0 里程碑版本|存算分离架构升级、湖仓一体再进化
从 3.0 系列版本开始,Apache Doris 开始支持存算分离模式,用户可以在集群部署时选择采用存算一体模式或存算分离模式。基于云原生存算分离的架构,用户可以通过多计算集群实现查询负载间的物理隔离以及读写负载隔离,并借助对象存储或 HDFS 等低成本的共享存储系统来大幅降低存储成本。
Apache Doris 3.0 里程碑版本|存算分离架构升级、湖仓一体再进化
|
3月前
|
缓存 物联网 数据库
如何帮助我们改造升级原有架构——基于TDengine 平台
一、简介 TDengine 核心是一款高性能、集群开源、云原生的时序数据库(Time Series Database,TSDB),专为物联网IoT平台、工业互联网、电力、IT 运维等场景设计并优化,具有极强的弹性伸缩能力。同时它还带有内建的缓存、流式计算、数据订阅等系统功能,能大幅减少系统设计的复杂度,降低研发和运营成本,是一个高性能、分布式的物联网IoT、工业大数据平台。 二、TDengine 功能与组件 TDengine 社区版是一开源版本,采用的是 AGPL 许可证,它具备高效处理时序数据所需要的所有功能,包括: SQL 写入、无模式写入和通过第三方工具写入 S标准 SQL 查
83 13
|
4月前
|
安全 网络安全 网络虚拟化
优化大型企业网络架构:从核心到边缘的全面升级
大型企业在业务运作中涉及多种数据传输,涵盖办公应用、CRM/ERP系统、数据中心、云环境、物联网及安全合规等多个方面。其复杂的业务生态和全球布局要求网络架构具备高效、安全和可靠的特性。网络设计需全面考虑核心层、汇聚层和接入层的功能与冗余,同时实现内外部的有效连接,包括广域网连接、远程访问策略、云计算集成及多层次安全防护,以构建高效且可扩展的网络生态系统。
优化大型企业网络架构:从核心到边缘的全面升级
|
4月前
|
消息中间件 存储 Java
图解Kafka:Kafka架构演化与升级!
图解Kafka:Kafka架构演化与升级!
94 0
图解Kafka:Kafka架构演化与升级!
|
4月前
|
存储 缓存 Cloud Native
阿里云EMR数据湖文件系统问题之JindoFS架构升级后的问题如何解决
阿里云EMR数据湖文件系统问题之JindoFS架构升级后的问题如何解决
|
5月前
|
消息中间件 Java 测试技术
Java中的软件架构重构与升级策略
Java中的软件架构重构与升级策略