【MQ核心概念理解】

文章目录

  • 一、MQ介绍
    • 1、什么是MQ?为什么要用MQ?
    • 中间服务要保证这些系统可以正常工作,应该要有哪些特性呢?
    • 2、MQ的优缺点

一、MQ介绍

1、什么是MQ?为什么要用MQ?

ChatGPT中对于消息队列的介绍是这样的:
MQ:MessageQueue,消息队列。这东西分两个部分来理解:队列,是一种FIFO 先进先出的数据结构。
消息:在不同应用程序之间传递的数据。将消息以队列的形式存储起来,并且在不同的应用程序之间进行传
递,这就成了MessageQueue。而MQ的作用,从刚才ChatGPT的介绍中就能够抽象出三个关键字:异步、
解耦、削峰。但是这什么意思呢?跟开发有什么关系?我们从一个简单的SpringBoot应用开始说起。
首先搭建一个普通的Maven项目,在pom.xml中引入SpringBoot的依赖:

中间服务要保证这些系统可以正常工作,应该要有哪些特性呢?

1、SpringBoot应用和监控服务应该是解耦的。不管有没有监控服务,SpringBoot应用都要是可以正常运行
的。同时,不管监控服务是用什么语言开发的,同样不应该影响SpringBoot应用的正常运行。更进一步,不
管监控服务要部署多少个,同样也不应该影响SpringBoot应用的正常运行。反过来,从监控服务看
SpringBoot应用也应该是一样的。这就需要这个中间服务可以提供不同语言的客户端,通过不同客户端让消
息生产者和消息消费者之间彻底解耦。
2、SpringBoot应用和监控服务之间处理消息应该是异步的。基于解耦的关系,SpringBoot应用并不需要知
道监控服务有没有运行。所以他并不需要将消息直接发送到监控服务,也不需要保证消息一定会被监控服务
处理。他只要将消息发到中间服务就可以了。而监控服务可以在SpringBoot应用发布了时间之后,随时去接
收处理这些消息。
3、这个中间服务需要可以协调双方的事件处理速度,产生削峰填谷的效果。监控服务一般都是希望每五分
钟接收到SpringBoot发布过来的消息,然后进行一次统计,但是SpringBoot应用发布的事件频率却是不确定
的。如果SpringBoot应用在五分钟内产生了海量的消息,就有可能让监控服务内存撑爆,处理不过来。而监
控服务如果加大内存,SpringBoot应用又有可能在五分钟内根本没有消息,监控服务的内存就白加了。监控
服务的内存配大配小都不合适。这时候,就需要这个中间服务能够这些消息暂存起来,让监控服务可以按照
自己的能力慢慢处理问题。这就是中间服务的削峰填谷的作用。

2、MQ的优缺点

这时候你可能在想,SpringBoot已经提供了本地的事件驱动支持。 那么我是不是给SpringBoot应用加上
一些web接口,基于这些web接口不就可以将本地的这些系统事件以及自己产生的这些事件往外部应用推
送,那这不就成了一个MQ服务了吗?单其实上面列出了MQ的的很多优点。 但是在具体使用MQ时,也会带
来很多的缺点:
系统可用性降低

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

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

相关文章

更改AndroidStudio模拟器位置

C盘何等的珍贵,可是好多工具,软件非得默认安装在C盘。。导致C盘越来越紧张。。 在日常使用过程中,安装任何软件都会将其安装到非系统盘下,Android模拟器也不能例外。保护好C盘也是日常一个良好的习惯。 Android AVD默认路径&…

ES6知识点

ES6 知识点及常考面试题 var、let 及 const 区别 涉及面试题:什么是提升?什么是暂时性死区?var、let 及 const 区别?对于这个问题,我们应该先来了解提升(hoisting)这个概念。 console.log(a)…

Android 13 - Media框架(24)- MediaCodecList

这一节我们要了解 MediaCodecList 中的信息是如何加载的&#xff0c;以及这些信息是如何使用到的。 // static sp<IMediaCodecList> MediaCodecList::getLocalInstance() {Mutex::Autolock autoLock(sInitMutex);if (sCodecList nullptr) {MediaCodecList *codecList n…

深入理解Servlet(下)

作者简介&#xff1a;大家好&#xff0c;我是smart哥&#xff0c;前中兴通讯、美团架构师&#xff0c;现某互联网公司CTO 联系qq&#xff1a;184480602&#xff0c;加我进群&#xff0c;大家一起学习&#xff0c;一起进步&#xff0c;一起对抗互联网寒冬 在这一篇文章里&#x…

hive里如何高效生成唯一ID

常见的方式&#xff1a; hive里最常用的方式生成唯一id&#xff0c;就是直接使用 row_number() 来进行&#xff0c;这个对于小数据量是ok的&#xff0c;但是当数据量大的时候会导致&#xff0c;数据倾斜&#xff0c;因为最后生成全局唯一id的时候&#xff0c;这个任务是放在一个…

工业机器视觉megauging(向光有光)使用说明书(十二,轻量级的visionpro)

关于最后一个工具的介绍&#xff1a;就是这个“相机图像” 我们可以鼠标双击点进去看一看&#xff1a; 在图像上点击&#xff0c;就可以截取一块图像&#xff0c;是可以放大缩小的&#xff0c;这个放大很low&#xff0c;是我以前研究缩放入门时的版本&#xff0c;本想删除&…

SELinux refpolicy详解(8)

