1.1MQ的基本概念,优劣势介绍及 RabbitMQ简介

news2025/1/24 6:33:07

1.MQ的基本概念

1.1 MQ概述

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

在这里插入图片描述

1.2 MQ 的优势

1.2.1应用解耦

当订单系统强依赖库存系统,支付系统,物流系统等,若其中一个系统出现问题,整个系统都会收到影响。如下如的系统模式:

在这里插入图片描述

系统的耦合性越高,容错性就越低,可维护性就越低。

若订单系统和库存系统、支付系统、物流系统等其他系统之间添加一个MQ消息队列解除它们之间的强依赖,这样可以提升容错性和可维护性。如下图:

在这里插入图片描述

使用MQ是的应用之间解耦,提升容错性和可维护性。

1.2.2异步提速

例如:正常的一个下单操作耗时:20+300+300+300+300=1220ms,用户点击下单按钮需要等待1220ms才能等待下单响应。如下图:

在这里插入图片描述

如果在订单系统和其他系统中间添加一个MQ,让订单系统和MQ交互,MQ和库存系统,支付系统,物流系统,其他系统交互,这样大大提升系统的速度。如下图:

在这里插入图片描述

用户点击完下单按钮,只需等待25ms就能得到下单响应。

提升用户体验和系统吞吐量

1.2.3 削峰填谷

在这里插入图片描述
在这里插入图片描述
使用MQ之后,限制消费消息的速度为1000,这样一来,高峰期产生的数据会挤压在MQ中,高峰被“削”掉了,但是因为消息积压,在高峰期过后的一段时间内,消费消息的速度还是会维持在1000,直到消费完挤压的消息,这就做“填谷”。

使用MQ之后,提高系统的稳定性。

1.2.4 MQ 优势总结:
  • 应用解耦:提高心痛容错性和可维护性。
  • 异步提速:提升用户体验和系统吞吐量。
  • 削峰填谷:提高系统稳定性。

1.3 MQ的劣势

在这里插入图片描述

  • 系统可用性降低:系统引入的外部依赖越多,系统的稳定性越差。一旦MQ宕机,就会对业务造成影响。如何保证MQ的高可用变的很重要
  • 系统复杂度提高:MQ的加入大大增加了系统的复杂度,以前系统间是同步的远程调用,现在是通过MQ进行异步调用。如何保证消息不被丢失等情况变得重要

1.4 常见MQ产品对比

在这里插入图片描述

RabbitMQ安全性比较高,Kafka在金融领域用的比较多。

1.5 RabbitMQ简介

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

在这里插入图片描述

2007年,Rabbit 技术公司基于 AMQP 标准开发的 RabbitMQ 1.0 发布。RabbitMQ 采用 Erlang 语言开发。 Erlang 语言由 Ericson 设计,专门为开发高并发和分布式系统的一种语言,在电信领域使用广泛。

RabbitMQ基础架构如下

在这里插入图片描述
RabbitMQ 中的相关概念:

  • Broker:接收和分发消息的应用,RabbitMQ Server就是 Message Broker
  • Virtual host:出于多租户和安全因素设计的,把 AMOP 的基本组件划分到一个虚拟的分组
    中,类似于网络中的 namespace 概念。当多个不同的用户使用同一个 RabbitMQ server 提供的服务时,可以划分出多个vhost,每个用户在自己的 vhost 创建 exchange/queue等 Connection: publisher/consumer 和 broker 之间的 TCP 连接。
  • Channel:如果每一次访问 RabbitMQ 都建立一个 Connection,在消息量大的时候建立TCP Connection的开销将是巨大的,效率也较低。Channel 是在 connection 内部建立的逻辑连接,如果应用程序支持多线程,通常每个thread创建单独的 channel 进行通讯,AMQP method 包含了channel id 帮助客户端和message broker 识别 channel,所以channel之间是完全隔离的。Channel 作为轻量级的 Connection 极大减少了操作系统建立 TCP connection 的开销。
  • Exchange: message 到达 broker 的第一站,根据分发规则,匹配查询表中的 routing key,分发消息到queue 中去。常用的类型有:direct (point-to-point) ,topic (publish-subscribe) and fanout (multicast)
  • Queue:消息最终被送到这里等待 consumer 取走。
  • Binding:exchange 和 queue 之间的虚拟连接,binding 中可以包含 routing key。 Binding 信息被保存到 exchange 中的查询表中,用于 message 的分发依据

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

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

