秒杀的实现原理详解

399 阅读2分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第6天,点击查看活动详情

什么是秒杀?

我们这里定义秒杀场景是电商平台为了给客户带来很大的优惠,以低价活折扣促进用户来抢购限量的商品。

那么这里会带来几个问题:

  • 秒杀时大量用户会在同一时间同时涌入,网站瞬时访问流量激增,服务期是否能够承担瞬时压力?
  • 秒杀一般是访问请求数量远远大于库存数量,是否会造成我们超卖?
  • 高并发情况下, 我们的数据库是否能够承受得住?

秒杀架构设计

限流: 基于上面的问题,大量用户访问,我们需要限制一小部分用户能访问到后端服务,大部分用户被截留。

削峰:对于秒杀系统瞬时大量的用户访问,瞬时压力会对我们系统造成极大的冲击,有可能导致系统瘫痪。所以削峰是我们必须要坐的,这里面常用的手段就是消息中间件和异步处理。

内存缓存:秒杀系统最大的瓶颈一般都是数据库读写,由于数据库读写属于磁盘IO,性能很低,所以,我们把部分数据和业务逻辑转移到缓存系统来处理。

架构方案图

image.png

如何解决高并发

有这么个条件:在秒杀系统中我们使用Redis实现缓存,我们Redis的读写并发量在10W左右,我们的商城的并发在50W左右,如果这时候顶额的并发一起进入Redis会是个什么后果呢?显而易见就是我们的Redis会挂掉的!

这里我们给出一个小小的方案!

将我们的商品库存分开放置,来转移我们的请求,以减少对单哥Redis请求压力!

或者利用公爵完成负载军和,这样也可以更好的完成我们的并发压力!

好了今天就先介绍到这吧,有问题可以随时讨论!谢谢大家