【实战总结】记录一次电商大促系统保卫战

206 阅读6分钟

一、事情简介

笔者所在公司主营的是电子3C产品的回收业务,所以每逢一些手机厂商的新品首销期,我司的系统都会面临平时3倍以上的流量冲击,因为很多用户会通过以旧换新的方式以更优惠的价格购得新机,新品卖的多,回收旧机的订单数量自然也就多。

本文记录的是2024年10月底的一波知名手机厂商新品首销,其中有小米15、OPPO Find X8 系列等等。

image.png

笔者站在一名后端工程师的角度,把产研部门在本次首销期前、中、后干了什么做一次记录,并对其中的要点进行整理和归纳,旨在沉淀为一套可复用、可借鉴的系统保障方法论。

二、实况记录

1、 事前

1.1、 确立目标

面对大促流量高峰期,我们的目标只有一个:平稳!

只有保障系统高可用性,让核心交易链路保持平稳,才能更好地支撑用户下单,促成交易,我们才能接得住这一大波订单,公司才能增加收益。

1.2、 预估流量

由产品经理和运营、销售等业务方共同预估此次首销期的日均订单数量(最高达平时的8倍),以及哪天会迎来下单量最高峰(11月2日周六),还有首销期大概持续多久(持续到11月10日)。

1.3、 扩容服务器

根据业务方预估的流量,研发这边决定对交易链路的相关模块提前进行扩容,提高系统稳定性。

本次我们扩容了tomcat服务器和数据库(增加了从库节点),Redis和RocketMQ等中间件平时的负载就很低,所以先没有进行扩容。

1.4、 提前封版

公司所在云平台在10月25日就已经封版,禁止一切发版、数据库改动、配置文件改动,特殊情况需要向部门领导申请。

提前封版是非常有必要的,它能减少因发版带来的不稳定性。

1.5、 梳理系统薄弱点

根据“木桶效应”(短板效应),系统的承载上限往往取决于最薄弱处,一旦短板被击穿,那么系统也可能面临崩溃。有必要提前梳理出容易出问题的点,然后做出相应的防范措施。

image.png

举3例我们本次梳理出的薄弱点和防范措施:

  1. 公司交易账户保证资金充足,不够的话需要提前充好
  2. 禁止公司内部人员导出大批量数据,否则可能会让服务器CPU飙高
  3. 交易链路中某个校验需要依赖第三方接口,为了防止第三方出现大量接口超时,我们在此处设置了开关,必要时刻可以跳过校验

1.6、 通知相关方

以我们产研部门为起点,通知此次首销涉及的相关人员,有可能是公司内部人员,也有可能是第三方,总之目的在于让他们做好相应准备,迎接即将到来的流量冲击。

此次我们做了以下通知:

  1. 通知内部人员禁止导出大批量数据
  2. 通知第三方,相关接口在首销期的QPS会大幅上升
  3. 我司使用了环信的即时通讯服务,为了保障首销期系统稳定性,我们临时购买了他们的一些增值服务(提高接口QPS)

1.7、 安排人员值班

根据做单的时间点,我们将产品、后端、前端、测试四个岗位的人员分成2个批次进行值班,一批是早班,另一批是晚班。

一旦系统有问题,值班人员立马放下手头工作,优先解决问题。

1.8、 拉群

部门的研发主管为应对首销,专门在飞书拉了个“首销作战群”,并把支撑首销的核心人员拉进来,有利于首销期重要信息的传递和指令的传达。

1.9、 开会集思广益

临近首销的时候,部门组织了一次会议,主管把目前首销的准备情况讲述了一遍,同时让大家一起仔细检查一下有没有遗漏,或者有哪些准备可以改善的。毕竟众人拾柴火焰高,要充分发挥团体的智慧。

2、 事中

2.1、 定时监控系统

我们的安排是,值班的前端和后端人员(每个人负责不同模块)每个小时观察一下服务器的CPU使用、内存使用、报错数和告警情况,同时把这些信息同步到首销作战群,让领导和同事能够实时知晓系统是否平稳。

2.2、 相关信息归档

我们归档了以下内容:

  1. 定时监控的情况(不同时间点正常与否),包括当时发现的一些异常,以及异常的后续跟进情况
  2. 由产品或者用户反馈的异常,同时也记录后续跟进情况

记录这些信息的好处在于方便事后我们去回顾首销的状况、统计异常出现的数量、暴露我们事前准备哪里还不够充分、以及总结系统哪些地方还可以优化改善。

2.3、 根据情况动态调整计划

正所谓计划赶不上变化,我们事前的准备难以100%应对所有状况,业务方预估的流量也不一定完全准确,所以要能够做到临时改变计划以应对突发情况。

本次我们也做了一次临时调整,原本只安排了2天的值班,后来发现流量高峰持续时间拉长了,所以把值班时长增加到了4天。

3、 事后

3.1、 开会总结复盘

首销结束之后,部门召开了一次会议,让大家说说哪些地方做得好,以及哪些地方可以改善,首销暴露的一些问题也可以提需求后续进行优化。

本次我们做的好的地方主要是事前准备较为充足,所以首销的异常很少,总体平稳,首销保卫战宣告成功!但同时也发现了一些功能上的缺陷,流量预估也不准(只有4倍),还有就是导出功能应该作为离线功能与核心交易链路隔离开。

不断地总结和反思,才能不断提高团队的作战能力。

三、总结沉淀

通过这次首销,笔者深刻地认识了互联网公司是如何应对电商大促的,成功的关键在于事前准备。最后我把这些流程和步骤进行抽象和归纳,对于系统保障工作,即便是在不同的公司和行业,我相信这也是有参考价值的。

image.png