相关文章

Lambda求和函数在excel上的应用

目录 一、Lambda函数 二、Lambda求和函数 三 、实际表格运用 四、计算结果 一、Lambda函数 Lambda函数是使用lambda运算符创建的,其语法如下: 语法: lambda 参数:表达式 Python lambda函数可以包含任意多的参数,但…

Js逆向教程-16极验滑块 找到w加密位置

作者:虚坏叔叔 博客:https://xuhss.com 早餐店不会开到晚上,想吃的人早就来了!😄 Js逆向教程-16极验滑块 找到w加密位置 一、如何下第一个断点 https://www.geetest.com/demo/slide-float.html 接口有多个w参数&…

springboot+vue 任课教师考评评价系统 Java 前后端分离

随着我国教育改革的发展,各大高校的大学生数量也在不断的增加,相对应如何去评价教学的质量问题也是很多高校一直以来所关注的内容。只有有了一个好的教学评价制度才能够让各大高校的教学质量稳步提升,本系统就是这样一个根据各项指标对教学质…

day77:注解、自定义注解、元注解

一、注解 1.什么是注解 注解是对程序进行标注和解释 2.常用注解 Override 描述子类重写父类的方法Deprecated 描述此方法已过时SuppressWarnings 压制警告 3.图解 4.注解与注释的区别 注解:给编译器看的,让虚拟机知道程序的特殊功能注…

【吴恩达机器学习笔记】

✍个人博客:https://blog.csdn.net/Newin2020?spm1011.2415.3001.5343 📣专栏定位:为学习吴恩达机器学习视频的同学提供的随堂笔记。 📚专栏简介:在这个专栏,我将整理吴恩达机器学习视频的所有内容的笔记&…

PostgreSQL 同步复制原理解析

背景 Postgresql 在主备架构的场景下,支持同步流复制功能。本文将以一主一备架构为例,介绍同步流复制(同步备机)的工作方式以及内核代码的相关原理。 配置同步备机 工欲善其事,必先利其器。我们现简单的配置一个同步…

微信小程序图书管理系统

目 录 摘 要 I Abstract II 目 录 V 1 绪论 1 1.1研究背景 1 1.2研究课题和意义 2 1.3研究内容和论文结构 3 2 移动网络环境下图书管理系统的现状分析 4 2.1移动网络环境下图书管理系统的特点 4 2.2当前国内外移动网络环境下图书管理系统的现状 7 2.3微信给移动网络环境下图书管…

遥感技术及高分遥感影像在地震中的应用及高分二号获取

长期以来,地震预报监测、灾害调查、灾情信息获取主要依靠实地勘测手段,其获取的数据精度和置信度虽然较高,但存在工作量大、效率低、费用高和信息不直观等缺点。遥感技术手段可在一定程度上克服传统实地勘测手段的缺点,并具有其他…

我参加第七届NVIDIA Sky Hackathon——训练ASR模型

如何从0开始训练自己的ASR模型 第一步 获取NGC密钥 第二步 配置Ubuntu22.04的运行环境 第三步 开始训练ASR模型 文章目录如何从0开始训练自己的ASR模型前言一、获取NGC密钥二、配置Ubuntu22.04的运行环境1.安装 NVIDIA 驱动 460 以上版本2.安装 docker 与 nvidia-docker23.安装…

