秒杀系统
需求分析
尽量满足高并发,用户体验良好,支持延迟取消订单。
衡量/考虑维度
稳定性:
可用性:
分区容错:
性能指标:平均响应、QPS(平均)、TPS(系统吞吐)、VU(并发用户数量)
单机性能:CPU、内存、磁盘资源、文件句柄、网络IO
常用策略
稳定性:负载均衡、限流和熔断措施、压测、错误处理
可用性:集群/分布式、容器和云、探活、自动恢复
分区容错:集中的可靠入口、投票机制
业务流程分析
秒杀系统在于用户会在某一时刻集中进行请求,一般情况下,用户提前进入页面等待,并且在前 10s 内会产生大量的刷新操作,在时间到达的一刻,会产生人为/非人为的大量点击/请求事件。
请求到达后,如果满足秒杀条件,会产生对应的订单,然后通知用户进行支付。
用户可能支付也可能不支付,此时订单超时需要取消。
用户可能会多次抢购同一个商品,因此还需要考虑是否允许重复购买的问题。
面临的问题和原因
- 并发量高的问题:活动的时间窗口很小,导致用户的行为即中产生,属于活动天然自带的问题。
- 恶意刷单的问题:秒杀价格低,天然会引诱灰产进行抢购倒卖,灰产为了尽量的
- 正常的重复点击问题:用户着急抢货,网页反应慢,用户希望通过多次点击获得更多的抢货机会导致。现在部分用户也会下载插件来进行快速的抢货。
- 超卖问题:并发情况下库存的扣减不准确导致的问题。
- 延迟取消订单问题:部分用户只是先去占用可购买资格,但是不一定会购买。
- 库存扣减一致性问题:并发导致的