美文网首页
高并发秒杀系统

高并发秒杀系统

作者: 可口遇见可乐 | 来源:发表于2022-02-26 14:18 被阅读0次

什么是秒杀

商家在特定时间点,销售限量的商品,会吸引大量用户前来抢购,并且会在约定的时间点同时在秒杀页面进行抢购。

秒杀系统场景特点

  • 网站瞬时访问流量激增
  • 请求数远大于库存,只有少部分用户能够秒杀成功

秒杀需要处理的问题

秒杀系统的设计理念

秒杀设计方案

前端方案

页面静态化:减少动态元素,减轻服务器压力。
禁止重复请求:用户提交之后按钮置灰,禁止重复提交。

后端方案

Redis缓存:将数据库中的库存数据转移到Redis缓存中,Redis中库存扣减成功则同步到数据库,否则直接返回抢购结束。
消息队列:将次要逻辑分离出来,进行流量削峰,提升系统响应速度。

案例:利用消息中间件和缓存实现简单的秒杀系统

Redis是一个分布式缓存系统,支持多种数据结构,我们可以利用Redis轻松实现一个强大的秒杀系统。

我们可以采用Redis 最简单的key-value数据结构,用一个原子类型的变量值(AtomicInteger)作为key,把用户id作为value,库存数量便是原子变量的最大值。对于每个用户的秒杀,我们使用 RPUSH key value插入秒杀请求, 当插入的秒杀请求数达到上限时,停止所有后续插入。

然后我们可以在台启动多个工作线程,使用 LPOP key 读取秒杀成功者的用户id,然后再操作数据库做最终的下订单减库存操作。

当然,上面Redis也可以替换成消息中间件如ActiveMQRabbitMQ等,也可以将缓存和消息中间件 组合起来,缓存系统负责接收记录用户请求,消息中间件负责将缓存中的请求同步到数据库。

相关文章

网友评论

      本文标题:高并发秒杀系统

      本文链接:https://www.haomeiwen.com/subject/hglbkrtx.html