全链路压测(7):核心链路四问

简介: 很多企业都会有自己核心的业务范围,这些核心业务也往往是主要的企业利润来源。以电商企业为例,为用户提供商品的购买服务,为商家提供商品的管理和上架及定价展示,利润大多为撮合用户和商家交易所带来的服务费以及广告等相关费用。

前言


前面的文章介绍了全链路压测的落地实施全流程,其中有个环节我特别提到了它的重要性,同时这也是本篇文章的主题:核心链路梳理。那什么是核心链路?为什么要确定核心链路?如何进行核心链路梳理?梳理核心链路的目的又是什么?这篇文章,我会给你答案。


什么是核心链路?


之前在一些线下沙龙分享或者线上直播时候,很多同学都会问我一个问题:什么是核心链路?好像这个词有种魔法,很难让人去理解。这里我试图用自己的理解和一些案例,来让大家理解核心链路。


很多企业都会有自己核心的业务范围,这些核心业务也往往是主要的企业利润来源。以电商企业为例,为用户提供商品的购买服务,为商家提供商品的管理和上架及定价展示,利润大多为撮合用户和商家交易所带来的服务费以及广告等相关费用。

和上篇文章中提到的确定业务范围的内容相结合,所谓的核心链路,从技术角度来说可以这么理解:核心业务对应的核心应用中,保证达成企业利润实现的最主要请求流量经过的路径,即是核心链路。


这么说比较拗口,再直白一些就是:哪些接口会影响用户下单支付,哪些就是核心链路。


下面附一个常见的电商企业核心链路流程图,供大家参考。


640.png


为什么要确定核心链路?


做测试的同学对这一点很熟悉,无论是需求评审的优先级,还是写测试case时候为开发提供的冒烟case,甚至提交BUG时候对BUG进行优先级划分,都会进行优先级划分,什么原因呢?


因为我们大多数时候面临的情况,是要在有限的时间和人力资源范围内,即保证交付的质量,又要尽可能多的完成更多工作任务和需求。特别是对于类似电商双11大促这种很复杂的项目,要做的事情太多,时间和人力资源有限,涉及到的业务范围应用范围有很多,这个时候需要做一个取舍。


可能部分未在覆盖范围内的业务和应用会出现一些问题,但如果保障核心业务和应用的稳定性,可以使企业的业务目标更好的达成,那这些损失还是可以接受的。而且并不是说非核心的业务和应用稳定性我们就不关注了,而是通过其他技术手段如限流、降级、熔断或者业务入口关闭来解决这个问题。


如何进行核心链路梳理?


640.jpg


上图是以电商企业订单应用为例子的一个业务调用链路的梳理,这里做一个拆解性的讲解。


  1. 确定核心业务范围为交易业务;
  2. 确定核心应用其中有订单应用;
  3. 订单服务中流量请求占比最高的接口为订单确认、订单创建、订单列表和订单详情;
  4. 通过链路追踪的手段确定这四个接口的下游依赖调用都是哪些服务和接口或者中间件;
  5. 确定这些下游依赖的关系是强依赖还是弱依赖,以及是否有外部三方服务的调用关系;
  6. 强依赖熔断,弱依赖降级,订单服务的接口本身做限流,外部三方服务依赖进行mock;


梳理核心链路的目的是什么?


这个时候就要祭出我之前分享时多次使用的一张图了,示意图如下:


640.png


梳理核心链路的主要目的,主要有获取流量模型、知道强弱依赖、制定稳定性预案。


流量模型


我在前面的文章《生产全链路压测实施全流程》中有提高转化技术指标的一个案例,这里再次回顾下:


  • 客单价为500,单日GMV为10亿,那么支付订单量为10亿/500=200W;
  • 假设日常支付订单量为50W,支付转化率为40%,订单支付QPS峰值为200。预估大促时的支付转化率为60%,则可得:大促峰值订单支付QPS为(200/40%)*60%*(200W/50W)=1200QPS。这个1200QPS是个保底数值,一般为了留有一定冗余空间,会上浮30%,即订单支付的QPS预估为1500;
  • 电商的导购浏览下单支付转化链路一般为:首页→商品详情→创建订单→订单支付→支付成功,这个过程是类似漏斗的一个转化逻辑。假设首页→商品详情转化率为40%,商品详情→创建订单转化率为40%,创建订单→订单支付转化率为40%,那么可得:创建订单QPS为1500/40%=3750,商品详情QPS为3750/40%=9375,首页QPS为9375/40%=23437;


确定了核心链路的预期流量指标后,可以通过链路间的依赖关系不断的扩大评估范围,直到形成一个流量模型。


流量模型是个类似漏斗状的转化过程,从流量入口到最底层的DB是有不同的转化率的。链路越向下,QPS越低。


通过转化率来评估预期的流量然后通过链路依赖梳理,来形成一个流量模型。这里需要注意的是,用户日常和大促时候的流量模型是不一样的,因为大促时候用户的目标更明确,因此转化率较高。从业务指标转化为技术指标,需要你对业务很熟悉,不要只盯着技术。


强弱依赖


通过流量模型以及梳理得到强弱依赖关系后,接下来就是根据依赖的关系设定各种稳定性预案了,这里要注意的一点是,很多的预案需要和业务或者产品做提前沟通,比如主动降级或者业务入口关闭,因为这些降级动作是需要业务方知晓并且配合来操作的,而不仅仅是一个技术上的动作。


