前言
笔者所在的公司是一家快速发展的互联网电商公司,在保证业务快速稳定发展的同时,对于系统稳定性、可用性和扩展性的要求,也在不断提高。
特别是互联网电商企业每年的两次大考:618&双11,更是对服务的三大特性有更多的要求。在大促活动开启之前,无论是前期的核心业务梳理、线上流量评估、场景建模,
还是测试实施阶段的监控分析、调优验证,乃至线上的容量规划,每个环节都需要做很多工作。且这些工作都需要运维、开发、测试、产品甚至数据分析团队的协同配合,才能保质高效的完成。
全链路压测,作为电商大促的稳定性保障利器,也在不断的迭代演进。
这篇文章,为大家介绍下全链路压测在我司的落地和实践演进史。
当然,其中的某些敏感部分已脱敏,请谅解(图片水印为本人微信公众号水印)。
落地 挑战
去年双十一,为了应对零点的峰值流量冲击,我们在八月下旬启动了第一次全链路压测。由于是从零开始,因此单独的搭建了一套和生产1:1的环境。
2个月的时间,环境成本就高达几百万。从项目KO到双十一活动开始,第一次双十一大促,我们面临着下面几点挑战。
核心链路梳理
电商业务本身比较复杂,且当前阶段我们微服务架构下,各个服务间依赖高,调用关系复杂,且没有较为清晰的链路梳理。
所以,面临的第一个挑战,就是从错综复杂的系统中梳理出核心业务链路。
如上图所示,梳理核心链路前一定要考虑清楚上面三个问题:
1)我们在梳理什么?
梳理核心链路,实际上是对我们的业务场景、数据场景和逻辑场景的梳理。
2)什么是核心链路?
从实践来说,核心链路主要有这几个特点:它是核心业务聚集区域、牵一发而动全身、影响导购下单支付。
3)为什么要梳理它?
梳理核心链路最重要的目的是让团队的每个人都清晰的知道:谁会影响我的服务,我会影响谁的服务,以及梳理过程中发现潜在的风险。
环境成本高昂
按照业内的实践经验和方案,全链路压测都是在生产环境进行,这样测试的结果才能更贴近实际的生产场景。
但由于我们是第一次进行全链路压测,因此只能选择折中方案——按照生产环境当前的配置,搭建一套等配镜像环境。
镜像环境从资源准备到服务部署联调都比较耗时,且成本高昂,这逼迫我们必须拿到更好的结果,才能提高ROI。
流量评估困难
为了尽可能使压测场景更贴近真实的生产场景,需要对核心链路的流量模型进行比较准确的评估和模型确认。
由于各服务间依赖较高,且调用关系复杂,这对我们提出了新的挑战——如何评估出更接近真实场景的流量模型。
流量评估从我个人角度来说,最大的难点实际上在于找到切入点。
而最好的切入点,除了前面讲到的核心链路梳理,其次就在于完善的监控体系。其中,核心链路梳理是前置项,而监控工具则是流量评估的提效工具。
1)评估流量
完成核心链路梳理后,可以依据核心链路的请求调用关系进行上下游分析。相关工具的话,开源的有jaeger、skywalking、pinpoint等。
2)模型分析
模型分析主要关注三点:入口流量、内部流量和出口流量。它们各自的区别如下:
入口流量:主要指到达网关入口的预估峰值流量;
内部流量:微服务架构下,内部服务间调用会出现单个接口被多次调用的情况,这是需要重点关注的;