为什么使用MQ?RabbitMQ概念

news2024/11/26 2:32:41

个人博客地址:
http://xiaohe-blog.top/

文章目录

  • 1. MQ基本概念
    • 1.1 MQ简述
    • 1.2 MQ的优势
    • 1.3 MQ的劣势
  • 2. RabbitMQ基本概念
    • 2.1 RabbitMQ特点
    • 2.2 AMQP协议

1. MQ基本概念

1.1 MQ简述

MQ 全称 :Message Queue(消息队列),是在消息的传输过程中保存消息的容器。多用于分布式系统之间进行通信。

分布式系统完成通信有两种方式:

  • 直接通信 :A直接远程调用B。
  • 间接通信 :A先将信息发给C,C再发给B。

发送消息的的称为生产者,接收信息的称为消费者

1.2 MQ的优势

  1. 应用解耦

    我们一直追求的编码方式就是 高内聚,低耦合,并且在这上面花了很大心思,高内聚,低耦合也是我们评价一个技术/框架是否优秀的重要方式,MQ在就这方面做的非常好。

    使用直接远程调用的方式,A调用B、C、D完成业务,如果我们想要将B业务删除,那么就要疯狂改A业务中的代码,十分麻烦。

    而如果使用MQ消息队列,想将B删除,只需要关闭MQ与B的消息通道;以后如果想将B恢复使用,还可以恢复消息队列通向B的消息通道。

    image-20221109193846156
  2. 异步提速

    一个客户端请求发送进来,系统A会调用系统B、C、D三个系统,同步请求的话,响应时间就是系统A、B、C、D的总和。如果使用MQ,系统A发送数据到MQ,然后就可以返回响应给客户端,不需要再等待系统B、C、D的响应,可以大大地提高性能。对于一些非必要的业务,比如发送短信,发送邮件等等,就可以采用MQ。

  3. 削峰填谷

    假设系统A在某一段时间请求数暴增,有5000个请求发送过来,系统A这时就会发送5000条SQL进入MySQL进行执行,MySQL对于如此庞大的请求当然处理不过来,MySQL就会崩溃,导致系统瘫痪。

    如果使用MQ,系统A不再是直接发送SQL到数据库,而是把数据发送到MQ,MQ短时间积压数据是可以接受的,然后由消费者每次拉取2000条进行处理,防止在请求峰值时期大量的请求直接发送到MySQL导致系统崩溃

1.3 MQ的劣势

  1. 系统可用性降低

    在远程直接调用中,我们只需要保证已有业务不出错就行了。

    使用了MQ,我们还要维护MQ,而维护的越多,bug出现的机率越高。

  2. 系统复杂度提高

    这个是肯定的,远程直接调用虽然不好看,但是好写。而且我们要保证信息没有被MQ重复发送、重复接收、信息丢失问题等等…

  3. 一致性问题

    A调用B、C、D业务功能,如果B、C成功了,但是D失败了,该如何处理数据的一致性问题?

2. RabbitMQ基本概念

2.1 RabbitMQ特点

(从网上搜的)

RabbitMQ是一款使用Erlang语言开发的,实现AMQP(高级消息队列协议)的开源消息中间件。首先要知道一些RabbitMQ的特点,官网可查:

  • 可靠性 :支持持久化,传输确认,发布确认等保证了MQ的可靠性。
  • 灵活的分发消息策略 :这应该是RabbitMQ的一大特点。在消息进入MQ前由Exchange(交换机)进行路由消息。分发消息策略有:简单模式、工作队列模式、发布订阅模式、路由模式、通配符模式。
  • 支持集群 :多台RabbitMQ服务器可以组成一个集群,形成一个逻辑Broker。
  • 多种协议 :RabbitMQ支持多种消息队列协议,比如 STOMP、MQTT 等等。
  • 支持多种语言客户端 :RabbitMQ几乎支持所有常用编程语言,包括 Java、.NET、Ruby 等等。
  • 可视化管理界面 :RabbitMQ提供了一个易用的用户界面,使得用户可以监控和管理消息 Broker。
  • 插件机制 :RabbitMQ提供了许多插件,可以通过插件进行扩展,也可以编写自己的插件。

2.2 AMQP协议

AMQP :Advanced Message Queuing Protocol(高级消息队列协议),一个网络协议,是应用层协议的一个开放标准,为面向消息的中间件设计。基于此协议的客户端与消息中间件可传递消息,并不受开发语言、不同产品等条件的限制。

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

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

相关文章

音效、配乐素材网站,免费商用

视频剪辑没素材?找不到热门音效?找不到好听的配乐? 有了这几个网站,承包你的所有音效、配乐,重点是免费!!!1、菜鸟图库 https://www.sucai999.com/audio.html?vNTYwNDUx菜鸟图库网&…

【猿如意】如何在mac上搭建QT环境

作为一个代码菜鸡,平时主要用windows或者linux进行开发,但是家里有一个mac,平时要搭环境要找半天就很费劲。今天终于发现一个好用的平台,常用的开发工具都有惹。真香! 什么是猿如意? 猿如意是一款面向开发…

[附源码]Nodejs计算机毕业设计基于的餐厅管理系统Express(程序+LW)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程。欢迎交流 项目运行 环境配置: Node.js Vscode Mysql5.7 HBuilderXNavicat11VueExpress。 项目技术: Express框架 Node.js Vue 等等组成,B/S模式 Vscode管理前后端分…

如何注册网站?网站注册费用多少?

