【RabbitMQ】初识消息中间件MQ

news/2024/5/9 23:44:29/文章来源:https://blog.csdn.net/qq_61903414/article/details/130138361

目录

一、什么是MQ

二、MQ的优缺点

1、MQ的优点

1.应用解耦

2.削峰填谷

3.异步提速

2、MQ的缺点

1.可用性低

2.系统复杂度高

3.数据一致性问题

三、MQ使用场景

四、常见的MQ


一、什么是MQ

MQ(Message Queue):消息队列,他是在消息传输过程中的消息保存容器,生产者生产消息后存入消息队列后被消费者消费时拿走。MQ多用于分布式系统之间的通信。分布式系统之间的通信主要有两种:远程直接调用接口、通过MQ来实现通信

二、MQ的优缺点

1、MQ的优点

1.应用解耦

在分布式系统里各个子系统去进行通信如果使用远程调用的方法代码的耦合度比较高,如果某个接口异常或后续添加新的子模块对原有系统的代码改动是非常大的耦合度高

如果我们使用MQ进行通信就可以很好的达到解耦的效果,后续新增模块不再需要去关心系统A如何实现,直接去对接MQ即可

2.削峰填谷

如果我们的服务器等承受的请求位1000,当某一时刻请求剧增达到10000时,此时服务器就会宕机,面对剧增的请求我们可以在请求到达服务器前让他先存入MQ里,然后由MQ每次给服务器1000条请求进行处理

3.异步提速

当用户确认订单后后台会相应的去调用库存系统、物流系统、支付系统等,订单系统收到各个系统的响应后才会给用户反馈,此过程是同步的,需要消耗的时间对于用户来说是比较长的用户

用户需要等待500+500+500+10ms,此时如果我们加入MQ异步的去处理就会极大的提高响应速度

我们只需要把消息交给MQ去异步地处理就可以提高响应速度与系统吞吐量

2、MQ的缺点

1.可用性低

如果使用不当导致MQ服务器宕机就会对整个分布式系统产生很大的影响

2.系统复杂度高

使用MQ关联各个子系统,导致系统复杂度高可能会存在消息重复消费、消息丢失等问题

3.数据一致性问题

使用MQ关联分布式系统的子系统时数据的统一性也是一个存在的问题

三、MQ使用场景

当生产者不需要等待消费者返回相应的业务场景就可以使用MQ ,以及使用MQ对系统带来的收益大于缺点时可以使用MQ,业务允许数据存在短暂的不一致性时也可以使用MQ

四、常见的MQ

社区开发语言支持协议支持语言单机吞吐量延迟特点
RabbitMQRabbitErlangAMQP、  XMPP、SMTP、STOMPErlang、Java、Ruby等万  级    微秒级社区活跃、并发性好、延迟低、性能好
KafkaApacheScala、Java自定义协议,他的社区封装了HTTP协议Java、PHP、Python等十万级毫秒内主要用户大数据领域,只支持主要的MQ功能
RocketMQ阿里Java自定义协议Java、C++十万级毫秒级具有完备的MQ功能,可扩展性极佳
ActiveMQApacheJavaOpenWire、AMQP、STOMP、XMPP、RESTJava、C、C++、PHP等万级毫秒级老牌产品、文档多、成熟

其中单机吞吐量最好到最差依次是:RocketMQ、Kafka、RabbitMQ、ActiveMQ

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

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

相关文章

代码随想录_二叉树_leetcode654 617

leetcode654 最大二叉树 654. 最大二叉树 给定一个不重复的整数数组 nums 。 最大二叉树 可以用下面的算法从 nums 递归地构建: 创建一个根节点,其值为 nums 中的最大值。递归地在最大值 左边 的 子数组前缀上 构建左子树。递归地在最大值 右边 的 子数组后缀上 …

【FPGA实验4】举重比赛机制

举重比赛有三名裁判,当运动员将杠铃举起后,须有两名或两名以上裁判认可,方可判定试举成功,若用A、B、C分别代表三名裁判的意见输入,同意为1,否定为0;F为裁判结果输出,试举成功时F1,试…

iPhone如何不用iTunes将视频传输到电脑上?

随着智能手机的普及,iPhone已经成为了人们生活中必不可少的一部分。而随着iPhone摄像功能的逐渐完善,越来越多的用户开始将iPhone作为拍摄视频的工具。 但是,将iPhone中的视频传输到电脑并进行后续编辑处理或者备份储存,对于许多…

社科院与杜兰大学中外合作办学金融管理硕士项目——比起过往,前路更值得期待

当结束一天工作陷入沉思时,你有没有特别遗憾的事情呢,人生有太多的不确定性,比起过往,未知的人生更值得我们期待。与其懊恼没完成的遗憾,不如珍惜当下,努力创造未来。人生没有太晚的开始,在职读…

人工智能发展到GPT4经历了什么,从专家系统到机器学习再到深度学习,从大模型到现在的GPT4

大家好,我是微学AI,今天给大家讲一下人工智能的发展,从专家系统到机器学习再到深度学习,从大模型到现在的GPT4,讲这个的目的是让每个人都懂得人工智能,每个人都懂得人工智能的发展,未来人工智能…

openpnp - 顶部相机辅助光的选择

