如何 0 成本启动全员 AI 技能提升?戳> 了解详情
写点什么

不断超越的调度系统:如何撑住 9 年双 11 交易峰值 800 倍增长

  • 2020-05-29
  • 本文字数:3830 字

    阅读完需:约 13 分钟

不断超越的调度系统:如何撑住9年双11交易峰值800倍增长

划重点

阿里巴巴 9 年双 11 经历下来,交易额增长了 280 倍、交易峰值增长 800 多倍、系统数呈现爆发式增长。系统在支撑双 11 过程中的复杂度和支撑难度以指数级形式上升。双 11 峰值的本质是用有限的成本最大化提升用户体验和集群吞吐能力,用合理的代价解决峰值。

本文将从阿里巴巴统一调度体系、混部架构、云化架构三个方面详解阿里是如何支撑如此庞大的系统。

统一调度体系

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



集群管理和调度系统 Sigma 架构图


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


整个架构是面向终态的设计理念,收到请求后把数据存储到持久化存储层,调度器识别调度需求分配资源位置,Slave 识别状态变化推进本地分配部署。系统整体的协调性和最终一致性非常好。我们在 2011 年开始做调度系统,2016 年用 Go 语言重写,2017 年兼容了 kubernetes API,希望结合生态的力量,共同建设和发展。

混部架构

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



阿里巴巴混合部署架构图

混部的关键技术

内核资源隔离上的关键技术

  • 在 CPU HT 资源隔离上,做了 Noise Clean 内核特性,解决在 / 离线超线程资源争抢问题。

  • 在 CPU 调度隔离上,CFS 基础上增加 Task Preempt 特性,提高在线任务调度优先级。

  • 在 CPU 缓存隔离上,通过 CAT,实现在、离线三级缓存 (LLC) 通道隔离 (Broadwell 及以上)。

  • 在内存隔离上,拥有 CGroup 隔离 /OOM 优先级;Bandwidth Control 减少离线配额实现带宽隔离。

  • 在内存弹性上,在内存不增加的情况下,提高混部效果,在线闲置时离线突破 memcg limit;需要内存时,离线及时释放。

  • 在网络 QoS 隔离上,管控打标为金牌、在线打标为银牌、离线打标为铜牌,分级保障带宽。

在线集群管理上的关键技术

  • 对应用的内存、CPU、网络、磁盘和网络 I/O 容量进行画像,知道它的特征、资源规格需求,不同的时间对资源真实使用情况,然后对整体规格和时间进行相关性分析,进行整体调度优化。

  • 亲和互斥和任务优先级的分配,哪种应用放在一起使整体计算能力比较少、吞吐能力比较高,这是存在一定亲和性。

  • 不同的场景有不同的策略,双 11 的策略是稳定优先,稳定性优先代表采用平铺策略,把所有的资源用尽,让资源层全部达到最低水位。日常场景需要利用率优先,“利用率优先” 指让已经用掉的资源达到最高水位,空出大量完整资源做规模化的计算。

  • 应用做到自动收缩、垂直伸缩、分时复用。

  • 整个站点的快速扩容缩容,弹性内存技术等。



混合部署-引入计算任务提升日常资源效率


混合部署指将计算任务引入在线服务集群以提升日常资源效率。把离线任务引入后,CPU 平均利用率从 10% 上升到 40% 以上,同时时延敏感类服务的延迟影响小于 5%,属于完全可接受范围。目前我们整个混部集群已达到数千台的规模,经过了交易核心链路双 11 大促的验证。这项优化可以为日常节省超过 30% 的服务器。今年会扩大 10 倍的部署规模,取得规模化收益。



混合部署-分时复用进一步提升资源效率


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

PouchContainer 容器和容器化的进展

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


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



PouchContainer 定位


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



PouchContainer 架构图


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


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


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


PouchContainer 开源地址(点击阅读原文查看):https://github.com/alibaba/pouch

云化架构


双 11 云化架构运维体系

云化架构运维体系

将集群分为在线任务集群、计算任务集群和 ECS 集群。资源管理,单机运维、状况管理,命令通道、监控报警这类基础运维体系已经打通。在双 11 场景中,我们会在云上划出一个独立的区域与其他场景互通。在互通区域,Sigma 调度可以到计算集群服务器里申请资源,生产 Pouch 容器,也可以到 cloud open API 去申请 ECS,生产出容器的资源。在日常的场景中 Fuxi 可以到 sigma 里申请资源,创建需要的容器。


在双 11 场景中,利用规模化运维系统在容器上构建大量在线服务,包括业务层的混合部署,每个集群都有 online service 和有状态服务及大数据分析。阿里云的独占集群也部署了在线服务和有状态的数据服务,做到了 datacenter as a computer,多个数据中心像一台计算机一样来管理,实现跨多个不同的平台来调度业务的发展所需要的资源。构建了混合云用极低的成本拿到服务器,解决有没有的问题。