接前一篇文章&#xff1a;SELinux refpolicy详解&#xff08;7&#xff09; 三、refpolicy内容详解 上一回&#xff08;上几回&#xff09;讲解完了refpolicy源码根目录下的README文件。本回继续讲解源码根目录下的其它文件。先来讲解在README文件中提到的build.conf文件。 2…

网站优化如何做?SEO怎么做?

网站刚上线肯定没有收录&#xff0c;没有排名&#xff0c;这是一个积累内容的阶段。这个阶段的seo优化该怎么做呢&#xff1f;小马识途营销顾问建议从以下几方面展开。 一、网站代码优化 1、设置Robot.txt文件&#xff0c;告诉搜索引擎哪些目录文件可以抓取&#xff0c;哪些目录…

机器学习笔记 - 异常检测之OneClass SVM算法简述

一、异常检测是什么? 如下图,理想中我们可以找到一个框住大部分正常样本的决策边界,而在边界外部的数据点(蓝点)即视为异常。 但实际情况下数据都没有标签,因此很难定义正常还是不正常。异常检测的主要挑战如下:正常与异常行为之间的界限往往并不明确、不同的应…

数字媒体技术基础之:常见字体类型

字体 Font在数字设计和排版中起着至关重要的作用&#xff0c;不同的字体类型为文本呈现和创意表达提供了丰富多样的可能性。 .fon 字体 .fon 文件是 Windows 早期系统中使用的一种字体文件格式。 特点&#xff1a; 1、基于像素的位图字体。 2、不支持无损缩放&#xff0c;主要用…

web前端之TypeScript

MENU typescript类型别名、限制值的大小typescript使用class关键字定义一个类、static、readonlytypescript中class的constructor(构造函数)typescript中abstractClass(抽象类)、extends、abstracttypescript中的接口、type、interfacetypescript封装属性、public、private、pr…

LeetCode刷题笔记第80题:删除有序数组中的重复项 II

LeetCode刷题笔记第80题&#xff1a;删除有序数组中的重复项 II 题目&#xff1a; 删除升序数组中超过两次的元素后的数组长度 想法&#xff1a; 使用快慢指针的方法完成&#xff0c;使用快指针遍历整个数组&#xff0c;使用慢指针完成相同元素最多保留两个。在快指针遍历到…

MATLAB实战 | S函数的设计与应用

S函数用于开发新的Simulink通用功能模块&#xff0c;是一种对模块库进行扩展的工具。S函数可以采用MATLAB语言、C、C、FORTRAN、Ada等语言编写。在S函数中使用文本方式输入公式、方程&#xff0c;非常适合复杂动态系统的数学描述&#xff0c;并且在仿真过程中可以对仿真进行更精…

a-table:表格组件常用功能记录——基础积累

antdvue是我目前项目的主流&#xff0c;在工作过程中&#xff0c;经常用到table组件。下面就记录一下工作中经常用到的部分知识点。 table组件 <a-table :dataSource"tableData":rowKey"(row) > row.id":scroll"{ y: 550 }"bordered:pag…

已解决AttributeError: module ‘gradio‘ has no attribute ‘outputs‘

问题描述 Traceback (most recent call last): File "/media/visionx/monica/project/ResShift/app.py", line 118, in <module> gr.outputs.File(label"Download the output")AttributeError: module gradio has no attribute outputs 解决办…

[英语学习][5][Word Power Made Easy]的精读与翻译优化

[序言] 今日完成第18页的阅读, 发现大量的翻译错误以及不准确. 需要分两篇文章进行讲解. [英文学习的目标] 提升自身的英语水平, 对日后编程技能的提升有很大帮助. 希望大家这次能学到东西, 同时加入我的社区讨论与交流英语相关的内容. [原著英文与翻译版对照][第18页] Wh…

Mininet学习记录(常用命令+创建网络拓扑+OpenDaylight显示拓扑结构)

目录 1.Mininet简介2.Mininet常用命令2.1创建网络拓扑常用参数2.2常用的内部交换命令 3.创建网络拓扑的三种方式3.1通过命令行创建3.2通过miniedit可视化界面创建3.3通过python脚本创建 4.问题总结 1.Mininet简介 Mininet 是由一些虚拟的终端节点 (end-hosts) 、交换机、路由器…

【计算机网络笔记】802.11无线局域网

系列文章目录 什么是计算机网络&#xff1f; 什么是网络协议&#xff1f; 计算机网络的结构 数据交换之电路交换 数据交换之报文交换和分组交换 分组交换 vs 电路交换 计算机网络性能&#xff08;1&#xff09;——速率、带宽、延迟 计算机网络性能&#xff08;2&#xff09;…

检查您的手机浏览器是否支持WebRTC技术

要检查您的手机浏览器是否支持WebRTC技术&#xff0c;可以通过以下方法&#xff1a; 方法1&#xff1a;使用WebRTC测试网站 访问测试网站&#xff1a; 在手机浏览器中&#xff0c;访问一个专门用于检测WebRTC支持的网站&#xff0c;例如Test WebRTC或WebRTC Troubleshooter.这…

富文本编辑器(wangEditor 5)

一、链接 wangEditor 二、基础 import wangeditor/editor/dist/css/style.css; // 引入 cssimport React, { useState, useEffect } from react; import { Editor, Toolbar } from wangeditor/editor-for-react; import { IDomEditor, IEditorConfig, IToolbarConfig } fro…