【双11背后的技术】17.5W秒级交易峰值下的混合云弹性架构之路

简介: 前言 每年的双11都是一个全球狂欢的节日,随着每年交易逐年创造奇迹的背后,按照传统的方式,我们的成本也在逐年上升。双11当天的秒级交易峰值平时的近10多倍,我们要用3-4倍的机器去支撑。但大促过后这批机器的资源利用率不高,到次年的双11会形成较长时间的低效运行。试想一下,电商交易有大促峰值,而

选自《不一样的技术创新——阿里巴巴2016双11背后的技术》,全书目录:https://yq.aliyun.com/articles/68637


前言


每年的双11都是一个全球狂欢的节日,随着每年交易逐年创造奇迹的背后,按照传统的方式,我们的成本也在逐年上升。双11当天的秒级交易峰值平时的近10多倍,我们要用3-4倍的机器去支撑。但大促过后这批机器的资源利用率不高,到次年的双11会形成较长时间的低效运行。试想一下,电商交易有大促峰值,而阿里云有售卖Buffer,如果能充分发挥云计算的弹性能力,让资源可以两边快速腾挪,就可以解决资源浪费的问题了。把我们的交易单元可以部署在云上面,那么大促的时候我们只需要按照压测模型去云上构建一个符合能力的新单元即可,用完马上释放掉,这样无疑是最优雅的。专有云+公共云 的混合云弹性架构成为一种自然而然的选择,不但可以资源合理利用,降低成本,同时也锻炼了阿里人的的技术能力,为用户提供更优质的服务。

有了架构思路,实现起来似乎也没那么容易。阿里的交易涉及几百个系统,他们之间的依赖错综复杂,如果能够把他们快速的搭建在云上?这次系统之间的依赖如何复杂,如果把他们的容量估算好,快速调整他们的容量水位?这就不得不提到下面的两个秘密武器了:一键建站和弹性容量交付

1.一键建站

1.1背景

一键建站是在底层基础设施交付的基础上,快速地在一个空机房部署交易单元,使新机房迅速具备对外提供服务的能力。一键建站的逆过程叫一键下站,即迅速切除单元流量,释放所有单元内应用的物理资源。

从架构的层面看,一键建站的基础是阿里电商体系的异地多活。从运维的角度看,一键建站是运维产品的升华,更是运维效率的核心体现。

一键建站第一次被提出是在2014年,但由于系统多,依赖复杂,加上中间件的复杂性,当时新建一个单元需要耗时近1个月的时间,更是需要所有单元链路上的运维同学参与。去年,DB实现了一次完整意义上的一键建站,中间件的建站实现了半自动化,但是应用的建站过程仍需要很多运维同学的支持。今年,一键建站进行了重构,并提出一天(8小时)一单元的目标,在几乎不用运维同学参与的情况下,顺利支持了3个云单元的建站工作,最快一次耗时6小时建站。

1.2挑战

今年的双11单元架构是三地五单元,一中心四单元,也是第一次遇到同机房两单元。如何控制单元内的链路封闭,单元与单元、单元与中心的同步与可见性,是异地多活的大挑战,也是一键建站的难点。

首先需要明确单元内部署什么。建站需要维护一份知识库,包括单元的数据库,中间件,统一接入,以及导购、商品、店铺、交易、会员等一百多个应用。需要知道每个产品的服务器配置,软件配件,容量需求,甚至是应用间链路依赖等相关信息。这份知识库会跟随日常运维操作,调用链路日志等不断更新。同时,一个完整单元不仅仅包含线上环境,还需包含预发环境与小流量(测试环境),每套环境都有自己的一份知识库。

其次是需要明确部署的每个步骤实现。单元内的每个产品,都需要明确部署的操作细节,以及产品之间的前后依赖。今年,一键建站第一次在云上实施,面对全新的服务器资源(ecs),全新的网络资源(slb)以及全新的部署方式(docker)等,每个环节都需要技术落地。由此可见,一键建站是一个庞大的系统,几乎涉及所有的运维产品。

在明确了建站数据与建站步骤的基础上,还需要有一套技术实现能将单元内所有产品相关的近四千个部署步骤串联起来,这就是建站系统。追求建站效率的同时,安全始终要铭记于心。建站的每个步骤,都需要考虑可能出现的突发情况以及应对策略。

1.3技术架构

