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工作模式

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

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

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

相关文章

24计算机考研调剂 | 中国民用航空飞行学院

中国民用航空飞行学院计算机学院2024年研究生招生啦~ 考研调剂招生信息 学校:中国民航飞行学院 专业:工学->电子信息 年级:2024 招生人数:- 招生状态:正在招生中 联系方式:********* (为保护个人隐私,联系方式仅限APP查看) 补充内容 中国民用航空飞行学院计算机学院…

Kafka|处理 Kafka 消息丢失的有效措施

文章目录 消息丢失场景生产者端Kafka Broker消费者端 如何防止消息丢失生产者端Kafka Broker 端消费者端 扩展如何实现消费端的重试功能?有如何处理消息重复? 消息丢失是 Kafka 系统中一个严重的问题,可能会发生在生产者、Broker 或消费者任何…

鸿蒙实战开发:数据交互【RPC连接】

概述 本示例展示了同一设备中前后台的数据交互,用户前台选择相应的商品与数目,后台计算出结果,回传给前台展示。 样例展示 基础信息 RPC连接 介绍 本示例使用[ohos.rpc]相关接口,实现了一个前台选择商品和数目,后台…

RabbitMQ消息的重复消费问题

消息重复消费是分布式消息传递系统常见的一个问题。在RabbitMQ中,可以通过以下几种策略解决或者缓解消息重复消费的问题: 确保消息处理的幂等性:设计消费者的消息处理逻辑,确保即使消息被多次消费也不会对系统造成不良影响。 消息…

Java解决统计包含给定前缀的字符串

Java解决统计包含给定前缀的字符串 01 题目 给你一个字符串 jewels 代表石头中宝石的类型,另有一个字符串 stones 代表你拥有的石头。 stones 中每个字符代表了一种你拥有的石头的类型,你想知道你拥有的石头中有多少是宝石。 字母区分大小写&#xff0c…

【大数据】-- 创建 Paimon 外部表

如今,在数据湖三剑客(delta lake、hudi、iceberg)之上,又新出一派: apache paimon。我们恰好在工作中遇到,以下介绍在 dataworks 上,使用 maxcompute odps sql 创建 apache paimon 外部表的一些…

Claude3深夜震撼发布!模型特点分析,附使用教程

Claude3深夜震撼发布!模型特点分析,附使用教程 引言 最新发布的Claude3引起了广泛关注,这次发布一举推出了三个不同类型的模型,分别是Claude 3 Haiku、Claude 3 Sonnet和Claude 3 Opus。每个模型都具有独特的特点和能力&#xff…

使用 Redis 进行高效数据缓存的 C# 实践

使用 Redis 进行高效数据缓存的 C# 实践 前言一、搭建 Redis 环境二、在 C# 中使用 Redis1. 安装 StackExchange.Redis2. 连接到 Redis 服务器3. 常用数据类型的操作4. 数据缓存实践5. 高级特性和性能优化6. 错误处理和异常处理 三、总结 前言 Redis 是一种开源的内存数据库&a…

深色系可视化界面看腻了,来点浅色系?安排,20页来了。

只要不放在大屏上展示,贝格前端工场还是非常推崇浅色系的可视化界面,把它作为配色的首选 。浅色系可视化界面具有以下几个优势: 清晰明了 浅色系界面通常使用明亮的颜色,如白色、浅灰色等,使界面元素更加清晰可见。这…

Linux内核基础 - list_splice_tail_init函数详解

解析 Linux Kernel 4.19 的 list_splice_tail_init 函数 摘要 本文档旨在解析 Linux 内核 4.19 版本中 list_splice_tail_init 函数的作用,这是一个处理内核链表的重要函数。通过此函数,可以将一个链表插入到另一个链表的尾部,并将源链表初…

Python 开发图形界面程序

用 Python 语言开发图形界面的程序,有2种选择: Tkinter 基于Tk的Python库,这是Python官方采用的标准库,优点是作为Python标准库、稳定、发布程序较小,缺点是控件相对较少。 PySide2/PySide6 基于Qt 的Python库&#x…

机器学习-面经(part7、无监督学习)

机器学习面经系列的其他部分如下所示: 机器学习-面经(part1) 机器学习-面经(part2)-交叉验证、超参数优化、评价指标等内容 机器学习-面经(part3)-正则化、特征工程面试问题与解答合集机器学习-面经(part4)-决策树共5000字的面试问题与解答…

【ArcGIS超级工具】基于ArcPy的矢量数据批量自动化入库工具

最近,有很多做规划的朋友私信我,想让我帮忙开发一款ArcGIS自动化脚本工具,实现点、线、面的自动化入库操作,帮他们在平时的内业数据处理工作中减少机械式重复性的工作,提高工作效率。为此,我详细了解了下目…

项目设计方案规范参考

在软件架构设计中,以下是一个常见的软件架构设计模版,供参考: 1. 业务需求分析 确定系统的业务需求和功能需求。 分析用户需求,确定系统的核心功能和非功能需求。 2. 架构设计原则 SOLID 原则(单一职责、开放封闭、里…

这本书太好了!150页就能让你上手大模型应用开发

如果问个问题:有哪些产品曾经创造了伟大的奇迹?ChatGPT 应该会当之无愧入选。仅仅发布 5 天,ChatGPT 就吸引了 100 万用户——当然,数据不是关键,关键是其背后的技术开启了新的 AI 狂潮,成为技术变革的点火…

数据结构与算法学习【算法思想之二分法基础】

文章目录 数据结构与算法学习【算法思想之二分查找基础】本文学习目标或巩固的知识点 最基础的二分查找🟢通过题目可知题解结果验证 数据结构与算法学习【算法思想之二分查找基础】 本文学习目标或巩固的知识点 学习二分法类题目 巩固基础的二分法 提前说明&#…

Jmeter之Ramp-up Period(in seconds)

1、Ramp-up Period概念 (in seconds)–并发用户启动周期,告知JMeter 要在多长时间内启动全部Vuser用户。 2、为什么需要有“ramp-up period”,立即启动所有的并发用户数不是更好? 对于绝大多数的网址或应用&#xf…

【数据结构】堆的TopK问题

大家好,我是苏貝,本篇博客带大家了解堆的TopK问题,如果你觉得我写的还不错的话,可以给我一个赞👍吗,感谢❤️ 目录 一. 前言二. TopK三. 代码 一. 前言 TOP-K问题:即求数据结合中前K个最大的元…

C#中使用 Prism 框架

C#中使用 Prism 框架 前言一、安装 Prism 框架二、模块化开发三、依赖注入四、导航五、事件聚合六、状态管理七、测试 前言 Prism 框架是一个用于构建可维护、灵活和可扩展的 XAML 应用程序的框架。它提供了一套工具和库,帮助开发者实现诸如依赖注入、模块化、导航…

【Docker】技术架构演变

【Docker】技术架构演变 目录 【Docker】技术架构演变架构中的概念架构演进单机架构相关软件 应用数据分离架构应用服务集群架构相关软件 读写分离/主从分离架构相关软件 引入缓存——冷热分离架构相关软件 垂直分库(分布式数据库架构)相关软件 业务拆分…