行业分析
性能压测面对大规模分布式系统的挑战
首先介绍一下性能压测面对大规模分布式系统的挑战,以前传统单体应用可以在线下搭建1:1的性能环境,通过线下性能环境压测结果来评估生产环境的性能容量。现在面对越来越复杂的大规模分布式系统。以往线下性能环境压测方案越来越不可行,主要面临如下挑战:
成本高:顺丰以往每年高峰压测都会投入几百台物理机资源用于搭建线下性能压测环境,硬件成本达到千万级别,耗费巨大;并且还不能满足生产的容量规模,各个系统只能轮流使用压测资源;
容量评估难:线下性能环境在设备配置和设备规模很难与生产保持一致,导致性能环境很难按1:1比例模拟生产环境,与生产环境的容量水位难以保持一致,很难评估出生产环境的真实容量;
问题定位难:越来越复杂的应用调用拓扑,系统问题定位越来越难,缺少链路自动追踪分析工具快速定位;
效果验证难:由于传统线下性能环境很难完全复原线上生产环境,在大规模分布式系统场景下,性能环境很难发现生产环境全部性能隐患,从而引发业务雪崩,对高峰(双十一)业务造成影响;
物流行业高峰保障挑战
每年双十一电商购物节,各大电商平台由于促销及运营策略,在双十一高峰期间制造了比平时业务量高几倍几十倍的流量洪峰(特别双十一零点),业务系统也必须承受住流量洪峰的压力,保障业务平稳运行。所以在每年高峰之前都需要对高峰系统进行一次全面的性能压测来进行统容量评估。所以物流行业高峰保障对保障效率,技术能力有更高的要求: 总结一下,物流行业高峰保障面临:系统容量评估难,系统稳定性保障难,压测硬件成本高,保障效率低,技术能力不统一,沟通协同成本高6大难题。
顺丰高峰场景痛点
以顺丰为例,每年6-10月份,即使耗费大量人力,花费千万搭建一套PST高峰压测环境压测,人不能完全排除高峰隐患。
发展趋势
全链路压测的诞生
作为面对双十一高峰挑战最大的业界领军企业,阿里率先从2013年开始推进生产全链路压测,从而带动整个行业在性能压测领域从线下性能环境压测走向生产环境全链路压测。全链路压测作为天猫双十一稳定性保障最重要的利器,被誉为大促备战“核武器”,为每年天猫双十一稳定性贡献不可估量的价值。
行业性能压测的演进
生产环境全链路压测,最关键是要解决压测对生产业务的影响,包括数据污染和性能影响。对于压测数据如何不污染生产业务数据,一般的思路是通过中间件改造全链路识别压测流量并将压测数据隔离到影子区域(影子表/库,影子缓存等)。同时压测期间能实时监测压测对生产的影响,快速自动决策停止压测及禁止压测流量进入生产。 从线下的需求驱动压测演进到生产全业务在线压测可以分为7个能力阶段,其中全链路染色与数据隔离能力是关键,大规模流量模拟与全景监控能力是基础。
顺丰高峰压测痛点
业务痛点
具体到顺丰场景,以往每年双十一高峰压测面临三个主要问题:
压测真实性偏差:线下PST环境很难模拟生产真实状况,压测结果和生产存在偏差,不能完全消除生产高峰期间风险隐患;
成本高:线下PST环境准备工作复杂且时间长,硬件成本和人力成本投入大;
无固定压测环境:每年搭建一次PST环境,使用周期4-5个月,只在双十一高峰前做一次高峰压测,无法做到常态化压测,保障应用全年不出性能问题,消除风险隐患。
技术痛点
前面提到全链路压测关键是基于中间件改造实现全链路染色与数据隔离。对中间件标准化做的比较好的互联网企业是通过改造中间件实现压测数据的识别和转发。对于顺丰科技,我们的目标是在2021年具备高峰系统全业务在线压测能力,面临更大的挑战:
中间件不统一:存在大量传统老旧系统,中间件版本规范不统一(涉及20大类,40+种组件,上百个版本)。很多老旧系统面临研发资源匮乏,组件无法升级,推动改造成本风险巨大等问题。
时间成本高:2021年高峰压测项目涉及56套高峰系统(S+A级),300+个应用,6000+个节点,规模大,如果改造升级,时间周期太长;
人才储备少:缺少技术专家来做全链路的中间件优化改造。
解决方案
实现全链路染色与数据隔离,需要业务链路流经的所有中间件(dubbo,jetty,springboot,http,kafka,redis,mysql,es,hbase等)都能识别压测流量并且将压测流量隔离到影子区域(影子库/表,影子kafka/topic,影子redis/key),有两种技术方案:改造中间件方案和JavaAgent方案。
改造中间件方案技术门槛相对较低,但需要推动所有相关中间件升级改造,对业务侵入性较高,改造成本高;
JavaAgent方案通过agent对业务中间件进行增强改造,业务侵入性低,业务代码改造成本低,但技术门槛高。
为适应科技现状,我们选择基于JavaAgent全链路压测方案(Takin),业务无需改造,JVM层实现压测数据识别和转发。 为了在生产环境压测,做到不影响线上业务和数据,压测平台应该能都保证以下4点:
- 压测可识别(染色)
- 压测流量识别之后的传递
- 应用识别和兼容压测流量
- 缓存和存储将压测数据存储到影子区域
竞争优势
为了满足顺丰科技在2021全业务高峰系统在线压测所面临的应用组件复杂,系统规模大,时间周期短等挑战,要求整体解决方案具备如下能力:
业务零侵入:业务系统接入无需修改代码或者修改极少的代码,对业务系统实现零侵入接入,开箱即用;
自动链路梳理:顺丰首次接入系统规模大,应用组件复杂,平台提供链路自动梳理,降低梳理成本,提高应用组件识别准确率;
数据安全隔离:顺丰高峰系统涉及最核心的56套S+A级系统,要实现高峰压测0故障,必须具备完善的安全防污染设计,防止压测期间数据泄露到生产环境;
自动告警熔断:压测期间具备自动告警熔断能力,防止影响生产业务;
丰富插件支持:针对顺丰当前应用组件版本规范不统一,种类及版本多现状,有开源的组件,也有业务系统自定义的组件,要求平台工具能兼容业界主流应用组件及版本,并提供针对定制组件的开发适配能力;
业务零侵入
基于JavaAgent动态字节码增强技术:业务代码无需改造只需配置;可通过配置快速启用停用;业务无耦合,不影响升级;避免业务改造风险;
链路自动梳理
基于Agent采集入口业务/压测流量,实时链路分析自动上报,可视化展示压测链路详情,明确影响范围及应用,辅助研发/测试人员快速梳理链路信息,开展后续工作。
安全隔离—白名单
如何防止压测流量污染下游第三方系统。压测平台提供白名单校验机制,未开启白名单的接口,压测流量会默认被拦截。只有确认开启接口白名单后,压测流量才会被放行。
安全隔离—挡板/Mock
针对调用下游第三方系统,需要模拟压测请求的响应,压测平台提供了一种灵活高效低成本的应用内挡板方案,通过Agent对特定的出口方法拦截增强,动态植入Mock代码;应用内挡板方案无需服务器搭建Mock Server集群,节约了大量硬件成本;同时对于需要调用外部Mock Server返回压测响应的场景,也可以通过Agent改写出口方法的请求地址灵活适配。应用内挡板非常好的达到了技术和成本的最优解。
数据隔离—影子库/表
对于压测数据隔离,压测平台提供了影子库和影子表两种方案,通过影子库/表的配置将压测请求隔离到影子区域,防止污染业务数据。 影子表方案在原数据库新建压测流量需要写入操作的影子表(OPT_开头),读操作共用业务表,运维成本相对较低,但运维管理风险较高; 影子库方案在原数据库实例上新建一个完整的影子数据库,独立的数据库url及用户名密码,读写操作都操作影子库,运维成本较影子表方案高,但因为隔离性更好,安全性更高。 综合成本收益考虑顺丰高峰系统在线压测统一使用影子库方案。
丰富的组件支持
针对21年顺丰应用组件不统一,版本多样的现状,压测平台提供丰富的组件兼容支持;同时提供对顺丰自定义组件的适配能力。
核心技术
下面介绍一下全链路压测的核心技术:全链路染色与数据隔离以及大规模流量模拟实现方案。
应用隔离机制
首先介绍一下压测流量在应用内部的隔离机制,通过Java线程局部变量ThreadLocal对压测请求线程进行染色,增强组件识别染色标识后对压测数据进行隔离操作;对于跨线程请求,采用Transmittable-thread-local解决多线程间染色标记传递问题。
数据库(Mysql, Oracle, Hbase)隔离机制
对于压测数据隔离,通过Agent动态增强业务数据源,识别并将压测请求数据隔离到影子库或者影子表。
消息中间件(Kafka)隔离机制
对于MQ消息,通过Agent动态增强消息生产者和消费者,将压测请求数据发送至影子Topic或者影子集群。
缓存(Redis)隔离机制
对于Redis缓存数据,通过Agent动态增强缓存客户端,将压测请求Key包装为影子Key写入缓存服务器。对于影子Key清理策略,平台支持设置影子Key过期时间,压测结束后自动失效。
大规模分布式压测能力
最后重点说一下大规模分布式压测能力,结合K8S容器化技术,极大提升压力机服务器资源利用效率,21年建成大规模分布式压测能力,支持同时发起300w以上TPS(200ms RT)流量模拟能力,满足顺丰所有高峰系统同时压测,并支持后续水平扩容。
创新
新服务
全链路在线压测跨越式提升顺丰高峰压测能力,提供端到端生产环境在线压测支持,适配顺丰业务,保障业务高峰0故障。 借助在线压测有效对顺丰大规模系统性能进行准确评估和线上验证;压测过程全链路服务跟踪及时发现性能瓶颈自动熔断;可视化界面有效提升用户体验,依靠可视化报告快速分析性能瓶颈进行优化;
改变协作模式
创新的不仅仅是技术,更是对生产关系的变革。21年首次组建高峰保障敏捷团队,统一标准,协调各业务专业团队,全流程的为高峰保价护航,提升高峰压测效率。
全流程风险管理机制
21年还建成了生产压测的全流程风险管理机制,从压测平台方案防护,压测流程标准化建设,到关键环节的评审管理机制全方位考虑,力求将生产环境压测的风险降到最低,实现生产压测0故障。
价值与能效
21年高峰压测项目在价值与能效方面带来了巨大的提升,重点体现在如下3个方面:
提升压测质量:在线压测共发现437个问题,其中10个问题(含4个高风险问题)在PST压测环境无法发现,发现问题更加精准,偏差更小。业务在双11业务高峰运行更稳定,实现高峰0故障;
节省成本: 21年完成56套高峰系统在线压测,硬件成本大幅降低,同比2020硬件成本降低71.44%;
标准化在线压测能力:建成业界领先的规模化在线压测核心能力,首次实现规模化在线压测,拉齐了各业务团队高峰压测技术能力;
战略能力
行业价值
21年全链路在线压测项目拉齐顺丰科技与业界领先水平的技术代差,实现了高峰保障从“石器时代”到“工业时代”跨越式进步。将之前大量依靠人工操作的工作转化为由工具平台自动化实现,大幅提升了高峰保障的能效,并为后续高峰保障向“自动化时代”和“AI时代”迈进打下了坚实的基础。
战略价值
21年在线压测项目打造了真正意义上的全链路在线压测技术能力,并为后续高峰压测各个环节系统层面大同奠定了坚实的基础。
如何获得PPT:
扫码添加公众号,回复关键词【顺丰】
本文来自投稿,不代表TakinTalks稳定性技术交流平台立场,如若转载,请联系原作者。