一键建站是一个体系的构建,是要在原有运维产品的基础上进行升华,将相关产品的原子性服务联动起来,最终凝聚成一个按钮。

一键建站涉及的单元产品种类繁多,相关操作保罗万象,而且变化极为频繁。如果为每类产品写死操作流程,那建站只会疲于代码,即使完成了代码,也只会是一次性的玩物。因此建站需要更多的考虑灵活性,在最终的技术实现上,将系统架构分为四个层次,原子服务、功能组件、组件编排以及流程调度。系统架构如下图:

75511610bacacd58838c1fc0ab5e8b4373bb77a9

1.4原子服务

建站平台的能力来源于周边的运维产品,接入相关系统的服务,将最小粒度的一次服务调用称为一个原子操作。服务网关包装一系列原子操作,以提供上层业务调用。

作为唯一的外部系统调用入口,服务网关还需要做统一的日志记录,业务链路跟踪以及故障告警等。

对建站平台的效率要求,很大一部分最终会落在外部系统服务上。最具代表性的是服务器资源申请与docker镜像,这两条链路的背后,凝聚着很多人努力的心血。

1.5功能组件

功能组件,是将相关的原子服务进行整合,从而形成的一个个有业务含义的独立功能模块。比如创建服务器、添加帐号、创建vip、docker upgrade、应用启动、更新hsf路由等等,将近百个原子服务最终聚合成三四十个功能组件。组件的实现需要能保证幂等。

功能组件需要遵循一定的规范,从而使得同一组件能被不同的应用,不同的流程复用。

1.6组件编排

组件编排是建站灵活性的核心。建站平台支持在web页面动态编排功能组件,从而组装成一个个可以运行的流程。单元内的每类中间件或应用都可能存在部署上的差异,通过服务编排,使每一类产品都能对应到一类流程。

建站需要涉及整套中间件以及一百多个单元应用,这些产品在部署启动上还存在先后链路依赖。去除弱依赖,将单元产品依赖描述成一张无环有向图,每个节点代表一个产品的部署流程。将整张图描述成一个流程,这个流程就是建站流程!

1.7流程调度

流程调度是建站稳定性的有力保障。流程调度负责建站流程的分布式执行,是流程引擎的一个实现,至少需要达到下述几点要求:

1. 高可用。服务器宕机不能影响流程执行;

2. 系统容错。下游系统异常诊断,自动重试;

3. 并发访问控制。流程节点不应该同时在多台服务器被调度;

在结构上,流程调度可以分为流程实例管控、任务队列、任务调度、组件执行器与分布式协同组件等。每个节点按照自身的负载情况加载流程实例到本地任务队列,组件执行器负责每个组件的入參注入,出參收集以及反射调用,分布式协同保障同一时刻仅有一个节点在调度流程实例。

一键建站流程是一个包含众多子流程的嵌套流程结构,建站时,流程调度需要同时执行上千个流程。

 

一键建站只是完成了最小单元的建站工作,如果想让这个单元支撑好大促的流量,还需要对这个单元进行容量评估和扩容,如何快速的评估各个应用的容量并自动扩容呢?这时就需要弹性容量交付出场了。

2弹性容量交付

043366f2c38dc67ee1d7c63fe11d1ddf7bac2fb5



今年弹性技术在实时容量评估算法上作了一定的改良,期初主要出于提升效率,最大程度地降低实施成本,与保障集群稳定性的目的: 更加智能,使用在线机器学习实时测算应用性能变化,并可作出简单的故障原因分析, 通过算法对各个单元的应用集群进行自然水位拉平.

1.如何用机器在无人介入的情况下,预测应用集群各个单元的性能;需要做很多事情:日常性能变化测量;应用发布性能变化测量;集群中单机的性能变化预测,与目标交易量下会有多少比例机器挂掉的预测,容量问题还是性能问题的判断等等等等。

2.为支持XX笔交易的业务目标,需要多少资源;或者说,现有XX些资源,最高可以支撑多高的交易量?

3.一个应用集群在什么样的物理资源利用率下稳定性与成本会是一个最佳配比?

 4.资源预算.

 

    我们先简单以一个在线web服务类应用进行分析,在线电商每天的流量波动与资源利用率是存在一定的关系的(当然也可以换成其它指标进行测算),我们将两项指标叠加,呈散点图形态


 042e77f76d86e6db581407d77de64b1cee5cbfcc

    现在假设,我们设定资源利用率阀值为70%的cpu利用率,预测该应用集群的服务能力,我们利用上面呈现的散点图做一次拟合,延长趋势线,呈以下形态:


