再见,秒杀

5be72629e9af6d452693dc25315b95dd.png

若有收获,请记得分享和转发哦

前言

最近心血来潮,想起前段时间公司举办的线下秒杀活动不理想,想研究一下秒杀系统的优化。当时活动现场有 200+ 会员,由于我们先前没有经验,各种原因导致用户在秒杀的时候 APP 页面白屏、卡死。业务部门想把手机甩我们开发脸上......当时我刚毕业也刚入职不久,不敢发表意见。现在逐渐膨胀,是时候重新设计一套秒杀系统了......

问题分析

有经验的同学看到 200+ 会员都出现白屏、卡死,可能会觉得公司技术太 low 。其实不然,公司系统架构还是很好的,大佬搭建了一套 SpringCloud 组件,都是比较新的版本。这次秒杀活动失利的确是之前没有这样的经验,很多代码考虑没到位,访问数据库的次数太多。虽然会员数是 200 ,但是会员从进入秒杀页面,点击秒杀商品,再到秒杀下单,这中间夸了几个微服务,对于数据库的访问远远不止 200 。

对代码分析之后,我们公司秒杀其实是和普通订单是同一个流程,只是加了一个秒杀 ID 字段。下单流程在一个事务里面各种校验、跨服务调用、加锁扣减库存、插入订单商品信息、物流配送信息......等。这样跨服务和多次访问数据库很明显无法满足秒杀业务瞬间流量巨大的特性。就像下面的图

3922e232bfafd7dc8f617b619e5f1ee4.png

556c16053f1b793b8bd3f373455bf1c6.png

9df2399fc610bd641dba6d50bbb4f437.png

55913b9a2521764dbad67cf7eefc17aa.png

54ef6b5216e56b8c257b8a817a3f02cc.png

1add21ef0ad28b08c134dab03d5058c3.png

2def806ca0ff103cfd599c87f6e6458a.png

362d374c12db2d9ebd127b3d1a3cc33b.png

2e1b27a95041dc21d822787ece2ec13e.png

e481b55ac681e040350a7d579749b79e.png

a72597e985faddda0891ca53e80cd3b7.png

cabd1bd64b84343473a163d3b2e131cd.png

2a97e46f2b2987e1c42c5c6fda767b6b.png

a57eabb613052e84d557b2afc18c3f32.png

秒杀流程

下面就是具体的秒杀流程详细图,按顺序描述每一节点要考虑的问题以及解决方案

271a61f2fd33c8bdad64a46f5395134c.png

55b32b033ea7d2e71cd8bd124e999a97.png

ec90da9a145fff7efe959c3402f14fd9.png

80579905b98d9f9d2237d3b351698e0a.png

73d5d9ae58a771bd77233738ba2bd9b0.png

346404b6b4530fd270f061bddb3a3905.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值