分布式系统如何做好全链路压测?

随着互联网的发展,各行业均在大力开展数字化转型,这意味着传统线下服务均在整体线上化,各行业信息系统都在像互联网行业一样面对流量洪峰的压力。所以各行业IT系统均开始利用分布式架构增强系统应对流量洪峰的压力,但同时也带来复杂的业务流程逻辑、多种异构的服务器、纷繁复杂的开源技术中间件、跨多个单位或部门的研发运维团队,导致各类信息系统故障频发。

图 1:“十四五”数字经济发展主要指标

如何有效保障大型分布式系统的稳定性?

首先要做的,就是要对系统最大能力做到“心中有数”,即开展全链路压测,即覆盖系统全技术组件、全链路上的各部门单位的压测。

什么是全链路压测?

全链路压测是性能压测的一个升级版本。性能压测大家已经比较熟悉,是系统稳定性保障的一种手段,它的目标是测试在一定的负载下,系统长时间运行的稳定性。从具体的作用上讲,性能压测可以用于新系统上线支持、技术升级验证、业务峰值稳定性保障、站点容量规划以及性能瓶颈探测。性能压测伴随着系统开发、重构、上线到优化的生命周期。

性能测试经历了从单接口、单系统到生产全链路压测演变的3个阶段:

图 2:全链路压测的演进历程

阶段一:线下环境单接口、单系统压测阶段,大多采用简单的工具进行单接口或者单系统压测,能进行一些简单的性能问题分析,但很多时候都没有专门的测试团队,需要开发进行自主压测。

阶段二:线下环境多接口、多系统性能压测阶段,通过组建专门的性能测试团队来搭建线下性能测试平台,具备多接口、多系统的压测能力及性能问题定位能力。

阶段三:核心业务生产环境全链路压测阶段,通过在生产环境对核心业务进行全链路压测,能够模拟真实的业务场景流量,验证高并发下系统的性能表现,探知系统性能风险瓶颈,帮助系统进行性能优化、容量评估,保障核心业务系统稳定无故障。再进阶一些的会进行主动防御演练,比如降级、限流、故障演练等。

所有系统都要开展全链路压测方式

性能测试的发展最终衍生出3种市面上常见性能压测方式:传统单接口单系统压测、测试环境多接口多系统压测和生产环境全链路压测。接下来为了方便理解,笔者会以相对简单粗暴的方式来告诉大家如何选择合适的方式。以“流量高峰期总体并发访问量”作为划分依据,仅供参考:

流量高峰期总体并发访问量

适用性能压测方式

≤100人次/秒

传统单接口单系统压测

100人次/秒-1000人次/秒

线下环境多接口多系统压测

≥1000人次/秒

生产环境全链路压测

流量高峰期总体并发访问量不超过100人次/秒,系统依赖的复杂度也不高,这时性能和稳定性并不是主要矛盾, 所以在线下环境搭建一套同样的配置的软硬件来进行单接口、单系统进行压测,非常快速高效就能拿到可靠的性能指标。 在信息化时代,像ERP、CRM之类系统的使用用户并不多,即使生产环境不可用一段时间,也不会造成大的影响。

当流量高峰期总体并发访问量在500人次/秒左右,生产环境不可用一段时间,会累积造成一定的负面影响,通过在线下环境搭建一套类似的测试环境,来进行系统多接口多系统的压测,也能有效评估性能指标,只是参考价值有限。系统在生产环境运行时可能还是会出现一些故障问题,这时候适当加一些应用可用性的监控,更能缓解系统不可用导致的问题。

流量高峰期总体并发访问量超过1000人次/秒,就说明这是一个需要应对高并发场景的系统了。以2000人次/秒为例,若核心系统功能不可用超过10秒,预计将影响超过20000名的用户,这会对企业的正常运转造成非常不良的影响,甚至是直接导致经济损失。此时对系统稳定性的要求也就更高了,只有在生产环境还原真实业务场景,提前发现解决问题才能最大程度降低性能问题带来的糟糕影响。

当然应用这种方式需要面对的问题也有很多:

怎么保障生产数据不受污染?

怎么保障压测不会压挂系统?

怎么保障压测的同时业务不受影响?

......

毕竟在生产环境进行压测,数据安全、业务安全都是需要考虑的。

全链路压测怎么做?

篇幅所限,本文直接以图的形式,概括通用的全链路压测的基本流程,未来将会逐一详细描述。

同时,需注意生产环境进行全链路压测有三个核心原则是不变的,那就是一致性(Consistency)、隔离性(Isolation)和稳定性(Reliability)。

一致性是指压测环境与生产环境的高度一致性,而不是传统意义上的性能测试环境、预发环境等。在当前分布式架构下,影响性能表现的因素非常多,比如网络结构、网络带宽、系统参数、软件配置、链路拓扑、数据维度等等,所以压测环境与生产环境必须高度一致这个条件是全链路压测最重要的特征。

隔离性,主要是指压测数据(包括数据库、缓存、搜索、消息、日志等)的隔离,这部分是全链路压测的技术挑战难点之一。如果不具备数据隔离的特性,影响的不止是压测后续的清理善后工作量巨大的问题,更会严重影响其他部分工作:比如BI的数据分析异常导致管理层无法有效决策,压测和生产数据融合导致无法清理出脏数据。

稳定性,主要指压测实施过程中的要保障业务的可用性,很好理解就是不能因为接入压测导致生产的事故。

总结

全链路压测是性能测试的高阶版本,也是系统分布式化后系统建设管理单位必须要做的事情。但由于其执行过程复杂、操作门槛高,所以在开展前必须拥有完善理论指导。未来,分布式系统稳定性实验室将持续在这一领域深入研究,产出相关成果。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值