5b87e1b5b5b2dfcd6db095c6ee47c593901731e0



      则求出,该应用极限能力在X%的资源利用率下的服务能力大致是Y.

 但实际场景中,情况要复杂得多,在不同压力下,随着物理机的利用率整体饱和度的上升,性能会有一定的损耗,将不同压力下测算的服务能力记录,并作一次回归,预测出目标压力下,大致损耗度,并用刚才计算好的服务能力减去目标压力下的损耗度即可,

     哪下一个问题来了,应用集群的资源利用率多少为极限值?这里只是一个假定,每个应用集群的极限能力都不相同; 首先前文已经提到,由于各个应用集群布署的物理机坑位不同,有可能超卖,也有可能会与资源占用多的应用布署在同一个物理核内,超线程会带来一定的影响,而一个物理核通常分为两个逻辑核,是否一个物理核的总能力/2则为两项占用该物理核逻辑核上的能力;假定100%的资源利用率为满负荷,则两个逻辑核各分50%的能力相对合理? 

     但实际情况是,占用两个逻辑核的应用集群利用率,在容量层次不齐的宏观情况下,有的偏高,有的偏低,这就会出现资源抢占问题。

    如何识别某项应用集群合理的资源利用率是多少? 我们需要做一些事情,即除了对整个应用集群作上文中讲到的资源测算,还需要对每台单机作能力测算,这里我们随便拟定一个值,如单机负载如果超过80%是不可承受的,则我们在整体全链路压测时,会对每台单机做实时的负载预测,看在目标交易量下,多少比例的机器会超过最大的承受能力,该集群的总qps会有出现多少比例的损耗。 这里假定我们认为不允许有机器出现这样的情况,则当某台机器预测值达到最大承受能力时,则认为当前集群能力的合理负载应该在多少。

 根据上文的描述,我们可以直接拿到测算好的各个应用集群的容量配比进行在线备容即可.通过后续每次的压测,对各个应用集群的预期资源利用率进行逐步逼近,最终达到整体备容目标.

正因为有了以上两个秘密武器,我们在双11之前就快速的做好了容量准备,同时双11一过,我们立刻对云资源进行一键下站,把资源归还到云的Buffer里,对公共云进行售卖。


更多文章:https://102.alibaba.com/newsInfo.htm?newsId=28