iClient for Leaflet实现动态绘圆的几何查询

作者:ls 【目录】 背景前期准备呈现效果实现过程完整代码 【背景】 几何查询是WebGIS项目中一项比较常用的功能,SuperMap iClient 产品支持的几何对象类型众多,能够满足用户的许多需求。 近期遇到许多小伙伴反应,绘制圆形进行…

spring复习03,注解配置管理bean

spring复习03,注解配置管理bean注解的配置1.标识组件的常用注解:2.扫描组件:3.基于注解的自动装配:4.使用注解以后:基于注解自动装配的小例子1.dao层:2.service层:3.controller层:4.spring配置文件5.测试输…

Python控制程控电源

文章目录前言一、环境搭建二、使用步骤三、执行结果总结前言 本文章主要是记录汽车电子或嵌入式设备自动化测试中,部分场景需要控制被测设备的供电电源,以下就以常见的艾德克斯程控电源为例,分享如何通过Python来控制程控电源。 一、环境搭建…

Java字符串(String类)

目录 🛴一.认识String类 🛴二.String类的使用 🎄2.1构造字符串 🎄2.2字符串长度 🎄2.3String对象的比较 🎄2.4字符串查找 👜charAt方法 👜indexOf方法 👜lastI…

浅谈 Class.forName() 的用法

目录 什么是class对象 获得class对象的三种方法 class的作用和方法 Class.forName()用法 什么时候用Class.forName()? newInstance和new关键字的区别 应用问题解析 情景一:载入数据库驱动的时候 情景二:使用AIDL与电话管理Servic进行通…

[Spring Boot 5]安全管理

本文介绍了Spring Security 以及Shiro 在Spring Boot中的使用,对于Spring Security 有基于传统认证方式的Session认证,也有使用OAuth 协议的认证。一般来说,传统的Web架构中,使用Session 认证更加快速,但是&#xff0c…

2. 如何给在 SAP Business Application Studio 里开发的 OData 服务准备测试数据

在开始本步骤的学习之前,请大家务必完成前一步骤1. SAP Business Application Studio 里创建一个基于 CAP 模型的最简单的 OData 服务的学习。换言之,大家已经在 SAP Business Technology Platform 上的 Business Application Studio 里,创建好了 Dev Space,并且拥有一个能…

JVM 别和我说你还不知道这几种垃圾回收器?Serial |Parallel|ParNew|CMS|G1|ZGC

Serial / Serial Old 从单词翻译过来看 serial 串行,每次它就是一款单线程收集器。 Serial 工作在新生代垃圾回收,Serial Old在老年代进行垃圾回收,Serial Old一般作为CMS 并发收集失败后的备选回收方案。 在垃圾收集器面前,它…

《Flowable流程引擎从零到壹》引入日志框架和部署流程定义

14天学习训练营导师课程: 邓澎波《Flowable流程引擎-基础篇【2022版】》 邓澎波《Flowable流程引擎-高级篇【2022版】》 学习笔记《Flowable流程引擎从零到壹》回城传送 ❤️作者主页:小虚竹 ❤️作者简介:大家好,我是小虚竹。Java领域优质创…

目标检测算法——YOLOv5/YOLOv7改进之结合​PP-LCNet(轻量级CPU网络)

>>>深度学习Tricks&#xff0c;第一时间送达<<< 目录 ​PP-LCNet——轻量级且超强悍的CPU级骨干网络&#xff01;&#xff01; &#xff08;一&#xff09;前沿介绍 1.PP-LCNet主要模块 2.相关实验结果 &#xff08;二&#xff09;YOLOv5/YOLOv7改进之结…

GreenPlum6.x之ETL工具

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录前言一、ETL是什么&#xff1f;二、数据加载工具GPLoad1.GPLoad安装部署2.编写控制文件test.yml总结前言 提示&#xff1a;这里可以添加本文要记录的大概内容&#…