“双11”核武器——全链路压测详解

本文涉及的产品
性能测试 PTS,5000VUM额度
简介: 2017年12月20日阿里巴巴中间件产品专家丁杰在云栖大会北京峰会上做了《全链路压测的云上探索——基于PTS的全链路压测产品化之路》的技术分享。面对“双11”购物狂欢节的流量洪峰,用户畅爽的购物体验背后是阿里稳定的系统保障做支撑。

以下是精彩视频内容整理:

“双11”对于阿里而言是一场保障系统稳定性的实战。用有限的成本实现最大化的集群整体吞吐能力,带给用户畅爽的极致购物体验,这依靠阿里多年技术沉淀下来的一套高可用架构基础设施,也就是阿里系统稳定性保障的“核武器”——全链路压测。它的重要作用不仅体现在“双11”购物狂欢节,而且横向拓展到高德,优酷,钉钉等非电商的应用形态。

全链路压测平台由阿里巴巴中间件技术部高可用架构团队提供,该团队同时负责包括容量规划、准入控制、限流降级、流量调度、弹性伸缩等高可用架构的基础设施,主导的同城容灾、异地多活、单元化体系建设支撑阿里巴巴电商链路的分钟级故障切换和业务稳定运行。

 全链路压测在阿里

6894c8dce3f831212fe0e763bc218fbf1b709e53

企业高可用架构涉及线上管控,故障演练,异地多活,全链路压测。与全链路压测相关的有容量规划,弹性伸缩和线上压测。

阿里的运维体系横向分了规模化、稳定性、监控、变更和资源五部分,全链路压测所处位置在稳定性部分。

15ecd01ad87af05a9eab11f32b1bfcc67aebe30d

分布式服务化复杂的线上环境包括CDN、网关、负载均衡、分布式页面系统等,技术生态十分丰富,在这样的环境下任意节点都可能成为瓶颈、出现短板、暴露问题。以阿里“双11”活动为例,从2009年到2017年业务增长呈指数型增长趋势,这使得系统的可用性面临更加严峻的挑战。

3b31ede00f0697f39d571f6ee49440952852928e

一些小而美的中小企业面临的挑战会更加夸张。像系统容量、基础技术设施瓶颈、中间件瓶颈、业务性能以及系统之间依赖的影响等众多因素都缺乏有效的验证手段。

 2013年以前没有全链路压测,重大活动保障时对业务目标进行拆分,在做单个系统的容量规划时,所有的依赖环节能力是无限的;然而实际发生流量洪峰的时候,很多后端系统流量过不去,带来了零点秒杀时候被限流这种不好的用户体验。

a26948f455e48b146456fef38d10936b2f491a46

全链路压测平台,作为大促稳定性最重要的“核武器”,经过2013年到现在5年的沉淀,已经承载了阿里生态里几乎所有业务线,而且用来重点保障“618”、“双11”、“双12”等重大活动的高稳定性。全链路压测平台每年承载整个阿里生态内全/单链路的压测数在10000次以上,每年“双11”单个项目上通过全链路压测识别到的全局各种性能瓶颈问题均在400个以上。

 全链路压测的价值不止于满足业务带来的挑战,更在成本方面带来极大的收益。一方面是节约机器成本,另一方面是人力成本:

1.机器成本,不同业务形态需要的容量配比不同,业务行为对不同模块的挑战不一样,通过全链路压测找到短板,把系统水位拉平,用最少的机器承载业务模型。

2.人力成本,全链路压测之前,几百个系统从夏季甚至春节过后就开始准备“双11”的技术优化,全链路压测之后,通过压测动态调整资源,做到“变压边弹”,既省时省力,又更加精准。

 全链路压测和PTS

03b52678d0344b8f3b604063baf23e0b123f8d79

上图是全链路压测整体方案架构图。压测数据,压测场景,压测执行是给施压人员提供的交互页面,通过场景编排,流量构造去做压测前期准备。通过任务下发,部署于全球各地的CDN节点可以最大程度模拟用户场景真实性。通过EDAS 、ARMS 监控,快速帮客户识别到性能问题,找出调用链路问题所在,生成压测数据性能报告。

31931171d333ec55dcece6c317b08db9361f5baf

全链路压测是一个模拟线上环境的完整闭环,由5大核心要素组成:

1.压测环境:对应用户真实的线上环境,具备数据与流量隔离能力的生产环境;

2.压测基础数据:构造满足大促场景的核心基础相关数据(如买家,卖家,商品信息),影子库里构造相同量级的数据;

3.压测流量(模型、数据):成百上千的接口组合,到复杂的接口之间的参数传递,复杂的条件判断来构造精准的全局流量模型,和真实业务情况保持一致;

4.流量发起:模拟全国各地真实的用户请求访问,探测站点能力;

5.问题定位:多维度的监控和报表,服务端可通过其他生态产品协助定位。

ff55c4de9b4e6feca2ab3b34737bea4aeefc00e9

全链路压测闭环中主要体现三种能力,分别是:

1.翻译构造能力:便捷的构造全局业务场景和流量数据的能力。不需要编码,直接通过页面拖拽操作就可以完成场景构造。

2.模拟掌控能力:最大程度还原真实用户发起流量的能力,压测过程流量发起节点是全国CDN。压测过程中的问题无法预知,目标量级内随便调节每条链路并发或TPS能力,且极低误差,上千万TPS情况下做到1QPS误差。