文章目录openpnp - 顶部相机辅助光的选择概述折腾的过程简易灯板市售的环形灯(不带漫射板)市售的环形灯(不带漫射板) LED单色光调光控制器.市售的环形灯(带漫射板)市售的环形灯(带漫射板) 自己拆解(降低LED灯路数)ENDopenpnp - 顶部相机辅助光的选择 概述 终于将顶部相机辅…

数值区间的模糊匹配,二分查找的应用

先看图: 需求很明确,要根据左边的值,显示右边的值。 比如,现在拿到的值是 17.12,那么应该显示成 15;拿到 17.599 ,那么应该显示成 20. 先找规律: 为了便于说明,暂且将左边的值设为 x, 右边的值设为 y. 第一行和最后一行可以写死成 0 与 1500;余下的每行,x 的区间是…

【华为机试真题详解JAVA实现】—学英语

目录 一、题目描述 二、解题代码 一、题目描述 Jessi初学英语,为了快速读出一串数字,编写程序将数字转换成英文: 具体规则如下: 1.在英语读法中三位数字看成一整体,后面再加一个计数单位。从最右边往左数,三位一单位,例如12,345 等 2.每三位数后记得带上计数单位 分别是…

四、数组、切片,映射

一、一维数组 //声明一个包含5个元素的整型数组 var array [5]int //具体数值填充数组 array : [5]int{1, 2, 3, 4, 5} //容量由初始化值的数量决定 array : [...]int{1, 2, 3, 4, 5) //只初始化索引为1和2的元素 array : [5]int{1: 10, 2: 20} //修改索引为2的元素的值 array…

Spring学习(五):一篇讲清楚动态代理(jdk和cglib)的使用、原理和源码

目录 一、jdk动态代理的基本使用 二、cglib动态代理的基本使用 2.1 方法一:method.invoke() 方法反射调用 2.2 方法二(spring使用的这个方法): methodProxy.invoke() 2.3 方法三:methodProxy.invokeSuper() 三、…

ABP vNext电商项目落地实战(一)

一、落地条件: 1. .NET5版本 2. DDD 3. ABP vNext 4.ABP CLI (ABP的命令行工具,包括ABP的各种模板) 5.SQL Server 写在前面:我觉得这个框架的文件分层很凌乱,在企业的实际业务场景中,一般…

RHCSA练习作业(二)

目录 题目一 题目二 题目三 第四题 第五题 题目一 文件查看:查看/opt/passwd文件的第六行(使用head和tail指令) 代码如下: head -6 /opt/passwd | tail -1 题目二 在/etc及其子目录中,查找host开头的文件&#x…

虚拟机Ubuntu 18.04安装dpdk18.11

1 虚拟机用了2个核,2G内存,3个网卡 2 去http://core.dpdk.org/download/下载了18.11 3 安装apt-get install libnuma-dev 4 运行ifconfig down ***停掉2个网卡,方便后面添加到dpdk 5 解压后,进入usertools,运行dpd…

用AI帮我写一篇关于FPGA的文章,并推荐最热门的FPGA开源项目

FPGA定义 FPGA(Field Programmable Gate Array)是一种可编程逻辑器件,可以在硬件电路中实现各种不同的逻辑功能。与ASIC(Application Specific Integrated Circuit,特定应用集成电路)相比,FPGA…

SQL 条件函数 日期函数 文本函数 窗口函数

玩了几天,劳逸结合,继续复习刷题sql 一、条件函数 1.题目:现在运营想要将用户划分为25岁以下和25岁及以上两个年龄段,分别查看这两个年龄段用户数量(age为null 也记为 25岁以下) user_profile 期望结果&…

由浅入深掌握Python多线程原理与编程步骤

由浅入深掌握Python多线程编程一、 Python多线程编程原理1. 什么是线程2. 线程工作原理3. Python全局锁与线程关系4. Python 支持多线程的模块二、由简单的示例初步了解多线程编程步骤三、标准库 threading 模块介绍1. threading 模块的主要属性、方法,以及公共函数…

C++ [图论算法详解] 欧拉路欧拉回路

蒟蒻还在上课,所以文章更新的实在慢了点 那今天就来写一篇这周刚学的欧拉路和欧拉回路吧 讲故事环节: 在 一个风雪交加的夜晚 18世纪初普鲁士的哥尼斯堡,有一条河穿过,河上有两个小岛,有七座桥把两个岛与河岸联系…

Python手写板 画图板 签名工具

程序示例精选 Python手写板 画图板 签名工具 如需安装运行环境或远程调试&#xff0c;见文章底部个人QQ名片&#xff0c;由专业技术人员远程协助&#xff01; 前言 这篇博客针对<<Python手写板 画图板 签名工具>>编写代码&#xff0c;代码整洁&#xff0c;规则&am…

Diffusion模型系列文章

DDPM 论文 扩散模型包括两个过程&#xff1a;前向过程&#xff08;forward process&#xff09;和反向过程&#xff08;reverse process&#xff09;&#xff0c;其中前向过程又称为扩散过程&#xff08;diffusion process&#xff09;&#xff0c;如下图所示&#xff0c;从x…

如何定位Spark数据倾斜问题,解决方案

文章目录前言一、数据倾斜和数据过量二、 数据倾斜的表现三、定位数据倾斜问题定位思路&#xff1a;查看任务-》查看Stage-》查看代码四、7种典型的数据倾斜场景解决方案一&#xff1a;聚合元数据解决方案二&#xff1a;过滤导致倾斜的key解决方案三&#xff1a;提高shuffle操作…