谷粒商城实战(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进行调用
在这里插入图片描述


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/682900.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

温补晶振TG5032SGN专用于无线通信设备应用

随着无线通信技术的快速发展,设备对时钟源的精度和稳定性的要求越来越高。爱普生温补晶振(TCXO)TG5032SGN因其优异的性能,成为无线通信设备中不可或缺的关键组件。TG5032SGN采用紧凑的封装设计,非常适合集成到各种无线…

Linux---进程/磁盘管理

文章目录 目录 文章目录 一.Linux中进程的概念 二.显示系统执行的进程 2.1: ps 命令 2.2 top 命令 三.终止进程 四.磁盘分区 一.Linux中进程的概念 在Linux中,进程是指操作系统中正在执行的程序的实例。每个进程都由操作系统分配了独立的内存空间,用于…

hadoop配置nfs,window映射nfs

1.修改hadoop配置如下内容,并同步到其它节点 core-site.xml新增配置项 <!-- 允许hadoop用户代理任何其它用户组 --><property><name>hadoop.proxyuser.hadoop.groups</name><value>*</value></property><!-- 允许代理任意服务器…

TypeScript的never类型的妙用

never类型介绍 在 TypeScript 中&#xff0c;"never" 是一个表示永远不会发生的值类型。 使用场景 "never" 类型通常用于以下几种情况&#xff1a; 1、函数返回类型&#xff1a;当一个函数永远不会返回任何值&#xff08;比如抛出异常或者无限循环&…

跟TED演讲学英文:Let your garden grow wild by Rebecca McMackin

Let your garden grow wild Link: https://www.ted.com/talks/rebecca_mcmackin_let_your_garden_grow_wild Speaker: Rebecca McMackin Date: October 2023 文章目录 Let your garden grow wildIntroductionVocabularySummaryTranscriptAfterword Introduction Many garden…

110、python-第四阶段-7-Socket服务端开发

服务端代码&#xff1a; 启动客户端工具 netAssist.exe&#xff0c;连接socket服务&#xff0c;如下&#xff0c;进行通信

声音突破:so 索

小孩儿看完武侠剧&#xff0c;就决定从二楼往地面上跳&#xff0c;年轻的老妈看到了&#xff0c;就在那里骂&#xff0c;喝斥不准逞能&#xff0c;不许乱来&#xff0c;不许跳。但小孩子不听话&#xff0c;心里全是影视剧的画面&#xff0c;那叫一个侠之能也&#xff0c;于是飞…

低代码平台适用于哪些行业 低代码开发平台行业应用案例

基于您的查询和提供的网络搜索结果&#xff0c;低代码开发平台在多个行业中都有广泛的应用案例。这些平台能够帮助企业快速构建应用程序&#xff0c;减少编码工作&#xff0c;提高开发效率和产品质量。下面是一些典型行业的低代码应用案例&#xff1a; 低代码平台行业应用场景 …

视频怎么压缩变小?推荐三个压缩方法

视频怎么压缩变小&#xff1f;在数字时代&#xff0c;视频已成为我们日常生活和工作中不可或缺的一部分。然而&#xff0c;随着视频质量的提升&#xff0c;视频文件的大小也随之增加&#xff0c;这给存储和分享带来了不小的挑战。幸运的是&#xff0c;市面上有许多视频压缩软件…

CUDA Unity Compute Shader 3

计划 这应该是第3章的读书笔记&#xff0c;但是因为第3章读起来比较困难&#xff0c;所以先看了《CUDA并行程序设计编程指南》的第5章和第6章&#xff0c;感觉读起来顺畅多了&#xff0c;《CUDA并行程序设计编程指南》暂定精读第5、6、7章 1.如何生成ptx文件 属性➔CUDA C/C➔…

鸿蒙轻内核M核源码分析系列六 任务及任务调度(3)任务调度模块

调度&#xff0c;Schedule也称为Dispatch&#xff0c;是操作系统的一个重要模块&#xff0c;它负责选择系统要处理的下一个任务。调度模块需要协调处于就绪状态的任务对资源的竞争&#xff0c;按优先级策略从就绪队列中获取高优先级的任务&#xff0c;给予资源使用权。本文我们…

java多线程原理

1.线程创建与启动&#xff1a;通过继承Thread类或实现Runnable接口创建线程&#xff0c;并调用start()方法启动线程。 1.线程状态&#xff1a;线程在其生命周期中有多种状态&#xff0c;包括新建、运行、阻塞、死亡等。了解这些状态以及如何在它们之间转换对于管理线程至关重要…

完美解决 mysql 报错ERROR 1524 (HY000): Plugin ‘mysql_native_password‘ is not loaded

文章目录 错误描述错误原因解决步骤 跟着我下面的步骤走&#xff0c;解决你的问题&#xff0c;如果解决不了 私信我来给你解决 错误描述 执行ALTER USER root% IDENTIFIED WITH mysql_native_password BY 123456;报错ERROR 1524 (HY000): Plugin mysql_native_password is not …

RPA实战演练UiBot6.0校园学生教评机器人

前言 校园学生教评机器人&#xff0c;也称为全自动校园教评RPA&#xff08;Robotic Process Automation&#xff0c;机器人流程自动化&#xff09;机器人&#xff0c;是一种利用软件机器人技术来模拟和执行学生教评流程中的各项任务和操作的智能化系统。以下是关于校园学生教评…

Mamba v2诞生:1 儒(Transformers)释(SSD)道(Mamba)本是一家?!

大模型技术论文不断&#xff0c;每个月总会新增上千篇。本专栏精选论文重点解读&#xff0c;主题还是围绕着行业实践和工程量产。若在某个环节出现卡点&#xff0c;可以回到大模型必备腔调或者LLM背后的基础模型新阅读。而最新科技&#xff08;Mamba,xLSTM,KAN&#xff09;则提…

因子区间[牛客周赛44]

思路分析: 我们可以发现125是因子个数的极限了,所以我们可以用二维数组来维护第几个数有几个因子,然后用前缀和算出来每个区间合法个数,通过一个排列和从num里面选2个 ,c num 2 来计算即可 #include<iostream> #include<cstring> #include<string> #include…

数据库中锁的机制和MVCC协议以及隔离级别

文章目录 数据库中的锁锁与索引的关系释放锁的时机乐观锁与悲观锁行锁与表锁共享锁与排它锁意向锁记录锁、间隙锁和临键锁记录锁间隙锁临键锁 锁优化方案 MVCC协议MySQL的隔离级别脏读和幻读快照读和当前读 版本链Read ViewRead View 与已提交读Read View 与可重复读m_up_limit…

8. C#多线程基础概念

文章目录 一. 目标二. 技能介绍① 进程和线程② 为什么需要多线程③ C#实现多线程的方式④ 线程的操作(创建_终止_挂起_恢复) 一. 目标 进程和线程基本概念为什么需要多线程?C#实现多线程的方式?线程Thread的创建,终止,挂起和恢复? 二. 技能介绍 ① 进程和线程 什么是进程…

F5G城市光网,助力“一网通城”筑基数字中国

《淮南子》中说&#xff0c;“临河而羡鱼&#xff0c;不如归家织网”。 这句话在后世比喻为做任何事情都需要提前做好准备&#xff0c;有了合适的工具&#xff0c;牢固的基础&#xff0c;各种难题也会迎刃而解。 如今&#xff0c;数字中国发展建设如火如荼&#xff0c;各项任务…

C语言 | Leetcode C语言题解之第119题杨辉三角II

题目&#xff1a; 题解&#xff1a; int* getRow(int rowIndex, int* returnSize) {*returnSize rowIndex 1;int* row malloc(sizeof(int) * (*returnSize));row[0] 1;for (int i 1; i < rowIndex; i) {row[i] 1LL * row[i - 1] * (rowIndex - i 1) / i;}return row…