1、最近项目的情况

商品秒杀

秒杀开始前,启动一个rabbitmq的延迟队列。在时间到点后,把数据库中的秒杀商品库存放到redis的缓存中,在用户刷新页面的时候,返回开启秒杀的标记,秒杀开始前页面的按钮是灰色的,不会发送下单接口,会请求秒杀开启的接口,接口返回秒杀开启时间,是否开启等信息

前端限流

设置用户点击后,等待1秒,并且后端没有返回前一个请求结果的时候,无法进行第二次点击,最长间隔五秒后自动解除。

后端限流

每个用户只能在一定时间内秒杀一次,设置为10秒,具体的作用是使用redis的键过期策略,setnx 定时过期,已经设置过值的不能再次设置,

  1. redis中获取库存key
  2. 使用watch 监视库存key
  3. 获取库存查看秒杀是否开始,没有开始则直接返回给前端
  4. 判断set中是否存在该用户id,判断是否已经秒杀成功,有值则直接返回给前端
  5. 判断商品数量,库存小于1则秒杀结束
  6. 执行multi 开启redis事务,然后进行库存扣减和存入用户id的操作
  7. 执行事务,结束watch
  8. 返回给前端是否秒杀成功
  9. redis执行成功一个支付秒杀,就在mq中启动一个消息去处理后续的订单操作,这个时候mysql 里边的库存也会减少。

下单支付

2、主要从事的哪方面的开发

3、微服务框架

4、springMvc 的执行流程