如何设计一个秒杀系统
2019-05-11 本文已影响0人
躁动的中年大叔
核心思想
- 尽可能的在上游将请求拦截,使得只有少量的请求能到数据库。
- 充分利用缓存
详细过程
- 客户端拦截:当用户点击【秒杀按钮】后,将【秒杀按钮】置灰,避免多次点击。
- 上游服务请求过滤:用户可能使用脚本进行发起大量请求,这种情况下就需要做请求拦截,例如10s内只允许同一个用户的一个请求做后续处理,其他都直接返回“没有秒杀到”的结果。
- 入队操作: 经过步骤2后可能依然会存在大量的请求,这些请求进消息队列。
- 操作缓存:将删减库存在缓存系统(Redis)中进行,后续同步到数据库,这样数据库就没什么压力了。