导语
UGeek大咖说是优维科技为技术爱好者研讨云原生技术演进趋势而创办的系列活动,邀请一线互联网大厂的核心骨干主讲,分享原厂实践。本年度主题为可观测,我们希望通过一场场有趣、有料、有深度的活动,让运维圈的小伙伴聚集在一起,深度交流与学习。
一月一期,不见不散!
9月27日,UGeek大咖说第九期圆满结束,此次活动特邀到顺丰科技应用架构高级工程师——李卓做客直播间,为我们讲解全链路压测中的可观测性实践。
李老师为我们分享了全链路压测在大型复杂系统中的落地实践案例,也让我们从多个角度,更深地了解到可观测性在全链路压测等级演进中的探索及后续应用,也给我们讲解了顺丰科技的高峰压测变革,介绍了全链路压测在顺丰落地过程中所遇到的挑战,以及他们的应对方式,最后又逐一讲解了可观测性为压测全链路保驾护航三部曲,以及大规模分布式系统下的应用无侵入性能监控的实现。
什么是压测?
压测,是保障系统稳定性的一种重要的方法,而链路追踪等可观测技术是压测的关键能力。
那么,可观测在压测领域的落地,会产生什么样的化学反应?我们在面对复杂的系统环境下,又该如何通过获取全链路的追踪数据和指标数据,去实现整个压测过程的可观测性呢?
李老师将会用实际案例带我们一起剖析大型复杂系统下,可观测性在全链路压测中的落地实践。
精华摘录
一、技术痛点
随着互联网架构越来越复杂,传统的压测的方式在大规模的分布式系统下变得越来越不可行。主要面临以下几个痛点:
>>01 成本高
多个系统性能测试环境占用的硬件资源较大。性能环境的搭建链路复杂耗时长,人力成本投入巨大。
>>02 容量评估难
容量评估没有统一好执行标准,评估的机器资源到活动时经常发现不准(设备配置差异;设备规模差异),易导致容量瓶颈。
>>03 问题定位难
越来越复杂的应用拓扑,节点之间的调用关系变化比较频繁,系统问题定位越来越难。
>>04 效果验证难
分布式系统的性能指标在测试与真实环境差距较大,参考意义有限。
二、高峰保障挑战
系统容量:如何评估大规模分布式系统容量,防止高峰容量评估不准造成的雪崩效应。
系统稳定:线下性能环境与生产环境存在差异性,导致线下压测结果会存在一定的偏差,部分问题无法复现,导致高峰存在风险隐患
保障效率:每年高峰压测,搭建压测环境需要耗时1-2周,压测结束后,环境资源被回收,如此重复,耗费大量人力。
硬件成本:耗费大量资源塔建线下性能测试环境,比如2020年的一次性硬件成本就达到干万以上。
沟通协同:缺少标准化分析定位工具平台通协调多个团队线下分析。
三、行业压测性能的演进:从线下到线上
目前整个物流行业基本上已经抛弃了线下做这性能测试,这种方案已经基本上全面的来转到了线上来做生产的全联动压测,从这个线下到线上,大致可以分成以下七个步骤:
四、业务侧与技术侧用户痛点
>>用户痛点:业务侧
每年双十一高峰压测面临三个主要问题:压测真实性偏差、成本高、无固定压测环境。
>>用户痛点:技术侧
中间件不统一:中间件框架系统不一样,数百个版本应用组件;
时间成本高:改造时间周期太长;
人才储备少:缺少技术专家来做中间件优化。
五、解决方案
适应科技现状,基于JavaAgent全链路压测方案,业务无需改造,JVM层实现压测数据识别和转发。
而在全链路压测阶段会有两个关键特性:
「应用无侵入」的特性避免了业务系统的改造,尤其是涉及到数百应用的改造,不仅成本高,风险也大。
「可观测性」的特性在压测前链路梳理配置,压测中监控告警熔断,压测后性能瓶颈诊断中至关重要。
六、全链路压测铁三角
全链路压测是一个非常庞大的体系,这里面涉及到非常多的技术能力,大规模流量仿真,对顺丰和一些双11的流量非常大的互联网企业来讲,要有流量录制和流量回放。流量录制一般是基于脚本去做流量的仿真,但脚本的复杂度有限,很多的链路除了对量有要求,对场景也有很高的要求,通过脚本很难去模拟出真实场景的复杂度的,所以要把生产的流量先录制下来,做相应的脱敏和偏移,然后再通过平台做大规模的这种流量回放。
第二是基于JavaAgent所做的数据安全隔离,包括应用的隔离,以及数据的隔离。全链路压测要常态化、安全。
可观测性在整个压测中有非常重要的地位,包括压测前的内容快速梳理;自动的告警熔断;压测后的性能瓶颈分析,可观测性能够帮助研发快速找到性能瓶颈所在,是一个非常核心的应用。
课堂问答
网友提问:压测过程中,哪些指标是更需要重视的?
讲师解答:压测过程中指标是多方面的,整个的监控体系从基础监控到应用监控、链路监控。都要看平台本身能够提供的类似于apm链路监控,但是在压测过程中间还会看一些基础指标,例如压测时链路正常,但CPU已达到80%-90%的负载,此时已不能继续再压,否则会出现后续问题,数据库同理,有些硬盘容量会在压测过程中持续写入数据,所以压测过程中还需要关注它的容量。
监控是个庞大的体系,单独的apm、应用、基础监控,每一个都是大体系,作为全链路来说,需要关注的是整个链路的综合情况。
网友提问:可观测性在压测中做了什么角色?
讲师解答:压测前是用通过可观测性的半自动化链路配置;压测中是结合监控告警指标,能够做到自动告警和熔断;那压测后的话就是通过agent能够采集到的指标放在压测报告里面,若能够通过apm的指标直接分析,就可以大大加速问题定位的分析效率了。