【RabbitMQ】初识消息中间件MQ

news2024/11/29 4:02:57

目录

一、什么是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.coloradmin.cn/o/423053.html

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

相关文章

为什么多线程读写 shared_ptr 要加锁?

陈硕(giantchen_AT_gmail_DOT_com) 2012-01-28 我在《Linux 多线程服务端编程:使用 muduo C 网络库》第 1.9 节“再论 shared_ptr 的线程安全”中写道: (shared_ptr)的引用计数本身是安全且无锁的&#…

git仓库与分支

仓库使用 第一次进入需要创建一个仓库 按照教程绑定邮箱可密码,再创建readme文件上传到仓库初始化 git push 详解 git push origin master:xiaoxu# 如下为远程仓库的详解https://gitee.com/fireapproval/xiaoxu.git//其中xiaoxu为仓库//如上的可视化界面中bolen为…

伺服阀放大器接线设置

端子 功能描述 1 PWR 外部电源输入&#xff0c;24VDC 2 PWR- 外部电源输入&#xff0c;24VDC 3 ENA 低电平使能 0<U<1.5V&#xff0c;放大器工作&#xff0c;绿灯常亮&#xff1b;2.5V<U<UB&#xff0c;放大器不工作&#xff0c;红灯常亮&#xff1b; 4 N.C. 不…

【关于Linux中----信号量及其使用场景】

文章目录一、解释信号量1.1 概念的引入1.2 信号量操作和使用接口二、信号量使用场景2.1 引入环形队列&&生产消费问题2.2 代码实现2.3 对于多生产多消费的情况2.4 申请信号量和加锁的顺序问题2.5 多生产多消费的意义一、解释信号量 1.1 概念的引入 我们知道&#xff0…

python uiautomator2 环境搭建和基本使用

安装 adb安装和配置 可以百度或者看看这个https://blog.csdn.net/weixin_37600187/article/details/127987889 安装uiautomator2 pip install -i https://mirrors.aliyun.com/pypi/simple -U uiautomator2安装 weditor&#xff08;一般情况会报错&#xff09; pip install…

C#程序设计——面向对象编程基础,设计一个Windows应用程序,模拟一个简单的银行账户管理系统。实现创建账户、取款、存款和查询余额的模拟操作。

一、实验目的 1、理解简单程序中的面向对象思想的应用 2、掌握C#的定义类和创建对象的方法 3、理解方法中参数的传递 二、实验内容 1、设计一个Windows应用程序&#xff0c;模拟一个简单的银行账户管理系统。实现创建账户、取款、存款和查询余额的模拟操…

序列比对算法

案例问题&#xff1a;假设有两个序列&#xff1a;ATGCG 和 ACCG&#xff0c;如何求得它们的最佳匹配方案。 1. Needleman-Wunsch 算法 原理是动态规划&#xff0c;是一个全局比对算法 算法求解步骤&#xff1a; &#xff08;1&#xff09;在它们前面各加上一个 ‘-’ -ATGC…

2023 “认证杯”数学中国数学建模C 题 心脏危险事件 详细思路

2023年认证杯”数学中国数学建模如期开赛&#xff0c;本次比赛与妈杯&#xff0c;泰迪杯时间有点冲突。因此&#xff0c;个人精力有限&#xff0c;有些不可避免地错误欢迎大家指出。为了大家更方便的选题&#xff0c;我将为大家带来C题的详细解析&#xff0c;以方便大家建模分析…

如何有效利用文旅资源

文旅产业是当今世界发展最迅速的行业之一&#xff0c;文化和旅游业的融合已经成为文旅产业发展的趋势。众所周知&#xff0c;文旅资源是我国的宝贵财富&#xff0c;文化遗产、旅游胜地等都是国宝级的文旅资源&#xff0c;从古老的文化遗产到现代的旅游景点&#xff0c;无不体现…

近期CTF web

