MQ的基础知识

一.什么是MQ

其实就是不同的程序之间的一种的通信方式,通过将消息发送到中间件里面然后中间件就会将这个消息发送给相应的服务进行一个消息的消费,这个时候就会进行一些的业务逻辑的处理,这个方式提高了整个系统的可靠性,拓展性以及灵活性.常见的类型为Aapache Kafaka,RabbitMQ,RocketMQ,但是一般的话现在都是用RocketMQ这个的话后面我会说他们之间的区别

二.MQ中的重要的组件以及作用

五大组件

NameServer: 这个就是存储Broker的地址值当生产者以及消费者需要使用或者生产MQ中的消息的时候那么就会从NameServer中获取其的地址值除此之外还会通过发送心跳然后检测Broker处于健康的状态这样的话其实也就是能够更新地址值,保证了存储的数据的准确性

Broker: 这个就是将生产者发送到队列中的数据进行持久化的处理防止数据的不丢失

Producer:生产者就是将需要消费者实现业务逻辑发送到MQ中,如上图可以看出生产者就是下单服务,那么用户进行下单之后肯定是要进行扣库存的所以发送扣减库存的消息到MQ

Consumer:就是消费生产者发送到MQ中的消息然后根据这个消息进行相对应的业务逻辑的处理如:库存服务消费消息之后那么就会对商品进行扣减库存的处理

Queue:这个就是可以理解为用于存放消息的一个中转站

特别说明:为了提高效率,消费者以及生产者以及Broker都是集群进行部署,除此以外Broker启动之后向NameServer发送心跳是长连接并且是30s发送一次心跳

三.为什么要使用MQ(MQ的作用)

主要说的就是三大作用: 异步,削峰,解耦实现了整个系统的高性能以及高可用性

 对比上面两个图片其实不难发现添加了MQ之其实真正在架构上实现了异步以及解耦的,因为当我们的下单系统发送消息给MQ的时候,MQ可以保证消息不丢失,后面的话那么只要交给MQ来进行处理就行了,MQ就会将消息发送给账户系统以及库存系统,他们实现了业务逻辑处理之后那么就会回调我们的下单系统的接口. 对于削峰的话,其实就是客户端在一段时间的范围之内发送大量请求(高并发),这个时候我们可以将用户的请求放在MQ中然后系统进行慢慢消费,不至于在一段时间的范围之内给我们的系统过多的压力,不然的话有可能就会使得我们的系统不能正常运行

四.MQ的选型

RocketMQKafkaRabbitMQ
开发语言全由java开发部分java开发基于erlang开发
吞吐量万级别十万级别十万级别
时效性毫秒级毫秒级微秒级
特点

1.由于都是由Java进行底层的开发,那么我们可以进行定制化的修改更符合企业的开发

2.由阿里进行开发,经十几年的双11依然保持稳定

3.支持延迟消息以及事务型消息

最大的特点就是其的吞吐量特别大所以常用于车辆的消息的发送

延迟比较低并且支持多个协议

在以前经常进行使用但是由于

停更一段时间那么使得很少有

企业进行使用了

五.MQ消息发送的模式

1.同步发送:

        在这种模式下.发送者向MQ发送消息之后那么需要等待Broker持久化之后需要给其发送完成响应,生产者接收到响应之后才会执行后面的代码逻辑,所以这个就会产生一个致命的缺点,由于网络抖动的原因如果生产者没有接收到响应之后那么就会一直进行等待这个时候就使得整体的一个性能下降。

2.异步发送:

        对于这个模式,对于相较于同步发送,生产者发送消息给MQ之后,不需要等待Broker持久化之后发送响应之后再执行后面的业务逻辑代码,实现就是通过实现一个异步的回调接口,如果Broker持久化之后就会通过我们提供的回调接口发送相应结果,那么这个的优势就是在于生产者如果没有接收到异步响应的话那么也会执行业务逻辑

3.单向发送:

