全链路压测

全链路压测和常规压测的定义与比较:

全链路测试旨在测试整个应用程序或系统的各个组件和模块之间的交互是否正常,以确保系统在不同组件的协调合作下能够正常工作。它关注的不仅仅是压力测试,还包括功能测试、兼容性测试等多个方面。

全链路测试的目的是确保应用程序在真实环境中能够正常运行,并发现潜在的问题和瓶颈。

压力测试则是通过模拟负载,来评估系统的性能、稳定性和可靠性。它主要关注的是应用程序在负载情况下的表现。

压力测试的目的是发现应用程序在负载情况下的性能问题,以便在上线之前及时修复和优化。

因此,全链路测试和压力测试虽然都关注应用程序的性能,但它们的侧重点不同。全链路测试更注重整个应用程序的协调性和稳定性,而压力测试则更注重应用程序在高负载情况下的性能表现。

一、什么样的公司需要全链路压测?

既然全链路压测功能这么强大,那如何确定自己的公司是否需要做全链路压测呢?如果遇到以下问题之一,就可以考虑引入全链路压测:

(1) 压力测试一直在做,但是每到大促活动,各种问题依然频繁发生;
(2) 需求正常测试通过,上线后又出现各种各样的系统故障 ;
(3) 无法准确评估需要的机器资源,生产环境水位很低。

二、全链路压测的价值

1、 保障重大活动期间系统高性能、高可用、高稳定,避免公司业务和声誉因技术问题遭受重大损失。

2、精准的容量评估帮助公司用最低的成本满足业务的性能要求。

3、端到端的全链路压测巡检,第一时间发现故障并快速定位问题。

三、如何确定业务核心链路

一般有符合以下三种情况的,可以考虑确定为核心链路:

(1) 链路出现问题会对企业业务造成重大影响的链路,比如对业务造成损害、品牌损害等。

(2) 链路出现问题会对用户(如消费者)造成重大影响的链路,比如电商购物APP。

(3) 跟公司阶段考核(如KPI)挂钩的业务链路,比如订单团队肯定要保障订单链路的稳定。

四、全链路压测三大核心技术

1、全链路流量染色(流量隔离)

2、全链路数据隔离

3、全链路风险熔断

全链路流量染色,对压测的服务请求打上标识,在订单系统中提取压测标识,确保完整的程序上下文都持有该标识。

1、压测标记

压测标记就是最常见的压测流量染色的方式。一般会在服务请求的头信息中增加一个 Key:Value 的字段作为标记。

2、压测标记透传

目前公司内各个基础组件、存储组件,以及 RPC 框架都已经支持了压测标记的透传。下游服务可以根据压测标记完成对压测流量的处理。

3、压测开关

为了解决线上压测安全问题,我们还引入了压测开关组件。当线上出现压测问题,关闭压测开关,也能立即阻断压测流量。

因此我们要对服务进行改造:

在压测之前,需要对服务进行压测验证。对于不满足压测要求 (即压测数据隔离) 的服务,需要进行压测改造。

全链路数据隔离,主要是通过对压测流量进行染色,让线上服务能识别哪些是压测流量,哪些是正常业务流量,然后对压测流量进行特殊处理,以达到数据隔离的目的。

如:Mysql在持久化层根据压测标识进行路由访问压测数据表。数据隔离的手段有多种,如影子库、影子表

影子库/表原理:
总而言之,中间件和数据库常用的改造方案如下:

在这里插入图片描述

全链路风险熔断,也就是风险熔断机制,不管怎样做业务,可能都会对最终的生产业务造成一定的影响,真正出现问题的时候可能需要有快速熔断机制。一旦真的发现生产环境的线上压测对我们的业务造成了影响,我们需要通过一些规则或者其他的指标来自动触发风险熔断。如:自定义监控指标及阈值,到达阈值后,也会自动停止压测。例如 CPU、Memory、 上游稳定性、错误日志,以及其他自定义指标。

另:服务 Mock

对于调用链中不能压测的服务 (敏感服务),或者第三方服务,为了压测请求的完整性,就需要对这些服务进行 Mock。业界通用的 Mock 方案有:

1、修改业务代码,修改服务调用为空转代码。优点:实现成本低。缺点:返回值固定,代码 & 业务入侵高,推动困难。如要 Mock 位置比较靠下游,超出部门覆盖业务范围,推动就非常麻烦。

2、通用 Mock 服务。通用 MockServer,会根据不同用户配置不同 Mock 规则,执行对应的响应延时,并返回对应响应数据。优点:无代码入侵,业务方无感知。缺点:实现成本高。

五、全链路压测架构

在这里插入图片描述

六、全链路压测流程

在这里插入图片描述

七、全链路压测模型

针对生产集群的全链路压测,需要涉及的压测模型较多,一般有如下几种:

①.梯度加压模型:主要为了探测集群模式下系统的最大吞吐量(也避免压垮服务,造成事故);

②.固定并发模型:验证系统长期处于负载下的稳定性;

③.脉冲并发模型:探测系统的健壮性、验证限流熔断等服务保护措施的正确性&可用性;

④.超卖验证模型:对电商业务来说,主要针对一些限时抢购&秒杀的场景;一般这种场景,会涉及到分布式锁、

缓存、数据一致性等技术点;玩不好的话,容易造成客诉、资损、甚至服务异常宕机!

  • 0
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值