电商大促准备——技术侧

一、概述

从20年重构后到现在,我先后经历20年618,20年周年庆,20年双十一,20年双十二,21年618等多次大促,个人在其中扮演的角色也逐步从参与者向组织者转变。总想着写些什么,来记录这些年,我们肝过的大促。

一次完整的大促准备,必定需要研发测试的通力合作。其中研发侧主要负责识别当大促时流量徒增时,各服务可能出现的问题,并通过限流熔断降级扩容等手段,提前规避并解决这些问题。测试侧主要负责准备压测数据与环境,实施压测环境单压与全链路压测,拿到各接口的压测数据。

研发测在大促前,需要进行的准备大致如下图:

 

 

二、序曲——确认各域负责人

与各域tl确认本次大促稳定性owner。

各域onwer应该再后续全程参与整体大促保障工作与性能调优。

三、确认压测范围——核心接口确认

各域owner确认后,首先需要确认哪些接口需要参与压测,并确认是参与全链路压测还是只需要进行压测环境单压。

所有交易核心链路接口——即商品浏览链路,下单支付链路,优惠领取链路必须参与全链路压测。

核心接口确认后,全量路压测执行前,应该在压测环境进行各接口单压。并同时进行性能调优。各接口单压过程中,可以结合火焰图分析性能瓶颈,并进行调优。一直到最后一轮压测结束前,性能调优应该持续进行。

根据大促准备时间不同,我们的侧重点也有差异。准备时间充足的情况下,为了达到大促目标,应该以性能调优为主,扩容升配为辅。准备时间相对不足的情况,可以以扩容升配为主,性能调优为辅。

四、保证整体高可用——强弱依赖梳理

对于需要参与全链路压测的接口,必须进行强弱依赖梳理。

其中强弱依赖均需要具有传递性,即核心接口依赖的接口,也需要继续进行强弱依赖梳理。

强依赖需要给出合理说明,即此依赖接口出现故障后,上游接口为何一定不可用,

弱依赖需要给出对应的降级或熔断措施。熔断一般为rt超时后的自动熔断。降级为紧急情况下需要执行预案,不再调用远端接口,改为使用接口提供方提供的兜底数据。

同时所有核心接口依赖传递到的下游服务,需要核实自身是否有接入流量标组件,避免压测流量落在生产dms。对于没有且无法接入流量标的服务,需要从上游调用方,对该服务接口进行mock。

不参与全链路压测的接口,理论上可以不进行强弱依赖梳理。

五、预期流量确认——限流与容量评估

所有C端直接调用的接口,理论上都需要进行容量评估后实施限流。

容量评估规则为,根据本次首页/商详/确认订单/创建订单。各域的接口容量可以参照之前大促的流量配比,根据各自接口与上述指标的相关度进行容量评估。

如果部分c端接口为本次大促新增接口,那么根据各自业务情况,评估需要承载日常峰值的5-100倍流量,进行对应的限流配置。

出于系统的自我保护,直接C端调用的接口,应该根据容量评估结果,进行限流配置。考虑统一收口与管理,所有服务应该再网关服务商进行限流配置。

为了防止接口调用过程中,出现外部接口限流通过,链路内其他接口调用失败的情况,所有限流配置应该保证除网关测,各服务内部不再配置限流。

六、减负前行——预案梳理与缓存预热

为确保整体稳定性,大促期间一般会降级一些性能损耗比较验证的非核心功能,并且提前进行缓存预热。

当前预案可以分为普通预案与紧急预案。普通预案可以指定开始结束时间自动执行,紧急预案为配置到预案平台手动执行的预案。

对于一些需要大促期间降低限流值,大促后恢复限流的后台接口,也应以限流形式配置到预案平台。

七、且压且珍惜——压测问题记录、复盘与扩容升配

第一轮压测前,需要与各域tl确认参与每一轮压测名单。

第一轮压测开始前,根据压测环境单压结果,各服务评估自身是否需要服务扩容或db升配。并在第一轮压测前开始扩容或升配。

全链路压测期间,每轮压测需要记录出现的问题,以及压测中进行的扩容。压测结束后需要对压测中问题进行复盘,找到问题出现的根本原因并进行解决。

每轮压测间隔,应该有独立的大促发版窗口,确保各域服务进行性能优化后,可以再下一轮压测中验证成果。

全链路压测期间,cpu偏高的服务可以选择一台服务器打火焰图,用户后续分析具体cpu损耗并进行对应调优。

八、战场——大促来临

大促前一周,需要各域tl确认参与大促前一天晚上值班与当天值班的小伙伴。

大促前一周,需要确认大促当天业务方有哪些特殊活动时间,全量push或其他刺激下单手段。并在这些时间点内,各域开发重点关注各自服务水位。

大促前一天23点开始,一般需要各域参与当天值班的小伙,统一到作战室集合。并开始执行之前梳理的预案。

大促当天0点开始,一般会有一大波流量,各域需要关注各自服务水位,决定是否需要启用一些紧急预案。峰值流量过后,可以执行预案恢复操作。

当天当天白天需要各域持续关注各自服务水位,出现水位过高的情况,及时执行预案。

大促当天23点开始,需要各域参与值班的小伙伴到作战室集合,此时如果线上流量过高,需要统一开启前一天23点时执行的普通预案。

九、终章——缩容降配

大促结束后,如果后续短期内没有下一轮大促,我们需要对之前准备过程中做的扩容升配,进行反向的缩容降配。此处需要注意,缩容降配后各服务能承载的流量可能有所下滑,这就需要根据缩容降配情况,调整部分接口的限流值。

posted @ 2021-06-24 13:51  豆豆323  阅读(244)  评论(0编辑  收藏  举报