系统设计学习-秒杀系统

本文探讨了秒杀系统的设计,包括需求分析、衡量维度、业务流程和面临的问题。提出了稳定性、可用性和分区容错的策略。在业务流程设计中,强调了库存扣减的原子性,使用lua脚本保证并发时的库存一致性。同时,文章还讨论了订单创建、支付超时监控以及多种性能优化手段,如缓存、批量操作和消息队列等。
摘要由CSDN通过智能技术生成

秒杀系统

需求分析

尽量满足高并发,用户体验良好,支持延迟取消订单。

衡量/考虑维度

稳定性:
可用性:
分区容错:
性能指标:平均响应、QPS(平均)、TPS(系统吞吐)、VU(并发用户数量)
单机性能:CPU、内存、磁盘资源、文件句柄、网络IO

常用策略
稳定性:负载均衡、限流和熔断措施、压测、错误处理
可用性:集群/分布式、容器和云、探活、自动恢复
分区容错:集中的可靠入口、投票机制

业务流程分析

秒杀系统在于用户会在某一时刻集中进行请求,一般情况下,用户提前进入页面等待,并且在前 10s 内会产生大量的刷新操作,在时间到达的一刻,会产生人为/非人为的大量点击/请求事件。

请求到达后,如果满足秒杀条件,会产生对应的订单,然后通知用户进行支付。

用户可能支付也可能不支付,此时订单超时需要取消。

用户可能会多次抢购同一个商品,因此还需要考虑是否允许重复购买的问题。

面临的问题和原因

  1. 并发量高的问题:活动的时间窗口很小,导致用户的行为即中产生,属于活动天然自带的问题。
  2. 恶意刷单的问题:秒杀价格低,天然会引诱灰产进行抢购倒卖,灰产为了尽量的
  3. 正常的重复点击问题:用户着急抢货,网页反应慢,用户希望通过多次点击获得更多的抢货机会导致。现在部分用户也会下载插件来进行快速的抢货。
  4. 超卖问题:并发情况下库存的扣减不准确导致的问题。
  5. 延迟取消订单问题:部分用户只是先去占用可购买资格,但是不一定会购买。
  6. 库存扣减一致性问题:并发导致的

业务流程设计

Created with Raphaël 2.3.0 秒杀 生成订单 支付

秒杀操作到扣减库存

Created with Raphaël 2.3.0
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值