如何设计一个秒杀系统

秒杀系统,即一个在多用户在极短时间内争夺有限资源的问题。

如何设计一个秒杀系统,秒杀系统主要的难点在于:

1、不能因为并发高,而导致实际被抢占资源数目超过实际数目。

2、尽量遵从先到先得的公平原则。


个人有这么几个思路:

1、将并发度降低,通过一定算法,只让具备一定特征的用户能抢到,如用户的uid取摸。

这样的好处是通过简单的策略控制使问题变简单了,但是违背了先到先得的公平原则。这样在参与度不高的情况下也极容易露出马脚,自己抢不到,但资源仍剩余。


2、将过程分成两步,一为每个用户请求标序号,二客户端隔一秒后请求后端,获取最早请求的用户即为获胜者。

  为用户请求标序号可通过往数据库中插入记录的方式,自然就能分清先后。隔一秒客户端再发请求从数据库查找时,也能找到前排的记录。

这样保证了公平性,但客户端和服务器端增加的交互。


3、加锁

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值