文章目录NKCTFbaby_phpez_phphard_phpeasy_pmseasy_cmsWebPageTestxiaopiCTFshow愚人赛easy_signineasy_sstiez_flask被遗忘的反序列化easy_php杭师大CTFfindmeez_javaeznodeNKCTF baby_php <?phperror_reporting(0);class Welcome{public $name;public $arg oww!man!!;…

【八】springboot启动源码 - finishRefresh

Last step: publish corresponding event. clearResourceCaches initLifecycleProcessor Initialize lifecycle processor for this context. 从IOC获取LifecycleProcessor设置到applicationContext中,如果从IOC中获取不到会创建DefaultLifecycleProcessor并注册到IOC中 get…

【能力提升】SQL Server常见问题介绍及快速解决建议

前言 本文旨在帮助SQL Server数据库的使用人员了解常见的问题&#xff0c;及快速解决这些问题。这些问题是数据库的常规管理问题&#xff0c;对于很多对数据库没有深入了解的朋友提供一个大概的常见问题框架。 下面一些问题是在近千家数据库用户诊断时发现的常规问题&#xff0…

用Abp实现找回密码和密码强制过期策略

文章目录重置密码找回密码发送验证码校验验证码发送重置密码链接创建接口密码强制过期策略改写接口Vue网页端开发重置密码页面忘记密码控件密码过期提示项目地址用户找回密码&#xff0c;确切地说是 重置密码&#xff0c;为了保证用户账号安全&#xff0c;原始密码将不再以明文…

一篇文章搞定《动手学深度学习》-(李牧)PyTorch版本的所有内容

目录 目录 简介 阅读指南 1. 深度学习简介 2. 预备知识 3. 深度学习基础 4. 深度学习计算 5. 卷积神经网络 6. 循环神经网络 7. 优化算法 8. 计算性能 9. 计算机视觉 10. 自然语言处理 环境 参考&#xff08;大家可以在这里下载代码&#xff09; 原书地址&#…

优思学院|精益生产和精益管理的区别

精益生产和精益管理&#xff0c;这两个概念我们或多或少都听说过。但是&#xff0c;你是否真的明白这两个概念的区别&#xff1f;或者你是否也像我一样&#xff0c;之前把这两个概念混淆在一起呢&#xff1f;今天&#xff0c;我要和大家分享的是&#xff0c;精益生产和精益管理…

用Flutter开发一款音乐App(从0到1开发一款音乐App)

Flutter Music_Listener(flutter音乐播放器) Flutter version 3.9 项目介绍 1、项目整体基于getxretrofitdiojsonserialize开发 2、封装通用控制器BaseController&#xff0c;类似jetpack mvvm框架中的BaseViemodel 3、封装基础无状态基类BaseStatelessWidget&#xff0c;结合…

jmap执行失败了,怎么获取heapdump?

在之前的OOM问题复盘中&#xff0c;我们添加了jmap脚本来自动dump内存现场&#xff0c;方便排查OOM问题。 但当我反复模拟OOM场景测试时&#xff0c;发现jmap有时可以dump成功&#xff0c;有时会报错&#xff0c;如下&#xff1a; 经过网上一顿搜索&#xff0c;发现两种原因可…

来 Azure 学习 OpenAI 三 - 用 Python 调用 Azure OpenAi API

大家好&#xff0c;我是微软学生大使 Jambo。在我们申请好 Azure 和 Azure OpenAI 之后&#xff0c;我们就可以开始使用 OpenAI 模型了。如果你还没有申请 Azure 和 Azure OpenAI&#xff0c;可以参考 注册 Azure 和申请 OpenAI。 本文将会以 Azure 提供的 Openai 端口为例&am…

2023年4月广东省计算机软考中/高级备考班招生简章

软考是全国计算机技术与软件专业技术资格&#xff08;水平&#xff09;考试&#xff08;简称软考&#xff09;项目&#xff0c;是由国家人力资源和社会保障部、工业和信息化部共同组织的国家级考试&#xff0c;既属于国家职业资格考试&#xff0c;又是职称资格考试。 系统集成…

VS Code 插件开发概览

VS Code 插件开发概览 前言 VS Code作为开发者的代码开发利器&#xff0c;越来越受开发者的喜爱。像我身边的前端&#xff0c;每天80%的开发工作都是在VS Code上完成的。随着人们对它的使用&#xff0c;不再满足简单的优雅&#xff0c;舒服写代码这一基本需求。有些人利用它进…