项目和1013

news2024/11/25 12:27:27

这里写目录标题

  • 项目
    • 采用Nginx做反向代理、以及搭建Tomcat服务器集群,实现负载均衡和动静分离
      • 4.3
      • 4.7
      • 相关的八股
    • 动静分离
      • 4.12
      • 5-4 Redis集中式缓存商品详情页
      • 5-7 开启本地缓存
      • 5-11 开启本地缓存
    • 采用RabbitMQ实现异步消息扣减数据库内库存
      • 7-4 同步进缓存,下单减库存
      • 7-5 利用roketmq,异步扣减数据库
      • 8-2 事务性消息应用 transcationMQProducer
    • 8-3 库存流水状态
    • 8.6库存数据最终一致性保证
    • 采用Redis实现流量削峰和限流
      • 9-1秒杀令牌
    • 二级目录
      • 三级目录

项目

采用Nginx做反向代理、以及搭建Tomcat服务器集群,实现负载均衡和动静分离

4.3

在这里插入图片描述
在这里插入图片描述
ajax前端访问miaoshaserver的域名,niginx通过动态的反向代理请求,访问不同的服务器
H5(STATIC)若访问miaoshaserver/resources的域名,nginx会直接从本地磁盘中获得静态资源

4.7

4-7:
在这里插入图片描述1. 通过upstream server添加对应的服务器,weight表示权重
在这里插入图片描述

相关的八股

反向代理:客户端将请求发送到反向代理服务器,由反向代理服务器去选择目标服务器,获取数据后再返回给客户端。对外暴露的是反向代理服务器地址,隐藏了真实服务器 IP 地址。反向代理“代理”的是目标服务器

动静分离

将静态资源部署在Nginx上,当一个请求来的时候,如果是静态资源的请求,就直接到nginx配置的静态资源目录下面获取资源,如果是动态资源的请求,nginx利用反向代理的原理,把请求转发给后台应用去处理,从而实现动静分离。

4.12

4-12在这里插入图片描述在这里插入图片描述

redis:集中式缓存中间件

在这里插入图片描述先存入redis,返回给前端
在这里插入图片描述
前端获取token再发送给后端
在这里插入图片描述后端的获取对应的token,根据token从redis里获取对应的用户

第五章:本地热点缓存(JVM的缓存–堆栈信息)

5-4 Redis集中式缓存商品详情页

5-4:Redis集中式缓存商品详情页
利用redis在controller层的时候,之间从redis中获取,减少对数据库的依赖
在这里插入图片描述

5-7 开启本地缓存

5-7:开启本地缓存接口:cacheService
在这里插入图片描述
本地缓存用的就是tomcat的堆内缓存
利用Guava cache 实现
在这里插入图片描述先去本地缓存(不存在)–再取redist(不存在)-- 最后再去数据库,最后记得反向SET到对应的库中

在这里插入图片描述

5-11 开启本地缓存

5-11:nginx 本地缓存 – 语言:nginx lua
在这里插入图片描述

1.在nginx openresty-- redis

在这里插入图片描述openresty对redis脚本的编写,(连接上面的redis slave)
在这里插入图片描述
==分级理解:==前端访问,先从redis slave读数据,没有 ,就去本地缓存读数据,再没有,就去redis中读数据,再没有才回去数据库中读数据。

采用RabbitMQ实现异步消息扣减数据库内库存

7-4 同步进缓存,下单减库存

7-4
在这里插入图片描述

1.将库存放入缓存中(这里是在cintroller方法调用下面serverce,使得库存进入缓存)
在这里插入图片描述

2.减去对应的Redis库存

在这里插入图片描述课程中通过redis的原子性,先减库存判断剩余数量是否大于0来防止超卖。本项目中只要控制住redis 就不会超卖 redis挂了就不可交易 因此不会超卖

会出现数据库记录不一致的问题

7-5 利用roketmq,异步扣减数据库

7-5
在这里插入图片描述
在这里插入图片描述

  • 分别构建MqProducer和MqConsumer类
    在这里插入图片描述
  • ItemserveImpl,redis扣减库存成功,result>0,就会调用上面的方法
    在这里插入图片描述如果Mq失败,redis需要回滚
  • Consumer收到消息调用数据进行库存扣减
    在这里插入图片描述
    因为redis和数据库扣减 与 订单入库写在一个事务当中,如果redis和数据库都扣减成功了,但是订单入库出现了问题(买家取消支付),redis和数据库没有对应的回滚措施,就会出现少买的情况