使用这种模式的话那么生产者要负责发送消息,不需要接收到响应这个模式其的最大的优点就是在于速度特别快但是最大的缺点就是在于可靠性比较低所以在现在真实的企业开发中是不会使用这种的发送模式的现在更多使用的就是异步发送模式

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

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

相关文章

蓝牙OPP协议详解及Android实现

文章目录 前言一、什么是蓝牙OPP协议?二、OPP协议工作流程1. 设备配对和连接2. 启动 OPP 服务3. 发送对象4. 传输对象5. 传输完成6. 断开连接 三、 Android OPP协议实现1. 启动 OPP 服务器(接收方)2. 发送文件(发送方)…

医学可视化之涟漪图

在医学领域,数据可视化能够帮助我们更直观地理解和分析复杂的信息。涟漪图作为一种独特的可视化工具,具有重要的作用、价值和广泛的使用场景。 一、涟漪图的特点 涟漪图是一种基于地理位置的可视化图表,它通过在地图上显示不同大小或颜色的…

定义宏将整数的二进制的奇数位和偶数位互换位置

假设这个数为n00000000 00000000 00000000 00001101——13 1.思路 1.1 奇数位:00000000 00000000 00000000 00000101 但是怎么获得奇数位呢?——进行按位与运算 不懂如何运算的可以看我主页的详解操作符-CSDN博客,该章详细写了各个操作符如何…

快要结束的大学时光

目录 大一 大一上学期 Java HTMLCSS 大一下学期 HTMLCSSJS JAVA python 大二 大二上学期 Java 原型 前端 大二下学期 前端 数据结构 Android BootStrap JavaWeb ios程序设计 软件测试​编辑 大三 大三上学期 小程序 大三下学期 JavaWeb 整理数据库 大…

高效实现MySQL数据集成的具体案例分享

MySQL数据集成案例分享:1–BI秉心-店铺信息表–store_z–>store 在数据驱动的业务环境中,如何高效、可靠地实现数据集成是每个企业面临的重要挑战。本文将聚焦于一个具体的系统对接集成案例:将MySQL中的店铺信息表store_z的数据集成到另一…

