您的位置:首页 > 教育 > 培训 > 谷粒商城实战(032 业务-秒杀功能3)

谷粒商城实战(032 业务-秒杀功能3)

2024/10/31 9:51:05 来源:https://blog.csdn.net/wang_book/article/details/139354416  浏览:    关键词:谷粒商城实战(032 业务-秒杀功能3)

Java项目《谷粒商城》架构师级Java项目实战,对标阿里P6-P7,全网最强

总时长 104:45:00 共408P

此文章包含第319p-第p325的内容


秒杀首页编写

在这里插入图片描述

预告秒杀信息

在这里插入图片描述
创建action请求
在这里插入图片描述
创建service
在这里插入图片描述

模糊查询 使用*号
ps:redis单线程,你用keys会阻塞一段时间的,keys会阻塞其他命令执行等(后面数据量大的时候,直接影响redis的性能)
在这里插入图片描述

在这里插入图片描述
redis的一些命令
在这里插入图片描述

全要的话可以写0到-1就可以了,这里使用的是 -100,100
在这里插入图片描述
查到这个场次的全部商品信息
在这里插入图片描述

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

在这里插入图片描述

切记把随机码去掉
在这里插入图片描述
开始秒杀的时候就可以不需要清空随机码了
在这里插入图片描述

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

设置秒杀服务的网关信息
在这里插入图片描述
配置hosts域名
在这里插入图片描述

获取sku信息

创建获取sku信息的action请求
在这里插入图片描述
生成service
在这里插入图片描述
把各个并行任务用complete future执行,比你原来串行话执行好

秒杀功能设计

高并发
在这里插入图片描述
在这里插入图片描述
恶意请求 在网关层进行拦截
流量错峰 使用验证码等或者加入购物车 然后再进行付款
在这里插入图片描述

前端限流 按钮隔1秒才能点一次 防抖节流
在这里插入图片描述
降级页面 流量太多了就引导到错误页面“请稍后访问”
不支付,订单超时后会恢复库存,订单过期

登录校验功能的实现

这里对购物车按钮进行时间划分
在这里插入图片描述
从session里拿到场次和随机码
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
拦截器
在这里插入图片描述

秒杀流程

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

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

在这里插入图片描述

这里防止同一用户多次购买 可以在购买成功后在redis里加一个数据,用 用户id+场次id+sku的Id,场次结束的时候失效,否则会越来越多,过期时间是结束时间减去当前时间
然后用redis SETNX(不存在才占位) 来判断
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
使用信号量,acquire方法会阻塞redis 所以我们不使用这个方法
在这里插入图片描述
我们使用tryAcquire方法(快速尝试方法)
在这里插入图片描述

在这里插入图片描述
这样看120毫秒就可以快速释放了
在这里插入图片描述
不要纠结,不释放信号量,信号量就回不去

这段验证逻辑可以直接放在Nginx中来实现,项目中只写真正的下单逻辑即可

在这里插入图片描述

配置rabbitMQ

流量削峰
在这里插入图片描述

引入amqp包
在这里插入图片描述

配置rabbit
在这里插入图片描述

写配置类
在这里插入图片描述

创建秒杀实体类
在这里插入图片描述

创建队列和绑定关系
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
订单放到消息队列里后就可以慢慢处理了,用feign远程调用没关系的。
在这里插入图片描述

信号量设置不用等待
在这里插入图片描述
查看运行时间 这里只花费了12ms
在这里插入图片描述
在这里插入图片描述

页面展示

在这里插入图片描述

在这里插入图片描述
**加粗样式**

在这里插入图片描述
秒杀服务不去调用其他的服务 只是向mq发送数据 由mq进行调用
在这里插入图片描述


版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com