简单的秒杀逻辑

前置知识

要写秒杀业务首先要了解一些概念和技术

  • qps

  • guava限流

  • mq

QPS每秒查询率(Query Per Second)

每秒查询率QPS是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准,在因特网上,作为域名系统服务器的机器的性能经常用每秒查询率来衡量。对应fetches/sec,即每秒的响应请求数,也即是最大吞吐能力。 (看来是类似于TPS,只是应用于特定场景的吞吐量)

Guava-RateLimiter类实现限流

http://ifeve.com/guava-ratelimiter/

RabbitMq

https://blog.csdn.net/qq_28165595/article/details/90546986

秒杀业务

  1. 首先尝试获取令牌 如果获取失败那么返回错误信息
  2. 访问内存map 查看当前商品是否已经秒杀完成 减少redis访问
  3. 在redis层面做库存预减
    1. 如果预减后的库存小于0 那么有两种可能 一是redis信息还没有初始化 二是商品库存不足
    2. 调用初始化方法 如果初始化后的数据还是小于0那么说明是商品库存不足
    3. 商品库存不足就将商品秒杀完毕的信息放入map中然后返回
  4. 预减成功后判断当前用户是否秒杀过当前商品
  5. 如果当前用户没有重复秒杀,那么将请求信息放入mq中
  6. 处理请求 保证这三个操作,减库存 下订单 写入秒杀订单是一个事物
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值