3.展现定位能力:客户侧的体验级监控,报表提供能力,服务端快捷的定位能力。

ca9d5bc8931923b219920ec0392821d231169b1d

上图为典型电商场景测试实景图,纯界面化卡片拖拽编排业务模型。抽象出链路的最小单位,应对于大家理解的API,接口,URL……进而抽象出一批指令(比如思考时间、集合点、条件跳转、cookie存取、全局准备、并发用户限制等),链路配合指令就能模拟全局用户行为。后续会做更业务化的封装/数据工厂,降低理解成本,未来运维同学自己就可以完成产品编排。

 全链路压测面临的新挑战

随着全链路压测在阿里生态体系内和业界其它公司的实践,有一些问题开始凸显:

1.对内对外对架构有不同要求。

2.并发还是PTS。金融、保险、传统制造类、互联网公司与阿里对并发的理解不同。阿里衡量系统性能时倾向于TPS,也就是1秒处理多少笔。

3.理解成本是否可以继续降低。更好的将行业里的固定形态业务进行封装。

4.计费问题。当深度封装使应用性提高到一定程度的时候计费就变成了偏底层的指标,中间的转化对产品和账单体系、监控报表上提出了很大的挑战。



本文由云栖社区志愿者小组naturally整理,毛鹤审校。编辑:郭雪梅。

相关实践学习
通过性能测试PTS对云服务器ECS进行规格选择与性能压测
本文为您介绍如何利用性能测试PTS对云服务器ECS进行规格选择与性能压测。
目录
相关文章
|
7月前
|
负载均衡 NoSQL 关系型数据库
性能基础之全链路压测知识整理
【2月更文挑战第16天】性能基础之全链路压测知识整理
321 11
|
7月前
|
存储 缓存 中间件
高可用之全链路压测
【2月更文挑战第30天】全链路压测是提升系统可用性的关键方法,它模拟真实流量和业务场景在生产环境中测试,确保性能、容量和稳定性。
|
监控 测试技术 UED
《云上业务稳定性保障实践白皮书》——五.行业客户稳定性保障实践——5.3 平台网站业务稳定性保障——5.3.2 全链路压测与容量评估(1)
《云上业务稳定性保障实践白皮书》——五.行业客户稳定性保障实践——5.3 平台网站业务稳定性保障——5.3.2 全链路压测与容量评估(1)
304 0
|
域名解析 网络协议 数据可视化
《云上业务稳定性保障实践白皮书》——五.行业客户稳定性保障实践——5.3 平台网站业务稳定性保障——5.3.2 全链路压测与容量评估(2)
《云上业务稳定性保障实践白皮书》——五.行业客户稳定性保障实践——5.3 平台网站业务稳定性保障——5.3.2 全链路压测与容量评估(2)
215 0
|
SQL 监控 关系型数据库
《云上业务稳定性保障实践白皮书》——五.行业客户稳定性保障实践——5.3 平台网站业务稳定性保障——5.3.2 全链路压测与容量评估(3)
《云上业务稳定性保障实践白皮书》——五.行业客户稳定性保障实践——5.3 平台网站业务稳定性保障——5.3.2 全链路压测与容量评估(3)
207 0
|
数据可视化 测试技术 定位技术
全链路压测(14):生产全链路压测SOP
从实践经验的角度出发,生产全链路压测在技术实现上没有太多新花样,但要在不同的业务和企业落地,就各有各的实践路径。对于没有太多经验的同学来说,全链路压测的落地,大多还是基于个人的经验和熟悉的领域,即都是在局部作战,缺乏全局的视角和可视化地图。从全局来讲,缺少适用于自己的全链路压测最佳实践。
全链路压测(14):生产全链路压测SOP
|
存储 SQL 缓存
全链路压测(13):高可用和性能优化
业务场景复杂化、海量数据冲击下,发现并解决业务系统的可用性、扩展性以及容错性问题。
全链路压测(13):高可用和性能优化
|
2月前
|
测试技术 持续交付 Apache
Python性能测试新风尚:JMeter遇上Locust,性能分析不再难🧐
【10月更文挑战第1天】Python性能测试新风尚:JMeter遇上Locust,性能分析不再难🧐
169 3
|
3月前
|
测试技术 数据库 UED
Python 性能测试进阶之路:JMeter 与 Locust 的强强联合,解锁性能极限
【9月更文挑战第9天】在数字化时代,确保软件系统在高并发场景下的稳定性至关重要。Python 为此提供了丰富的性能测试工具,如 JMeter 和 Locust。JMeter 可模拟复杂请求场景,而 Locust 则能更灵活地模拟真实用户行为。结合两者优势,可全面评估系统性能并优化瓶颈。例如,在电商网站促销期间,通过 JMeter 模拟大量登录请求并用 Locust 模拟用户浏览和购物行为,可有效识别并解决性能问题,从而提升系统稳定性和用户体验。这种组合为性能测试开辟了新道路,助力应对复杂挑战。
124 2
|
1月前
|
测试技术 持续交付 Apache
Python性能测试新风尚:JMeter遇上Locust,性能分析不再难🧐
Python性能测试新风尚:JMeter遇上Locust,性能分析不再难🧐
79 3

热门文章

最新文章