【AICon】AI 基础设施、LLM运维、大模型训练与推理,一场会议,全方位涵盖! >>> 了解详情
写点什么

不断超越的调度系统:如何撑住 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:28566

评论

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

设计一个百万级的消息推送系统,mybatis技术原理

Java 程序员 后端

诡异的Redis数据库内存,空间很大,内存使用还是不理想

Java 程序员 后端

架构实战营第二模块总结

小何

Vue进阶(幺伍柒):Form 表单重置失败问题解决

No Silver Bullet

Vue 10月月更

模块二作业

沐风

“元宇宙”火出圈,不仅是区块链与科技圈,小说里也出现了

区块链日报

区块链 人工智能 facebook vr 元宇宙

详解:Java的重写方法与示例,用22天总结了一份完美的SQL学习笔记

Java 程序员 后端

五分钟搞懂缓存

俞凡

架构

区块链日报网元宇宙频道正式上线

区块链日报

10个人9个答错,另外1个只对一半:数据库的锁(1)

Java 程序员 后端

架构实战训练营模块二

人生就是梦

架构实战营

模块2-朋友圈的架构设计

Geek_cb2b43

计算机网络物理层,Java开发工程师笔试题目

Java 程序员 后端

说一下 jvm 有哪些垃圾回收器?,kalilinux渗透教程百度云

Java 程序员 后端

职场高效协作手册

刘华Kenneth

效率 职场 沟通

最新!阿里发布第四版Spring Cloud Alibaba全彩版手册

Java 架构 面试 微服务 阿里

计算机网络学习笔记第一章(概述) 超详细整理,springboot注解的工作原理

Java 程序员 后端

读Java虚拟机类加载引发的血案,阿里P8大牛手把手教你

Java 程序员 后端

架构实战营课程总结

子豪sirius

架构实战营

详解SpringBoot(2,java入门视频教学

Java 程序员 后端

10个人9个答错,另外1个只对一半:数据库的锁

Java 程序员 后端

计算机系统可靠性分析评测技术【全讲解】,深入理解linux内核百度网盘

Java 程序员 后端

说一下 jvm 有哪些垃圾回收器?(1),java异常面试题

Java 程序员 后端

微信朋友圈高性能复杂度分析

小何

架构实战营

SpringCloud+Boot2+Docker+ES打造45K+Star的微服务项目,附教程

Java 程序员 Spring Cloud

1000页神仙文档,连阿里P8面试官都说太详细了,面面俱到!搞懂这些直接P6+

Java 程序员 后端

与 Python 之父聊天:更快的 Python!

Python猫

Python

话不多说直接上才艺“来吧!展示,【高级Java架构师系统学习

Java 程序员 后端

说到分布式,重要的Paxos算法你看透了么?,简述mybatis工作原理

Java 程序员 后端

100道 IT名企前端面试真题(1),java面试中经常被问到的问题

Java 程序员 后端

100道 IT名企前端面试真题,【面试必备】

Java 程序员 后端

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