架构师日记-从技术角度揭露电商大促备战的奥秘
今年的618大促已经如期而至,接下来我会从技术的角度,跟大家聊聊大促备战的底层逻辑和实战方案,希望能够解答大家心中的一些疑惑。
年份 | 618销售额(亿元) | 年销售额(亿元) | 618销售额占比 |
2022 | 3793 | 33155 | 11.4% |
2021 | 3439 | 32970 | 10.4% |
2020 | 2694 | 26125 | 10.3% |
2019 | 2017 | 20854 | 9.7% |
2018 | 1592 | 16769 | 9.5% |
-
影响系统稳定性的因素都有哪些? -
稳定性要求与日常对系统的高可用要求有哪些不同之处? -
面对各种不稳定因素,我们应该如何应对?
-
流量大小:大促期间,流量往往是平常的几倍甚至几十倍,这对系统的稳定性提出了极高的要求,一个小问题,在流量放大后,往往会演变成大问题; -
数据量大:以2022年的订单为例,订单额达到了3.4万亿,在海量订单数据的场景下,一个简单的查询,都会变得非常具有挑战; -
场景复杂:各类促销优惠、平台、商家、运营等各种营销玩法的叠加,使订单生产链路始终处于高负荷运算状态; -
交付链路长:各端的流量分发、促销计算、加车、结算、提单、支付、物流配送、客服、售后等各个流程节点都需要保持稳定。如果一个服务99.9%的可用率,那么100个相关服务节点组合起来,可用率就只能达到99.5%了,而那0.5%的不可用,对应的都是大量的订单流失; -
容忍度低:消费者要求良好的用户体验,商家需要促销快速生效,平台则要减少错误和资损,保护消费者和商家的利益。更高的期望和关注,带来的是更低的耐心和容忍度;
-
时间紧迫:大促期间需要在短时间内保证服务的稳定性,通常没有时间深入技术细节; -
视角不同:稳定性注重整体业务效果,而高可用性注重服务响应结果; -
维度不同:实现业务稳定性保障通常是建立在系统高可用性的基础之上,并配合相关的服务运营策略,以实现更高维度的业务稳定性。
3.1 应用视角
3.1.1 单元化
-
降低整个应用因某个单元故障而导致服务中断的风险; -
降低故障排查的难度,因为可以快速定位出问题的单元并进行修复; -
每个单元都可以独立维护和升级,这样可以降低整个应用因某个单元升级或维护而导致服务中断的风险; -
每个单元都可以独立扩展和缩减,这样可以根据实际需求动态调整应用的规模。
3.1.2 监控预警
-
监控粒度方面:监控按照层级分为底层中间件监控、依赖RPC监控、方法监控、机器监控、系统监控、业务监控、流程监控、整体的大盘监控; -
监控的灵敏度问题。灵敏度过低会导致部分问题被延时暴露甚至被隐藏,而灵敏度过高则会造成信息爆炸,难以分辨信息的主次。因此,在实施监控前需要提前做好功课,确定合适的灵敏度; -
监控的覆盖度方面:关注监控服务单元、监控指标梳理、监控触达方法。比如:监控需要覆盖容器数、资源指标、运行环境(JVM、线程池)、流量大小、限流值、上下游依赖、超时时长、异常日志、数据容量、模型规模、特征数量等,并可以进行时间维度的纵向对比; -
监控的准确性方面:看可用率,需要看上游调用方的,可能200ms响应时长,对于调用方来说,已经属于不可用的区间了。看CPU繁忙程度,不能只盯着利用率,还要结合容器核数和CPU负载来分析; -
预警解除方面:接到预警消息,及时排查并处理风险,切不可将小问题演变成大问题。先确认是单机硬件或网络问题,还是集群通用问题,如果是通用问题,能否通过服务调用链追踪技术快速定位问题点,确认好问题原因,才能做好应对预案;
3.1.3 日志打印
3.1.4 快速失败
-
线程池超时时间的设置,关键系统要拥有动态调整线程池运行参数的能力; -
利用好工具已有的能力,比如:JSF,JimDB,JMQ等中间件也都支持超时失败的动态调整能力; -
服务限流也是快速失败的一种实现策略,常见的微服务框架和物理网关一般也都支持类似功能;
3.1.5 服务限流
-
限流方式和阈值需要经过系统多轮压测验证,以确保数据指标的准确性。 -
对于业务聚合系统,主要依赖于第三方服务,通常没有存储层,瓶颈往往出现在应用服务本身。这种情况下,单机限流是比较好的方式,因为这种方式对于服务扩容或缩容非常友好。只需保证扩容的容器硬件配置与线上容器保持一致即可。 -
对于底层基础服务,瓶颈点往往在数据存储层,而存储层的扩容成本相对较高,实现起来也比较困难。在这种情况下,全局集中式限流是一个很好的选择,其目的是优先保证存储层的稳定性。 -
建议根据调用方的重要程度进行精细化限流运营,确保在极端情况下,具有优先保证核心业务可用性的能力;
3.1.6 业务降级
3.2 存储视角
3.2.1 数据库
3.2.2 缓存
3.2.3 Elasticsearch
3.3 运营视角
3.3.1 备战小组
3.3.2 军演压测
3.3.3 技术封版
3.3.4 每日巡检/假期值班
3.3.5 应急预案
本文从技术角度深入分析了大促备战的背景和重要性,重点介绍了备战期间稳定性保障的相关措施,包括具体的指导方向和落地细节。本文旨在回顾和梳理备战期间的关键步骤,以帮助我们更加从容地应对系统稳定性的挑战。虽然大促备战是一场紧急行动,但备战的效果离不开平时的协作共识和技术积累,过往的经验和教训,在此刻将得到充分验证。
-end-
作者|
本文来自博客园,作者:古道轻风,转载请注明原文链接:https://www.cnblogs.com/88223100/p/Revealing-the-Mystery-of-E-commerce-Promotion-and-Preparation-from-a-Technical-Perspective.html