秒杀方案

文章目录

  • 秒杀方案
      • 页面静态化
      • nginx限流
      • 漏斗算法
      • MQ流量削峰
      • 分库处理

秒杀方案

秒杀方案_第1张图片

秒杀
高并发
高可用

高并发

  • 分布式服务、负载均衡、集群
  • 保证单个服务的QPS足够高
  • 必须尽可能减少单个业务执行时间

秒杀方案_第2张图片

页面静态化

秒杀页面使用Thymeleaf实现页面静态化(存在本地服务器),不用频繁请求数据库得到商品数据,通过视图解析器对数据的渲染返回到用户,减轻服务器的压力。

nginx限流

平常10台服务器 能稳定运行,可是一个秒杀活动出现后会在短时间内接收大量的请求,最普遍的做法是横向拓展增加服务器的数量。可是这有一个弊端,请求数量不确定,无法确定要增加多少台服务器才能支持秒杀活动。

使用nginx进行限流(可以解决加服务器的弊端)

假如有10000个请求,拦截一半放行5000
秒杀方案_第3张图片

漏斗算法

网关的过滤器编写限流规则结合redis实现漏斗算法
1、非匀速:根据服务器性能调整生成token数
2、匀速:定量生成token

1s产生3000个token

请求过来取token

删token

拿到token的请求才能通过后面的服务(没有token的被后面服务鉴权后返回)

MQ流量削峰

生成订单后交给MQ实现订单入库(MQ的流量削峰)

分库处理

假如有10类热卖商品,如何处理

分库,分十个数据库,每个数据库等量存放10类商品,多个线程访问进行购买的时候可以通过转发的方式访问不同数据库进行操作。

Memorial Day is 543 days
I miss you
xiaokeai

你可能感兴趣的:(java开发技巧集锦,数据库,分布式,java,redis,nginx)