全链路压测第一次实践

每年双十一,对买家来说是一场买买买的剁手之旅,但对于电商公司的技术人员来说,却是一次严峻的技术期末考。如何保证系统在预估的流量洪峰来临时,既能保证用户的买买买不受影响,

促进业务及营销活动的目标达成,又能用尽可能少的成本投入保障系统的稳定可用性,是技术童鞋必须面对的挑战。我司在双十一来临的最后关口完成了整个核心链路的全链路压测,

大幅提高了核心链路的服务性能,并发布了最终优化版本。在双十一期间,也取得了一定的成果,期间包括技术、运营、产品、行政等各部门都为之付出了很多努力。

下面的内容,是从启动到双十一这段时间,我们在双十一项目上所做的关于全链路压测的一些实践。

一、面临的挑战

从项目kickoff到双十一活动开始,第一次双十一大促,我们面临着巨大的挑战。

挑战一:核心链路梳理

电商业务本身比较复杂,且当前阶段我们微服务架构下,各个服务间依赖高,调用关系复杂,且没有较为清晰的链路梳理,理论上来说,只有一部分系统才是核心链路。

所以,面临的第一个挑战,就是从错综复杂的系统中梳理出核心业务链路。

挑战二:环境成本高昂

按照业内的实践经验和方案,全链路压测都是在生产环境进行,这样测试的结果才能更贴近实际的生产场景。

但由于我们是第一次进行全链路压测,因此只能选择折中方案——按照生产环境当前的配置,搭建一套等配镜像环境。

镜像环境从资源准备到服务部署联调都比较耗时,且成本高昂,这逼迫我们必须拿到更好的结果,才能提高ROI。

挑战三:流量评估困难

为了尽可能使压测场景更贴近真实的生产场景,需要对核心链路的流量模型进行比较准确的评估和模型确认。

由于各服务间依赖较高,且调用关系复杂,这对我们提出了新的挑战——如何评估出更接近真实场景的流量模型。

挑战四:任务多线开展

从双十一启动到结束,需要同时开展的任务较多。比如服务拆分、耦合任务迁移、DB&Redis垂直拆分、正常版本迭代、全链路压测及性能优化,以及新的业务线不断拓展,这些都是我们需要面对并且克服的困难。

二、压测的过程

启动阶段

1、任务规划

项目kickoff后,在技术负责人牵头下迅速确定了本次双十一大促的TODO项。主要是如下几项:

前端:降级点确认、容错保护、监控数据接入;

后端:核心链路梳理、监控&服务保护接入、专项预案、

测试:资源准备、压测模型梳理、压测方案、全链路压测、预案演练、线上功能验证;

基础架构:架构优化、网关替换、DB垂直拆分、基础设施接入(链路追踪、监控、报警......);

资源保障:容量规划、镜像环境搭建、服务部署联调、线上扩容;

2、估时排期

确认任务规划后,各个技术团队迅速组织协调资源投入了各自的工作。由于双十一迫在眉睫,且待办事项较多,故按照时间进行任务估时倒排。

准备阶段

在准备阶段,按照任务规划拆解出来的细化任务进行同步开展,下面是准备阶段我们开展的主要事项。

1、核心链路梳理

各业务研发团队的owner对我们目前的核心业务链路进行了梳理,主要包括:首页、商品、订单、支付、用户、风控、优惠券、大促活动、基础服务。下面为示意图表:

全链路压测第一次实践

2、镜像环境准备

由于本次压测是在和生产等配的镜像环境进行,相当于从零开始搭建一套环境,无论是资源准备、服务部署还是服务联调验证,都耗费了较多的时间,从中也发现了我们之前的一些不足,累积了很多经验。

3、压测任务排期

根据大促任务规划,性能测试同学从中拆解出了较为详细的压测任务,并进行排期,同时积极主动的推动了整个压测任务的开展实施。

4、专项预案沟通

专项预案主要包括如下几项:限流、降级、熔断、脉冲、破坏性验证五种场景。在服务治理这一项,基础架构的同学接入了sentinel进行相关管理。

上一页123下一页


留言