1.1.4 全链路压测的特点

软件系统复杂度的日益提升和业务场景的多样化是全链路压测的诞生背景,因此,全链路压测具有鲜明的特点。我总结了以下6个全链路压测的特点。

第一,虽然全链路压测名称中有“压测”两字,但它本质上是一种容量测试技术或手段。压测和容量测试的区别在于,压测的目的是要找到系统服务性能的瓶颈,而容量测试则是根据预先制定的容量目标,通过对系统服务施压来观察和验证系统服务能否承载这一压力。从这个层面讲,全链路压测应当被视为一种验证手段,而非测试手段。换言之,我们应该先设计和建造出满足容量要求的系统服务,再通过全链路压测去验证它,而不是通过全链路压测去反复探测系统服务的容量瓶颈,然后不停地优化系统服务或扩容。

第二,全链路压测需要在生产环境中实施,这是为了尽可能避免环境差异对压测结果造成影响,环境差异包括资源配置、中间件部署方式、网络部署方式等。除非我们能够在线下搭建一套与生产环境完全相同的测试环境,否则无法保证全链路压测结果的可信度。

第三,全链路压测是主动发现服务容量隐患(风险)的手段,它通过模拟系统处于高负载状态的真实场景,提前暴露系统服务的容量风险,验证系统服务是否能够承载预期的峰值流量。这样,在真实流量峰值到来时,我们才能做到胸有成竹。

第四,全链路压测的业务涉及面广,“全链路”这3个字意味着我们至少要将核心业务流程所涉及的链路都纳入压测范围。在一些业务规模较大和系统复杂度较高的企业中,全链路压测甚至会涵盖成百上千个微服务。

第五,全链路压测的技术实现复杂,需要对基础设施和系统的业务进行改造,这意味着全链路压测经常作为企业的重点项目进行推动,且需要较长的实现周期,不可操之过急。全链路压测能否成功落地,很大程度上取决于企业是否具有过硬的组织管理能力和对应的技术架构。

第六,全链路压测对相关人员的技术素养要求较高,这些人员不仅要对服务系统的调用链路了解透彻,还要具备一定的性能分析和调优能力,这非常考验人员的技术功底。也正因为如此,全链路压测往往是多个团队合作使用的技术。

当然,随着技术的不断革新,以及优秀实践的迸发,上述这些特点也是会改变的。我们应当持续关注前沿技术,以动态的眼光审视全链路压测。