如何设计一个秒杀系统

核心思想

  1. 尽可能的在上游将请求拦截,使得只有少量的请求能到数据库。
  2. 充分利用缓存

详细过程

  1. 客户端拦截:当用户点击【秒杀按钮】后,将【秒杀按钮】置灰,避免多次点击。
  2. 上游服务请求过滤:用户可能使用脚本进行发起大量请求,这种情况下就需要做请求拦截,例如10s内只允许同一个用户的一个请求做后续处理,其他都直接返回“没有秒杀到”的结果。
  3. 入队操作: 经过步骤2后可能依然会存在大量的请求,这些请求进消息队列。
  4. 操作缓存:将删减库存在缓存系统(Redis)中进行,后续同步到数据库,这样数据库就没什么压力了。

你可能感兴趣的:(如何设计一个秒杀系统)