1、MQ_介绍、优缺点、类型等

MQ介绍

1. MQ概述

MQ(Message Queue):消息队列,是基础数据结构中FIFO(first in first out)的一种数据结构。一般用来解决流量削峰、应用解耦、异步处理等问题,实现高性能,高可用,可伸缩和最终一致性架构。

  • 高性能:性能好,性能高
  • 高可用:程序不会随便挂,系统的稳定性强
  • 可伸缩:增加计算机资源的时候程序的吞吐和处理能力页跟随增加
  • 最终一致性:存进来和取出去的数据是一致的

在这里插入图片描述
图上这种情况,耦合性很大,如果其中一个系统挂掉了,整个系统就停止了

下面这种情况使用了中间件,订单系统直接向中间件发起请求,这样各个系统的耦合性降低
在这里插入图片描述
小结:

  • MQ:消息队列,用于消息传递的中间件
  • 发送消息方称为生产者
  • 接收消息方称为消费者

2. MQ优缺点

  • 优点:
    • 流量削峰:避免流量高峰期导致系统挂掉,提高系统的稳定性
    • 应用解耦:降低系统之间的依赖,提高系统容错率
    • 异步请求:提速增效,提升用户体验

削峰:

  • RPS 1000:每秒处理请求的数量为1000

  • MQ可以让程序架构高内聚,低耦合
    在这里插入图片描述
    在这里插入图片描述
    解耦:
    在这里插入图片描述
    在这里插入图片描述
    异步处理:
    在这里插入图片描述
    在这里插入图片描述

  • 缺点

    • 提高了系统的复杂度,降低了系统稳定性和可用性
      • 引入了第三方技术,增加了宕机的风险
      • 如何保证系统高可用
    • 带来了数据一致性的问题
      • 各系统间的调用增加了不确定性,如何保证最终一致性
      • 怎么处理消息丢失的情况

小结:

  • 优点
    • 流量消峰:避免流量高峰时期导致系统挂掉,提高系统稳定性
    • 应用解耦:降低系统间依赖,提高系统容错性
    • 异步处理:提速增效,提高用户体验感
  • 缺点
    • 提高了系统复杂度,降低了系统稳定性和可用性
    • 带来了数据一致性问题

3.常见的MQ介绍

在这里插入图片描述
AMQP,即 Advanced Message Queuing Protocol(高级消息队列协议),是一个网络协议,是应用层协议的一个开放标准,为面向消息的中间件设计。2006年,AMQP 规范发布。

4.RabbitMQ概述

RabbitMQ是实现了高级消息队列协议(AMQP)的开源消息代理软件(亦称面向消息的中间件)。

官网地址:https://www.rabbitmq.com/

  • 架构图:
    在这里插入图片描述

5.RabbitMQ名词解释

  • Producer:生产者,发送消息的程序
  • Consumer:消费者,接收消息的程序
  • Broker:接收和分发消息的应用,RabbitMQ Server 就是 Message Broker
  • Connection:生产者,消费者,Broker之间的TCP连接
  • Channel:通信连接信道,降低TCP连接开销
  • Virtual host:虚拟主机
  • Exchange:交换机,message 到达 broker 先存放到交换机
  • Queue:队列,消费者从这里获取消息
  • Binding:交换机与队列之间的虚拟连接,用于消息分发

6.RabbitMQ工作模式

从官网抄过来的:
在这里插入图片描述

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

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

相关文章

Error:java:JDK isn‘t specified for module “模块名称“

可能是创建模块后不小心删掉了.idea.或.idea出错 只要删除.idea,close project出去,重新进让idea自动下载

FL Studio2024中文正式版水果编曲软件(支持苹果M1处理器)

FL Studio 2024是一款功能强大的数字音频工作站,它具有多种功能和特点,使得音乐制作变得更加简单、高效和有趣。 首先,它支持多轨录音和编辑,用户可以同时处理多个音频轨道,进行复杂的音乐编排和混音。此外&#xff0…

蜘蛛池是什么意思,怎么生成蜘蛛池

蜘蛛池是由自然界中的蜘蛛群落构成的一个小生态系统,也是身处自然界中的游客们可以在风雨中体验到最贴近自然气息的地方。 点开我主页面 Baidu蜘蛛的作用: 引蜘蛛逐渐收录,降权引蜘蛛可以疗伤,排名/收录不稳定,没有收…

基于springboot+vue的善筹网众筹网站