稳定性预案


稳定性预案,主要目的是保障线上应用在类似电商双11期间的流量峰值冲击下能保证服务的稳定性,为业务目标的达成提供良好的保障。


稳定性预案也分不同的类型,或者说不同情况下要设定不同的预案,而不是一个通用的东西,需要根据企业的技术设施建设以及技术团队具体的情况来评估。


最常见的稳定性预案就是我们上面提到的限流熔断降级,再高大上点就是容灾恢复、主备切换、业务入口关闭甚至什么断电保护之类的种种。


关于稳定性预案,我会在后面的文章中专门写篇文章,来聊聊如何梳理稳定性预案,以及常见的一些案例。


文末回顾


这篇文章主要聊了全链路压测在备战阶段最重要的一件事,核心链路梳理。其中提到了流量模型相关的内容,下篇文章,我会以全链路压测过程中需要梳理的三大模型为主题,为大家介绍它们。


往期技术文章推荐

全链路压测(1):认识全链路压测

全链路压测(2):方案调研和项目立项

全链路压测(3):技术改造和测试验证

全链路压测(4):全链路压测的价值是什么?

全链路压测(5):生产全链路压测实施全流程

全链路压测(6):确认范围和识别风险

相关实践学习
通过性能测试PTS对云服务器ECS进行规格选择与性能压测
本文为您介绍如何利用性能测试PTS对云服务器ECS进行规格选择与性能压测。
相关文章
|
11月前
|
监控 测试技术 UED
《云上业务稳定性保障实践白皮书》——五.行业客户稳定性保障实践——5.3 平台网站业务稳定性保障——5.3.2 全链路压测与容量评估(1)
《云上业务稳定性保障实践白皮书》——五.行业客户稳定性保障实践——5.3 平台网站业务稳定性保障——5.3.2 全链路压测与容量评估(1)
196 0
|
11月前
|
域名解析 网络协议 数据可视化
《云上业务稳定性保障实践白皮书》——五.行业客户稳定性保障实践——5.3 平台网站业务稳定性保障——5.3.2 全链路压测与容量评估(2)
《云上业务稳定性保障实践白皮书》——五.行业客户稳定性保障实践——5.3 平台网站业务稳定性保障——5.3.2 全链路压测与容量评估(2)
151 0
|
11月前
|
SQL 监控 关系型数据库
《云上业务稳定性保障实践白皮书》——五.行业客户稳定性保障实践——5.3 平台网站业务稳定性保障——5.3.2 全链路压测与容量评估(3)
《云上业务稳定性保障实践白皮书》——五.行业客户稳定性保障实践——5.3 平台网站业务稳定性保障——5.3.2 全链路压测与容量评估(3)
143 0
|
数据可视化 测试技术 定位技术
全链路压测(14):生产全链路压测SOP
从实践经验的角度出发,生产全链路压测在技术实现上没有太多新花样,但要在不同的业务和企业落地,就各有各的实践路径。对于没有太多经验的同学来说,全链路压测的落地,大多还是基于个人的经验和熟悉的领域,即都是在局部作战,缺乏全局的视角和可视化地图。从全局来讲,缺少适用于自己的全链路压测最佳实践。
全链路压测(14):生产全链路压测SOP
|
存储 SQL 缓存
全链路压测(13):高可用和性能优化
业务场景复杂化、海量数据冲击下,发现并解决业务系统的可用性、扩展性以及容错性问题。
全链路压测(13):高可用和性能优化
|
监控 Java 测试技术
全链路压测(12):生产压测必不可少的环节
在生产环境开展全链路压测,相对于测试环境来说风险和成本都是比较大的。因此需要一套严格的流程管控和响应机制,以及高效的团队协同体系。
全链路压测(12):生产压测必不可少的环节
|
缓存 监控 安全
全链路压测(11):聊聊稳定性预案
从业务角度来讲,无论技术做任何的改动和优化,最终的目的都是为了业务目标的达成。而系统的稳定性,无论从用户体验还是业务目标达成的角度来看,都是不可忽视的一环。
|
SQL 缓存 运维
全链路压测(10):测试要做的准备工作
功能验证环境即用来验证技术组件本身的功能正确性和接入性能损耗的环境,有独立的随时可用的环境最好。如果考虑到成本,也可以用线下性能环境来进行验证。
全链路压测(10):测试要做的准备工作
|
运维 监控 安全
全链路压测(9):容量评估和容量规划
容量评估我在之前的文章《性能测试从零开始实施指南——容量评估篇》中已做过详细介绍,这里不多做赘述。关于容量评估,参考下面两张思维导图,更容易理解。
全链路压测(9):容量评估和容量规划
|
缓存 监控 NoSQL
全链路压测(8):构建三大模型
单机单接口的压测,可以通过梯度增加请求的方式,观察随着请求的增加,其性能表现&资源损耗的变化。在目前的微服务架构下,整体链路的性能瓶颈,取决于短板(木桶原理)。因此,单机单链路基准测试的目的,是在全链路压测开始前进行性能摸底,定位排查链路瓶颈。
全链路压测(8):构建三大模型