[Docker#3] LXC | 详解安装docker | docker的架构与生态

目录 1.LXC容器操作 安装LXC LXC容器操作步骤 2.理论 LXC 是什么? Docker 是什么 Docker 和虚拟机的区别 Docker 和 JVM 虚拟化的区别 Docker 版本 ⭕Docker 官方网站(建议收藏) Docker 架构 生活案例 Docker 生态 Docker 解决…

CAP相关的分布式技术

目录 一,CAP理论基础 1.1、一致性(Consistency) 1.2、可用性(Availability) 1.3、分区容忍性(Partition Tolerance) 1.4、CAP理论的核心观点 二,如何选C与A 2.1、网络分区情况…

【春秋云镜】CVE-2023-2130

目录 CVE-2023-2130漏洞利用漏洞检测防御措施 靶标介绍:解法一:解法二: CVE-2023-2130 漏洞详细信息 漏洞编号:CVE-2023-2130漏洞名称:SQL注入漏洞受影响的版本:SourceCodester采购订单管理系统1.0影响范…

Code::Blocks 24.10 全中文优化完整版

Code::Blocks(或者叫做 CodeBlocks)是一款开放源代码、跨平台的集成开发环境(IDE),通过配置不同的编程语言编译器,可以用于多种编程语言程序开发。 网上有很多文章介绍 Code::Blocks 的安装,通…

二叉树-哈夫曼树的构造和应用

重点:哈夫曼树的构造和应用(编码) 选取完最小权值的两个节点后新结点的权值是二者之和,新节点可以和选取剩余的结点结合,也可以在剩余的里面选出最小两个结合后形成的新结点与第一个新结点结合(前提他们是最小的两个结点) 哈夫曼编码 哈夫曼编码优化 130为最小的带权路径长度 …

d3坐标轴系数角度变换-位置不对等问题

svg.append(text).attr(x, 100) // 文本 x 坐标.attr(y,200 ) // 文本 y 坐标// .attr(text-anchor, middle) // 文本居中.attr(fill, black) // 文本颜色.attr(transform, rotate(-90, 25, 30)) // 旋转 -90 度.attr(font-size, 9).text(你的文本); 有些老哥…

rosbag数据导出成pcd文件

目录 步骤 1:安装必要的 ROS 包步骤 2:播放 .bag 文件中的点云数据(非必须)步骤 3:使用 pcl_ros 提取并保存点云数据步骤 4:验证输出 要将 .bag 文件中的点云数据导出为 .pcd 文件,通常需要以…

基于 Spring Boot 和 Vue 的门票销售创新系统

作者介绍:✌️大厂全栈码农|毕设实战开发,专注于大学生项目实战开发、讲解和毕业答疑辅导。 🍅获取源码联系方式请查看文末🍅 推荐订阅精彩专栏 👇🏻 避免错过下次更新 Springboot项目精选实战案例 更多项目…

推荐一款管道数据检索工具:Pipedata-Pro

Pipedata-Pro是一款专为设计石油、天然气、水和蒸汽管道及管道系统的工程师开发的应用程序。该应用程序提供了设计管道系统所需的工程数据,拥有一个全面的管道类型、配件和材料数据库。 软件特点: 1. 技术参数查询:Pipedata-Pro 提供关于管道…

使用 Umami 部署博客分析工具

Umami 简介 Umami 是一款开源且注重隐私的网站分析工具,可替代 Google Analytics。它提供网站流量和用户行为等见解,但不使用 Cookie 或收集个人数据,符合隐私法规。Umami 轻巧易用,可自行托管。 如果你有自己的博客,…

三菱QD77MS定位模块速度更改功能

速度更改功能” 是以任意时机将控制中的速度更改为新指定的速度的功能。更改后的速度直接设置到缓冲存储器中,并根据速度更改指令([cd.15速度更改请求)或者外部指令信号执行速度更改。 但是,机械原点复位的情况下,检测出近点狗 ON 并开始向蠕…

typescript 补充

文章目录 Pick<T, K> 从 T 中挑选部分属性构成新类型Partial<T>&#xff1a;将类型的所有属性变为可选Required<T>&#xff1a;将类型的属性变为必选。Omit<T, K>&#xff1a;从 T 中移除部分属性构成新类型。Readonly<T>&#xff1a;将类型的属…

运动【跑步 03】安踏冠军3的10KM和15KM*2体验(对比必迈PURE LIGHT)

这里写目录标题 1. 前言2. 两双鞋2.1 必迈 PURE LIGHT2.2 安踏 冠军 3 3. 主观对比4. 问题4.1 必迈 PURE LIGHT4.2 冠军 3 5. 总结 1. 前言 我是程序员&#xff0c;并不是专业的运动员&#xff0c;对跑步鞋的研究也不深&#xff0c;至今也就买过两双相对比较专业的跑鞋&#x…

【C++】踏上C++的学习之旅(六):深入“类和对象“世界,掌握编程的黄金法则(一)

文章目录 前言1. "面向过程"和"面向对象"的碰撞1.1 面向过程1.2 面向对象 2. "类"的引入3. "类"的定义3.1 &#x1f349;语法展示&#xff1a;3.2 "类"的两种定义方式3.3 "类"的命名规则 4. 类的访问限定符以及封…

Matlab绘制箭头(annotation 、quiver、​quiver3)

本文章开始讲述基于Matlab绘制箭头&#xff0c;主要包括一下函数&#xff1a; annotation &#xff1a;annotation(lineType,x,y) 创建一个在当前图窗中的两个点之间延伸的线条或箭头注释。将 lineType 指定为 ‘line’、‘arrow’、‘doublearrow’ 或 ‘textarrow’。将 x 和…