8-2 事务性消息应用 transcationMQProducer

事务型:保证数据库数据提交了,对应的消息必定会发送成功的。数据库事务回滚,消息必定不会发送成功
在这里插入图片描述
1.上述首先往消息队列中投递消息,消息被维护在broker 中间件上面 2. 再去执行executelocalTransaction方法
在prepare的状态下会去执行executeLocalTransaction方法
在这里插入图片描述

  • 在oredercontroller层调用mqproducer.transcation扣减库存的操作
    如果上述订单入库执行了很久, mqproducer还有一个 c h e c k L o c a l T r a n s a c t i o n checkLocalTransaction checkLocalTransaction方法,去判断上面的方法是否入库成功,判断要返回三种情况的哪一种

如何判断,查看是否生成对应的订单流水
在这里插入图片描述

8-3 库存流水状态

引入库存流水,
在这里插入图片描述
订单入库成功之后,
在这里插入图片描述
后面需要重写一下executelocalTransaction和check方法

8.6库存数据最终一致性保证

少卖不可超卖

在这里插入图片描述
触发15分钟以上,需要释放掉,将数据回滚回去
在这里插入图片描述

  • 加入库存售罄表示(redis)

在这里插入图片描述

  • 在生成库存流水之前,先判断redis中是否存在售罄表示
  • 在这里插入图片描述

采用Redis实现流量削峰和限流

9-1秒杀令牌

在这里插入图片描述

  • 秒杀令牌:通过promoID,userID,ITEMiD生成一个token,放入redis中
  • 根据商品的库存设置对应令牌的数量(先计算大闸count的数量在获取对应的token)
  • 队列泄洪:依靠排队和下游拥塞窗口调整队列释放流量大小(设置一个线程池大小xx,以及拥塞窗口为xx的等待队列)

二级目录

三级目录

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

java生成自定义长度的唯一随机字符串