博主主页:猫头鹰源码 博主简介:Java领域优质创作者、CSDN博客专家、阿里云专家博主、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战,欢迎高校老师\讲师\同行交流合作 ​主要内容:毕业设计(Javaweb项目|小程序|Pyt…

Linux 开发工具 yum、git、gdb

目录 一、yum 1、软件包 2、rzsz 3、注意事项 4、查看软件包 5、安装软件 6、卸载软件 二、git操作 1、克隆三板斧 2、第一次使用会出现以下情况: 未配置用户名和邮箱: push后弹出提示 三、gdb使用 1、背景 2、使用方法 例一&#xff1a…

数据库:2024/3/6

作业1&#xff1a;使用C语言完成数据库的增删改 代码&#xff1a; #include <myhead.h>//定义添加员工信息函数 int Add_worker(sqlite3 *ppDb) {//准备sql语句printf("请输入要添加的员工信息:\n");//从终端获取员工信息char rbuf[128]"";fgets(r…

阿里云2核2G服务器多少钱?99元一年,轻量云是61元一年

阿里云2核2G服务器多少钱&#xff1f;99元一年&#xff0c;轻量云服务器是61元一年。2核2G服务器性能如何&#xff1f;性能很不错&#xff0c;不限制CPU性能&#xff0c;99元2核2G服务器是ECS经济型e实例&#xff0c;61元2核2G服务器是轻量应用服务器&#xff0c;都是3M公网带宽…

Facial Micro-Expressions:An Overview 阅读笔记

Proceedings of the IEEE上一篇微表情相关的综述&#xff0c;写的很详细。从心理学与计算机两个领域阐述了微表情生成的原因与相关算法&#xff0c;值得仔细研读。 摘要&#xff1a; Four main tasks in ME analysis arespecifically discussed,including ME spotting,ME recog…

【MySQL】数据库设计

目录 数据库设计基本任务 软件项目开发周期中数据库设计数据库设计的基本步骤解释需求分析需求分析的三个步骤&#xff1a;1.需求调查:2.分析数据字典内容定义数据的方法案例 3. 评审 概念结构设计概念模型概念结构设计E-R图概念模型组成元素&#xff1a;关系解释案例分析 逻辑…

获得店铺的所有商品API接口

使用淘宝淘口令接口的步骤通常包括&#xff1a; 注册成为淘宝开放平台的开发者&#xff1a;在淘宝开放平台网站上注册账号并完成认证。 创建应用以获取API密钥&#xff1a;在您的开发者控制台中创建一个应用&#xff0c;并获取用于API调用的密钥&#xff0c;如Client ID和Clie…

【QT】鼠标事件<QMouseEvent>

事件&#xff08;鼠标事件&#xff09; 功能单一的事件&#xff0c;鼠标进来是一个事件&#xff0c;鼠标出去是另外一个事件。 QT提供了很多的事件函数&#xff0c;我们通过重写这些事件函数就可以实现我们想要的效果。 事件函数都是虚函数 写一个子类&#xff0c;继承QLab…

Python 文件基础科普与文件打开技术详解【第117篇—文件打开技术】

Python 文件基础科普与文件打开技术详解 在Python编程中&#xff0c;文件操作是一项基础而重要的任务。无论是读取数据、写入文件还是进行其他文件处理操作&#xff0c;都需要对文件基础知识有一定的了解。在本文中&#xff0c;我们将首先介绍Python文件的基础概念&#xff0c…

Unity性能优化篇(九) 模型优化之LOD技术概述以及操作方法

LOD模型优化技术概述: 1.LOD技术可以根据摄像头远近来显示不同精度的模型(例如吃鸡游戏 随着跳伞高度 来显示下面树木以及建筑的模型精度) LOD模型优化技术操作方法: 可使用Unity自带的LOD Group组件&#xff0c;并根据项目的情况来调整该组件的属性。Untiy资源商店也有一些其…

机器学习——线性回归

机器学习——线性回归 文章目录 机器学习——线性回归一、什么是线性回归二、一元线性回归方程三、损失函数四、代码实现五、运用说明 一、什么是线性回归 线性回归是一种用来建立自变量和因变量之间线性关系的统计分析方法&#xff0c;也是机器学习中最常见、最容易理解的一个…

Flyway 9.22.3 + springboot3 + MySQL8.0+,简单使用

文章目录 flyway的依赖配置ieda 启动&#xff01;&#xff01;&#xff01; 关于这篇文章主要是自己在使用flyway时遇到的一些问题以及最终的解决方法 当然包括所有的配置&#xff0c;主要目的是记录一下防止下次使用的时候忘记 flyway的依赖 这里 springboot 3 具体版本不再描…

力扣经典 4. 寻找两个正序数组的中位数(多种语言解)

给定两个大小分别为 m 和 n 的正序&#xff08;从小到大&#xff09;数组 nums1 和 nums2。请你找出并返回这两个正序数组的 中位数 。算法的时间复杂度应该为 O(log (mn)) 。 目录 题目描述 知识点 解题思路 完整代码 Python Java C 题目描述 给定两个大小分别为 m 和…

Kakarot:当今以太坊的未来

1. 引言 前序博客&#xff1a; Kakarot&#xff1a;部署在Starknet上的ZK-EVM type 3 随着 Kakarot zkEVM 即将发布测试网&#xff0c;想重申下 Kakarot zkEVM 的愿景为&#xff1a; 为什么在rollup空间中还需要另一个 zkEVM&#xff1f; 开源代码见&#xff1a; https:/…

Python与FPGA——局部二值化

文章目录 前言一、局部二值化二、Python局部二值化三、FPGA局部二值化总结 前言 局部二值化较全局二值化难&#xff0c;我们将在此实现Python与FPGA的局部二值化处理。 一、局部二值化 局部二值化就是使用一个窗口&#xff0c;在图像上进行扫描&#xff0c;每扫出9个像素求平均…

Android耗电分析之Battery Historian工具使用

Battery-Historian是谷歌推出的一款专门分析Bugreport的工具&#xff0c;是谷歌在2015年I/O大会上推出的一款检测运行在android5.0(Lollipop)及以后版本的设备上电池的相关信息和事件的工具&#xff0c;是一款对于分析手机状态&#xff0c;历史运行情况很好的可视化分析工具。 …

基于单片机的电子秤设计

目 录 摘 要 I Abstract II 引 言 1 1 系统总体设计方案 4 1.1 设计目标与要求 5 1.2 方案论证与选择 6 2 硬件电路设计 7 2.1 单片机型号选择 7 2.2 显示模块电路设计 8 2.3 传感器模块电路设计 9 2.4 按键模块电路设计 11 2.5 报警模块电路设计 12 2.6 模数转换电路设计 12 …