秒杀

day1 2020.8.6 21.27

压力测试

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

秒杀定义

  1. 在高并发的情况下,购买某个商品,从而下订单。

秒杀问题

  1. 超卖,一件商品卖给了多个人
  2. 保证用户体验

保护流程(要有先后顺序)

  1. 最核心基础问题:超卖
  2. 优化系统,提高吞吐量:令牌桶限流、Redis缓存、消息队列异步处理订单

超卖问题

1.概念

2. 业务场景

在这里插入图片描述
首先要接收来自用户的秒杀请求参数,然后将参数交给业务层,业务层拿到参数之后,首先去数据库中找相应商品的库存信息。若有库存,则减库存,然后为用户创建订单,如果没有库存,则拒绝用户请求。

3. 解决方案

第一种–悲观锁:

第一种方式:在方法中加上synchronized,相当于加上了悲观锁,拥有锁才可以更改资源(和@Transactional一起使用会有问题),所以要将synchronized放在控制器调用的地方。

缺点1:会让线程排队,一个一个执行。系统效率、用户体验
在这里插入图片描述
缺点2:JDK级别的锁仅在JVM进程下有效,控制不了集群架构或者分布式架构的资源增强问题。
在这里插入图片描述

需要了解的知识点:@事务、同步代码块、悲观锁、乐观锁

第二种–乐观锁:

在这里插入图片描述
当利用mysql分布式锁的时候,插入或者更新一个字段的时候,就自动加锁。如果不设置版本号,则其他的会在固定时间一直访问该资源,在这儿加上了版本号,当自己的版本号不一致的时候,自动拒绝这些请求,减少了资源的浪费。

第三种–Redis分布式锁

在这里插入图片描述

接口限流

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Redis缓存(设置过期时间)

在这里插入图片描述

消息队列

在这里插入图片描述
不丢失错误

加盐

在这里插入图片描述

分布式锁(在分布式的系统中加锁)

1. 什么情况需要加锁

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值