思路 基于唯一数字,再随机指向ASCII码的大小写字母的编码值实现随机,唯一数字可以由redis自增或者雪花id等生成。实现代码 /*** description: 生成10个字符的唯一随机字符串,由数字大小写字母组成* date 15:58 2023/10/13* param increment…

C++ - git 命令行

为什么要有 git 你很可能遇到过这种情况,在写项目的时候,要我不符合 leader 的要求,因而修改了很多个版本,但是修改到最后一版的时候,leader 有觉得当前这版还没有之前 某一版好,现在又要求你在 之前的那一…

Fbank及MFCC学习

Fbank:FilterBank:人耳对声音频谱的响应是非线性的,Fbank就是一种前端处理算法,以类似于人耳的方式对音频进行处理,可以提高语音识别的性能。获得语音信号的fbank特征的一般步骤是:预加重、分帧、加窗、短时…

【嵌入式开发学习01】Arduino安装esp32-cam以及CameraWebServer实例的实现

目录 1. 硬件2. 软件2.1 arduino下载安装2.2 arduino配置esp32-cam开发板文件2.3 下载相应版本的esp32 3. ESP32-CAM实例:CameraWebServer3.1 选择开发板3.2 选择示例代码进行验证3.3 烧录进行实测 1. 硬件 没买下载主板的可使用usb转串口模块进行烧录,接…

LeetCode【73】矩阵置零

题目: 思路: 1、从题目看,在遍历数组的同时,如果遍历到0,回溯i,j,将其对应的行列变为0。不能变更后面的,后面遍历整个数组都将变成0. 2、需要额外的空间存储要变0的标记位&#xf…

高通推出骁龙X系列进军PC平台

今日,高通在官方博客发布了由高级副总裁兼首席营销官莫珂东(Don McGuire)署名的一篇文章,正式揭晓了一款全新的芯片系列:骁龙X系列。该款芯片专为下一代PC体验打造。高通表示,2024年将会是PC行业的一个拐点…

OJ项目——统一数据格式返回,我是如何处理的?

目录 前言 OJ项目中是如何处理的 1、准备一个类,作为统一的数据返回格式 2、准备一个类,实现ResponseBodyAdvice接口 3、我们如何写返回值更好 4、进一步优化返回值 小结 前言 关于SpringBoot的同一功能处理,本博主在这篇博客已经有介…

Linux 系统中提供CPU性能分析工具整理

Linux 系统中提供CPU性能分析工具整理 汇总 查看CPU信息 在linux操作系统中,CPU的信息在启动的过程中被装载到虚拟目录/proc下的cpuinfo文件中,我们可以通过 cat /proc/cpuinfo 查看一下: cat /proc/cpuinfo显示如下: rootthe…

docker创建elasticsearch、elasticsearch-head部署及简单操作

elasticsearch部署 1 拉取elasticsearch镜像 docker pull elasticsearch:7.7.0 2 创建文件映射路径 mkdir /mydata/elasticsearch/data mkdir /mydata/elasticsearch/plugins mkdir /mydata/elasticsearch/config 3 文件夹授权 chmod 777 /mydata/elastic…

详解cv2.addWeighted函数【使用 OpenCV 添加(混合)两个图像-Python版本】

文章目录 简介函数原型代码示例参考资料 简介 有的时候我们需要将两张图片在alpha通道进行混合,比如深度学习数据集增强方式MixUp。OpenCV的addWeighted提供了相关操作,瓷片博客将详细介绍这个函数,并给出代码示例。🚀&#x1f6…

有外媒称,Linux 发行版Ubuntu 23.10也将正式支持树莓派 5

据了解,在树莓派 4 单板计算机推出 4年后,树莓派 5也在上月末正式发布,并且两者对比之后可以发现,树莓派 5主要提升性能是添加了对 PCIe 2.0的支持。 Multiable万达宝医疗ERP(www.multiable.com.cn/solutions_yl)具备严格的保质期…

搭建vue后台管理系统框架

第一步:创建vue项目vue create 项目名称,并安装element-ui Vue CLI v3.1.3 ? Please pick a preset: Manually select features ? Check the features needed for your project: Babel, Router, CSS Pre-processors, Linter 1、是否使用history模式的…

【Express】静态资源

通过 Express 内置的 express.static 可以方便地托管静态文件,例如图片、CSS、JavaScript 文件等。 将静态资源文件所在的目录作为参数传递给 express.static 中间件就可以提供静态资源文件的访问了。 // 配置静态资源 app.use(express.static(public)); app.use(…

条件表达式

1.语法: 如果写范围,case不用写字段名 内容:case 字段名 when 值/或者值的范围 then 转化成的值 as 列名 end 语义:选择转换后新起一列 as不写默认text 2.其他用法: 2.1.计次 count(...)…

Master PDF Editor v5.9.70便携版

软件介绍 Master PDF Editor中文版是一款小巧的多功能PDF编辑器,可以轻松查看,创建,修改,批注,签名,扫描,OCR和打印PDF文档.高级注释工具,可以添加任意便笺指示对象突出显示,添加下划线和删除,而无需更改源PDF文件. 软件截图 更新日志 code-industry.net/what-is-new-in-mas…

【原创】在Linux上安装Zabbix客户端

检查Linux版本 cat /etc/issue得到结果 Ubuntu 18.04.2 LTS \n \l 下载软件 到 Zabbix官网(https://www.zabbix.com/) 依次点击 Download>Zabbix Packages>Choose your platform>ZABBIX VERSION>6.4>OS DISTRIBUTION>Ubuntu>OS …

[科研琐事] 安装服务器到机柜的二三事

1. 机柜参数 宽度:一般机器都是符合的; 深度:对应服务器最长的那个边; 厚度(高度):1/2/3/4U,就是机柜上写的刻度数字,1U1.75英寸。 1U4.45cm 2U4.45cm * 2 3U4.45cm * …

关于LEFT JOIN的一次理解

先看一段例子: SELECTproduct_half_spu.id AS halfSpuId,product_half_spu.half_spu_code,product_half_spu.half_spu_name,COUNT( product_sku.id ) AS skuCount,product_half_spu.create_on,product_half_spu.create_by,product_half_spu.upload_pic_date,produc…

业务安全五重价值:防攻击、保稳定、助增收、促合规、提升满意度

目录 防范各类威胁攻击 保障业务的连续性和稳定性 保障业务的合规性 提升企业营收和发展 提升企业满意度和品牌知名度 2023年暑假被“票贩子”和“黄牛”攻陷。他们利用各种手段抢先预约名额,然后加价出售给游客,导致了门票供不应求的局面&#xff…

CNN-generated images are surprisingly easy to spot... for now

CNN-generated images are surprisingly easy to spot… for now----《目前CNN生成的图像非常容易被发现》 背景: 研究者们发现,仅仅对一种由CNN模型生成的图像进行训练的分类器,也可以检测许多其他模型生成的结果。由此提出这样的观点&#…