第四篇 下单链路:从购物车到支付

流量挡住了、库存看住了,接下来是最容易掉钱的环节:下单到支付。这一篇我们逐环节拆解。4.1 讲订单模型,状态机怎么设计、防重复提交靠什么;4.2 聊分布式事务,库存与订单跨 Redis 与 MySQL 两端如何保持一致;4.3 是支付接入,回调验签与幂等两道闸门,掉单问题在这里根治;4.4 讲超时与回滚,未支付的库存怎么按时还回去。

订单与库存数据落在云数据库 MySQL,文档入口 cloud.tencent.com/document/product/236;秒杀订单涉及资金流转,任何状态变更都进日志服务 CLS 留痕。这一篇的目标是:每一笔订单都有明确状态,每一分钱都对得上。

下单链路是整个秒杀系统里链条最长的一段,从点下购买按钮到支付完成,要经过排队、库存扣减、订单创建、支付回调、超时回补五六个环节。链条越长,出问题的概率越高,而且每个环节的故障形态都不一样:有的丢数据,有的重复执行,有的钱货两空。我们把每个环节都设计成可重入、可对账、可回滚,哪怕中途宕机也能靠日志与流水恢复到一致状态。

延伸阅读