很多企业或者公司都会考虑注册自己的网站,那么如何注册网站呢?网站注册费用多少呢?具体来说注册网站是包含注册域名和制作网站,下面一同为大家解答如何注册网站。 一、注册域名 一个网站是必须要有域名才能访问,注册可…

一个 MySQL 隐式转换的坑,差点把服务器整崩溃了

本来是一个平静而美好的下午,其他部门的同事要一份数据报表临时汇报使用,因为系统目前没有这个维度的功能,所以需要写个SQL马上出一下,一个同事接到这个任务,于是开始在测试环境拼装这条 SQL,刚过了几分钟&…

职场社交app开发,迎合市场发展需求

互联网时代的到来,让人们在网络上花费的时间越来越多,依赖性也越来越大,我们的生活发生了很大的变化。一个人从出生开始就要面对这个复杂的社会,需要和各种各样的人去交流相处,当我们进入职场之后社交更是变成一种刚需…

【电巢】最新进展 深圳13家国企和民企入局,打造全球电子元器件集散中心

前 言 日前,电子元器件和集成电路国际交易中心创立大会在深圳召开。电巢获悉,该交易中心将于12月底正式揭牌,近期启动试运行,并在试运行期间开启线上交易。 根据此前国家发改委、商务部发布的《关于深圳建设中国特色社会主义先…

[附源码]Python计算机毕业设计高校请假管理系统Django(程序+LW)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程 项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等…

【案例实践】WRF-Python融合技术:WRF 模式前后处理、自动化运行、数据处理、可视化绘图

【查看原文】Python在WRF模型自动化运行及前后处理中实践技术应用 当今从事气象及其周边相关领域的人员,常会涉及气象数值模式及其数据处理,无论是作为业务预报的手段、还是作为科研工具,掌握气象数值模式与高效前后处理语言是一件非常重要的…

我填写“2022年国内软件质量调查问卷”的感想

文章目录感想起因关于软件质量的理解各行各业的质量问题数据质量问题各行各业的质量问题质量问题对我们的影响软件质量软件质量问题的影响有多大软件质量问题软件测试软件测试方法的目的包括:软件的基本测试方法:软件测试的各个阶段测试流程软件测试工程师总结感想起…

免费的进销存系统哪个好一些?

进销存是什么?如何才能选到满意的进销存管理系统? 进销存即购销链条,一般分为“进”“销”“存”“财”四个模块的工作,涉及采购部、物资部、生产部、市场部、销售部、财务部等多部门的协同。通过进销存管理信息化,能…

PDF可以设置哪些编辑限制?

PDF文件可以进行加密,大家都知道,并且加密分为打开密码和编辑限制密码两种。 打开密码,大家都知道是在打开PDF文件的时候需要输入的密码。但是对于编辑限制的认识还不是很清晰。今天和大家一起看一下,PDF编辑限制都可以设置哪些编…

DSP篇--C6701功能调试系列之CAN总线测试

调试的前期准备可以参考前面的博文:DSP篇--C6701功能调试系列之前期准备_nanke_yh的博客-CSDN博客 CAN总线的工作模式有两种:BasicCAN模式和PeliCAN模式。同时,其处理方式又分为:直连和托管两种。 目的:测试CAN总线的…

SQL语句练习04

目录 一、见表并插入数据 二、查询语句的练习 一、见表并插入数据 一、建立如下故事表(命名格式“姓名拼音_三位学号 _story”,如LBJ_023_story),并插入数据 、create table LYL_116_story(sid varchar(7),sname varchar(12), snation var…

华为云-PaaS云服务

文章目录1、什么是PaaS2、云服务三剑客2.1、 IaaS2.2、 PaaS2.3、 SaaS2.4、三剑客分布2.5 摩天大楼之下的三剑客3、华为PasS平台3.1、功能支持4、总结1、什么是PaaS Platform-as-a-Service(平台即服务),它作为云服务之一,平台也…

发布变更又快又稳?腾讯运维工程师经验首发

导读| 如何让功能缺陷修复快速上线?版本发出问题时怎样快速回退?效率提升后质量掉队?为解决这些常让运维工程师头疼的事情,本栏目特邀腾讯知名运维工程师袁旭东,讲述对象存储COS的发布演进过程,为各位开发者…

welecome

欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。新的改变我们对Markdown编辑器进行了一些功能拓展与语法支持,除…

循环神经网络(MLP——>RNN)

n元语法模型, 其中单词xt在时间步t的条件概率仅取决于前面n−1个单词。 对于时间步t−(n−1)之前的单词, 如果我们想将其可能产生的影响合并到xt上, 需要增加n,然而模型参数的数量也会随之呈指数增长, 因为词表V需要存…

git将其他分支的某个提交合到当前分支

目录1. 命令2. 操作说明1. 命令 同步一个提交的命令:git cherry-pick -x 提交id 同步多个提交的命令:git cherry-pick -x 提交id1 提交id2 提交id3 ... -x 可加可不加,一般建议加,因为我们这次的提交会产生新在 commit ID&#…

【自定义maven骨架】IDEA如何自定义一个的maven骨架,解决maven骨架添加之后不显示的问题

目录 一、自定义maven骨架 1.1、创建maven工程 1.2、引入archetype骨架插件 1.3、执行创建骨架命令 1.4、执行install命令 1.5、执行crawl命令 1.6、添加自定义骨架 1.7、解决maven骨架不生效问题 这篇文章,主要介绍一下如何使用IDEA自定义一个maven骨架项目…