先有服务器规模,再通过分时复用和混合部署来大幅度提升资源利用率。真正实现了弹性资源平滑复用任务灵活混合部署,用最少的服务器最短的时间和用最优效率完成业务容量目标。通过这一套云化架构,我们在双 11 实现了新增 IT 成本降低 50%,使日常 IT 成本下降 30%,带来了集群管理和调度领域的技术价值爆发,也说明容器、编排调度技术的流行是一种必然。


阿里调度系统团队,致力于打造全球效率最优的调度和集群管理系统,通过企业级容器和容器平台建设最优云化解决方案。期待和业界同仁一起努力,降低整个行业的 IT 成本,加速企业的创新发展。




本文作者:调度系统负责人叔同(丁宇)


叔同(丁宇),阿里巴巴资深技术专家,8 次参与双 11 作战,阿里高可用架构、双 11 稳定性负责人,阿里容器、调度、集群管理、运维技术负责人。


阿里巴巴调度系统团队为阿里巴巴经济体提供调度、容器和集群管理基础设施,推动阿里巴巴全面云化效率成本最优,为阿里经济体和云业务提供充足的技术竞争力。致力于打造全球领先、效率最优的调度集群管理系统和高效稳定的企业级富容器引擎。


Pouch 容器团队为阿里巴巴经济体提供基础设施领域的容器技术,帮助阿里巴巴全面实现业务容器化,打好集团“云化”战略坚实的基础。团队致力于打造全球领先、高效稳定的企业级富容器引擎。


2020-05-29 15:28933

评论

发布
暂无评论
发现更多内容

揭秘YouTube 的环境模式发光效果

汽车之家客户端前端团队

CSS youtube

让大数据平台数据安全可见-行云管家

行云管家

大数据 数字化 数据安全 大数据平台

隐语小课|两方安全计算 ABY2.0 高效的 2PC 协议

隐语SecretFlow

大数据 AI 数据安全 隐私计算 开源社区

站在源码的角度看多人语音厅房间系统

山东布谷网络科技

直播源码

超越界限:大模型应用领域扩展,探索文本分类、文本匹配、信息抽取和性格测试等多领域应用

汀丶人工智能

信息抽取 自然语言模型 大语言模型 ChatGLM-6B 文本匹配

华为云数智新消费创新峰会2023,我们在这里!

云智慧AIOps社区

人工智能 运维 大模型 GPT

开发者必看:深度解读隐语密态计算设备 SPU

隐语SecretFlow

大数据 AI 隐私计算 开源社区 密态计算

用友发布《大型企业项目数智化转型白皮书》

用友BIP

如何优雅的给柯里化函数添加类型标注

汽车之家客户端前端团队

函数柯里化

SUI 将通过 SUI Foundation 资助 Footprint Analytics 解析其公链数据,为生态系统提供支持

Footprint Analytics

区块链 公链

如何维护大型 Next.js 应用程序

汽车之家客户端前端团队

next

企业网络安全守护神-行云管家堡垒机!

行云管家

运维 网络安全 数字化 堡垒机

中国人民大学周禹教授:数智人本主义-人力资源数智化驱动有质量增长

用友BIP

阿里云 X 森马 AIGC T恤设计大赛开启! 穿什么由你定,赢Airpods,作品定制联名T恤

Serverless Devs

阿里云 Serverless 云原生

zone.js由入门到放弃之一——通过一场游戏认识zone.js

OpenTiny社区

前端 js

区块链上地址与银行账户有什么区别?

BSN研习社

支付宝小程序云效能:四大基于小程序生态的解决方案

TRaaS

隐私计算技术|私有信息检索(PIR)及其应用场景

隐语SecretFlow

大数据 AI 隐私计算 开源社区 私有信息检索

大型集团企业数据治理方案,以“应用驱动”的数据治理策略 | 行业方案

袋鼠云数栈

大数据 数字化转型

万字详解云计算中的云网络技术

华为云开发者联盟

云计算 后端 华为云 华为云开发者联盟 企业号 8 月 PK 榜

亚信科技AntDB数据库通过GB 18030-2022最高实现级别认证,荣膺首批通过该认证的产品之列

亚信AntDB数据库

数据库 AntDB AntDB数据库 企业号 8 月 PK 榜

如何将IP定位SDK添加到您的 Android 应用程序

郑州埃文科技

软件 sdk

阿里云故障洞察提效50%,全栈可观测建设有哪些技术要点?

TakinTalks稳定性社区

开箱即用!教你如何正确使用华为云CodeArts PerfTest!

云计算 软件开发 性能测试 华为云

干货分享|可证明安全的隐私计算

隐语SecretFlow

大数据 AI 安全 隐私保护 隐私计算

不断超越的调度系统:如何撑住9年双11交易峰值800倍增长_文化 & 方法_技术琐话_InfoQ精选文章