菜鸟的系统架构师如何应对交易系统激增的系统流量

2020 年 6 月 25 日

菜鸟的系统架构师如何应对交易系统激增的系统流量

物流系统的难题


菜鸟的物流系统脱胎于天猫、共享交易,系统之间存在着"打断腿连着皮"的紧密的联系,多年来双方配合默契,承担着整个泛电商业务最核心的链路。


随着集团业务的蓬勃发展,线上购物更加深入人心,在每年双十一订单峰值纪录不断被打破的背后,技术投入和成本也在不断增加,特别是近几年,支付的能力提升已经渐渐可以和下单持平,这对物流系统的压力也越来越大。交易和物流两者间密不可分的技术脐带逐步变成了缠绕在菜鸟脚上的链条。



双十一的巨大成本压力


仅分析 2015 年双十一峰值背后的业务数据,其中 0 点起创建的订单,在前一个小时完成发货的订单仅有几十万,相比支付订单量可以说九牛一毛,可以看出,支撑大流量高并发的订单创建,并非物流领域自身业务的刚需驱动,而更多的是为了保障交易-支付-物流链路的稳定。


再从业务场景上来看,物流在双十一是以单据驱动的核心业务,即发货。发货对应的是实物的实操业务,需要大量的人力物力投入,这种物理空间上的线下协同能力,具有流量相对平稳,无明显峰值的特点,整个业务流程复杂、业务执行周期长、参与角色较多。从用户的核心诉求来说,用户只关心交易订单是否成功创建,而物流订单是否能马上创建出来,并不是刚需。


因此,如果交易订单的创建峰值每年持续上涨,物流系统就需要对等部署同样的机器来保证同步链路的顺利执行,从物流业务的特点来说,这不是必须的,对一个非刚需的场景,每年投入大量的成本来保证同步链路,是非常不明智的,物流系统的架构升级已经刻不容缓。


RocketMQ——菜鸟架构师的选择


这也是菜鸟的系统架构师王维在 2016 年双十一前面对的最大挑战,那一年双十一的订单创建峰值要从 15 年的 18 w 涨到 30 w。他要做一次意义重大的升级,让交易和菜鸟的业务能更清晰的划清业务模型和链路,让天猫快速激增的系统流量不再让菜鸟系统追赶,让菜鸟能专注去完成物流领域内的事情,让天猫交易能更专注的保障交易链路的稳定。


在双十一订单峰值的要求下, DB 和 REDIS 显然不能满足异步解耦的要求,因此王维将目光锁定在了 RocketMQ 上,一个在阿里集团内部广泛使用的分布式消息中间件。


RocketMQ 在阿里巴巴已经经受了双十一多年的的洗礼,服务性能已经是世界领先水平,可以支持用户亿级的堆积,同时客户端也提供完善的 SDK 让用户能做到精确的控速消费,在架构解耦和削峰填谷上,有明显的优势。


使用 RocketMQ 做异步解耦,物流订单中心在满足自身领域业务的前提下,只要保持一个较高水位平稳消化支付的交易订单流量,无需承受交易支付的高峰,既可以减少大量的人力物力成本投入,可以规避同步依赖时的稳定性风险。两个系统保持良好的沟通,更加专注做好自己的事。简单说,如果交易创建的峰值是 50w/s, 持续 20 分钟,如果物流系统通过 RocketMQ 控制消费速度,比如保证 8w/s 的消费,那么也可以在 2 小时内消费完所有的数据,对用户来说,整个过程也是无损无感的。


与消息中间件团队深度合作,充分利用 MQ 削峰填谷的作用后,在 2016 年双十一前,通过 2 个的月的开发、测试、验证、灰度等工作后,王维成功推动了菜鸟系统架构从电商高并发向更加贴合物流作业的特点转型。16 年后,在电商持续攀高的下单峰值背景下(4 倍增长),菜鸟物流系统峰值 QPS 保持不变,节省了大量技术成本,并且为未来多年的成本降低奠定了基础。



作者介绍


周礼,花名:不铭,阿里云智能技术专家 。主要负责阿里云消息中间件的研发工作,关注分布式消息服务、云原生等技术方向。


本文转载自公众号阿里巴巴中间件(ID:Aliware_2018)。


原文链接


https://mp.weixin.qq.com/s/C5OosuY2pYhRu23RPXCegA


2020 年 6 月 25 日 10:001425

评论

发布
暂无评论
发现更多内容

第三周手写单例模式(饿汉模式)

吴建中

极客大学架构师训练营

架构训练营第四周 - 作业

无心水

极客大学架构师训练营

基于阿里云服务网格(ASM)的GRPC服务部署实践

韩陆

Kubernetes gRPC Service Mesh

架构师训练营第三周作业和小记

tuuezzy

架构师 极客大学架构师训练营

架构师训练营 第三周 命题作业

RZC

Zookeeper集群模式启动

tunsuy

zookeeper 源码分析 socket 分布式集群

太赞了!一份适合程序员的精选面试题清单。

JackTian

GitHub 编程 程序员 面试题 开源项目

极客大学架构师训练营 系统架构 第7课 听课总结

John(易筋)

极客时间 系统架构 高并发 极客大学 极客大学架构师训练营

架构师训练营第四周-总结

无心水

极客大学架构师训练营

抖音、腾讯、阿里、美团春招服务端开发岗位硬核面试(完结)

aoho

面试 后端 阿里

极客大学架构师训练营 框架开发 第三次作业

John(易筋)

极客时间 设计模式 极客大学 极客大学架构师训练营 框架开发

组合设计模式编码&手写单例模式

吴建中

极客大学架构师训练营

【非原创】微服务设计

Arthur

Zookeeper的数据剖析

tunsuy

zookeeper 日志分析 事务 快照 数据恢复

第三周作业

晨光

良心推荐 | LeetCode(力扣),算法、数据结构的学习良伴

YoungZY

算法

rodert单排学习redis进阶【白银一】

JavaPub

Java nosql redis

区块链改变数字营销与广告市场

CECBC区块链专委会

区块链技术 广告业 精准投放 去中介 公开透明

极客大学架构师训练营 框架开发 模式与重构 JUnit、Spring、Hive核心源码解析 第6课

John(易筋)

spring 极客时间 极客大学 极客大学架构师训练营 JUnit

架构师训练营第三周命题作业

lwy

极客大学架构师训练营

面向对象设计模式课程小结

行下一首歌

极客大学架构师训练营

Oracle SQL调优系列之看懂执行计划explain

Nicky.Ma

sql

架构师是怎样炼成的-3-2-设计模式

闷骚程序员

Zookeeper通信协议详解

tunsuy

zookeeper TCP/IP 通信协议

架构师训练营第四周

Melo

一个汉字占几个字节你真的记住了吗?

Java旅途

第三周总结

晨光

[架构师训练营] Week01 -学习总结

谭方敏

架构师训练营 第三周 学习总结

RZC

第三周-设计模式-学习总结

吴建中

极客大学架构师训练营

架构师训练营第三周学习总结

lwy

菜鸟的系统架构师如何应对交易系统激增的系统流量-InfoQ