目录
打赏
0
0
0
0
1167
分享
相关文章
数据中台架构与技术体系
本文介绍了数据中台的整体架构设计,涵盖数据采集、存储、计算、服务及治理等多个层面。在数据采集层,通过实时与离线方式整合多类型数据源;存储层采用分层策略,包括原始层、清洗层、服务层和归档层,满足不同访问频率需求;计算层提供批处理、流处理、交互式分析和AI计算能力,支持多样化业务场景。数据服务层封装数据为标准化API,实现灵活调用,同时强调数据治理与安全,确保元数据管理、质量监控、权限控制及加密措施到位,助力企业构建高效、合规的数据管理体系。
MCP与A2A协议比较:人工智能系统互联与协作的技术基础架构
本文深入解析了人工智能领域的两项关键基础设施协议:模型上下文协议(MCP)与代理对代理协议(A2A)。MCP由Anthropic开发,专注于标准化AI模型与外部工具和数据源的连接,降低系统集成复杂度;A2A由Google发布,旨在实现不同AI代理间的跨平台协作。两者虽有相似之处,但在设计目标与应用场景上互为补充。文章通过具体示例分析了两种协议的技术差异及适用场景,并探讨了其在企业工作流自动化、医疗信息系统和软件工程中的应用。最后,文章强调了整合MCP与A2A构建协同AI系统架构的重要性,为未来AI技术生态系统的演进提供了方向。
173 4
阿里云SLB深度解析:从流量分发到架构优化的技术实践
本文深入探讨了阿里云负载均衡服务(SLB)的核心技术与应用场景,从流量分配到架构创新全面解析其价值。SLB不仅是简单的流量分发工具,更是支撑高并发、保障系统稳定性的智能中枢。文章涵盖四层与七层负载均衡原理、弹性伸缩引擎、智能DNS解析等核心技术,并结合电商大促、微服务灰度发布等实战场景提供实施指南。同时,针对性能调优与安全防护,分享连接复用优化、DDoS防御及零信任架构集成的实践经验,助力企业构建面向未来的弹性架构。
149 76
基于Transformer架构的时间序列数据去噪技术研究
本文介绍了一种基于Transformer架构的时间序列去噪模型。通过生成合成数据训练,模型在不同噪声条件下展现出强去噪能力。文章详细解析了Transformer的输入嵌入、位置编码、自注意力机制及前馈网络等关键组件,并分析实验结果与注意力权重分布。研究为特定任务的模型优化和专业去噪模型开发奠定了基础。
70 14
基于Transformer架构的时间序列数据去噪技术研究
深入解析Tiktokenizer:大语言模型中核心分词技术的原理与架构
Tiktokenizer 是一款现代分词工具,旨在高效、智能地将文本转换为机器可处理的离散单元(token)。它不仅超越了传统的空格分割和正则表达式匹配方法,还结合了上下文感知能力,适应复杂语言结构。Tiktokenizer 的核心特性包括自适应 token 分割、高效编码能力和出色的可扩展性,使其适用于从聊天机器人到大规模文本分析等多种应用场景。通过模块化设计,Tiktokenizer 确保了代码的可重用性和维护性,并在分词精度、处理效率和灵活性方面表现出色。此外,它支持多语言处理、表情符号识别和领域特定文本处理,能够应对各种复杂的文本输入需求。
152 6
深入解析Tiktokenizer:大语言模型中核心分词技术的原理与架构
RT-DETR改进策略【模型轻量化】| MoblieNetV3:基于搜索技术和新颖架构设计的轻量型网络模型
RT-DETR改进策略【模型轻量化】| MoblieNetV3:基于搜索技术和新颖架构设计的轻量型网络模型
74 4
RT-DETR改进策略【模型轻量化】| MoblieNetV3:基于搜索技术和新颖架构设计的轻量型网络模型
YOLOv11改进策略【模型轻量化】| MoblieNetV3:基于搜索技术和新颖架构设计的轻量型网络模型
YOLOv11改进策略【模型轻量化】| MoblieNetV3:基于搜索技术和新颖架构设计的轻量型网络模型
275 10
YOLOv11改进策略【模型轻量化】| MoblieNetV3:基于搜索技术和新颖架构设计的轻量型网络模型
DeepSeek背后的技术基石:DeepSeekMoE基于专家混合系统的大规模语言模型架构
DeepSeekMoE是一种创新的大规模语言模型架构,融合了专家混合系统(MoE)、多头潜在注意力机制(MLA)和RMSNorm归一化。通过专家共享、动态路由和潜在变量缓存技术,DeepSeekMoE在保持性能的同时,将计算开销降低了40%,显著提升了训练和推理效率。该模型在语言建模、机器翻译和长文本处理等任务中表现出色,具备广泛的应用前景,特别是在计算资源受限的场景下。
653 29
DeepSeek背后的技术基石:DeepSeekMoE基于专家混合系统的大规模语言模型架构
十大主流联邦学习框架:技术特性、架构分析与对比研究
联邦学习(FL)是保障数据隐私的分布式模型训练关键技术。业界开发了多种开源和商业框架,如TensorFlow Federated、PySyft、NVFlare、FATE、Flower等,支持模型训练、数据安全、通信协议等功能。这些框架在灵活性、易用性、安全性和扩展性方面各有特色,适用于不同应用场景。选择合适的框架需综合考虑开源与商业、数据分区支持、安全性、易用性和技术生态集成等因素。联邦学习已在医疗、金融等领域广泛应用,选择适配具体需求的框架对实现最优模型性能至关重要。
808 79
十大主流联邦学习框架:技术特性、架构分析与对比研究
社交软件红包技术解密(六):微信红包系统的存储层架构演进实践
微信红包本质是小额资金在用户帐户流转,有发、抢、拆三大步骤。在这个过程中对事务有高要求,所以订单最终要基于传统的RDBMS,这方面是它的强项,最终订单的存储使用互联网行业最通用的MySQL数据库。支持事务、成熟稳定,我们的团队在MySQL上有长期技术积累。但是传统数据库的扩展性有局限,需要通过架构解决。
93 18