消息中间件介绍

news2024/10/2 7:37:45

99d558895ad04a1e9e673790b1f898f6.gif

 

一般,我们认为消息中间件是指支持与保障分布式应用程序之间同步/异步收发消息的中间件。消息是分布式应用之间进行数据交换的基本信息单位,分布式应用程序之间的通信接口由消息中间件提供。其中,异步方式指消息发送方在发送消息时不必知道接收方的状态,更无需等待接收方的回复,而接收方在收到消息时也不必知道发送方的目前状态,更无需进行同步的消息处理,它们之间的连接完全是松耦合的,通信是非阻塞的,这种异步通信方式是由消息中间件中的消息队列及其服务机制保障的。一般地,实时性要求较高的业务采用同步方式处理,实时性要求不高的业务采用异步方式进行处理。

 

消息中间件已广泛应用于各类分布式应用系统,消息中间件开始向发布/订阅架构转变,并成为企业应用集成中间件的一种核心机制,而基于发布/订阅架构的消息中间件通常称为发布/订阅消息中间件或消息代理。目前比较典型的消息中间件包括IBM WebSphere MQSeries、阿里的RocketMQ和Kafka等。

 

消息中间件是在消息的传输过程中保存信息的容器。消息中间件再将消息从它的源中继到它的目标时充当中间人的作用。队列的主要目的是提供路由并保证消息的传递;如果发送消息时接收者不可用,消息队列会保留消息,直到可以成功地传递它为止,当然,消息队列保存消息也是有期限的。

 

2 消息中间件的特点

2.1 采用异步处理模式

消息发送者可以发送一个消息而无须等待响应。消息发送者将消息发送到一条虚拟的通道(主题或队列)上,消息接收者则订阅或是监听该通道。一条信息可能最终转发给一个或多个消息接收者,这些接收者都无需对消息发送者做出同步回应。整个过程都是异步的。

 

2.2 应用程序和应用程序调用关系为松耦合关系

主要体现在如下两点:

(1)发送者和接受者不必了解对方、只需要确认消息

(2)发送者和接受者不必同时在线

比如在线交易系统为了保证数据的最终一致,在支付系统处理完成后会把支付结果放到消息中间件里通知订单系统修改订单支付状态。两个系统通过消息中间件解耦。

 

3 消息传递服务模型

消息传递服务模型如下图所示

消息中间件MQ详解_MQ

 

4 消息中间件的传输模式

4.1 点对点模型

点对点模型用于消息生产者和消息消费者之间点到点的通信。消息生产者将消息发送到由某个名字标识的特定消费者。这个名字实际上对于消费服务中的一个队列(Queue),在消息传递给消费者之前它被存储在这个队列中。队列消息可以放在内存中也可以是持久的,以保证在消息服务出现故障时仍然能够传递消息。

 

传统的点对点消息中间件通常由消息队列服务、消息传递服务、消息队列和消息应用程序接口API组成,其典型的结构如下图所示。

消息中间件MQ详解_中间件_02

 

特点:

(1)每个消息只用一个消费者

(2)发送者和接受者没有时间依赖

(3)接受者确认消息接受和处理成功

示意图如下所示:

消息中间件MQ详解_中间件_03

 

4.2 发布-订阅模型(Pub/Sub)

发布者/订阅者模型支持向一个特定的消息主题生产消息。0或多个订阅者可能对接收来自特定消息主题的消息感兴趣。在这种模型下,发布者和订阅者彼此不知道对方。这种模式就好比是匿名公告板。这种模式被概况为:多个消费者可以获得消息,在发布者和订阅者之间存在时间依赖性。发布者需要建立一个订阅(subscription),以便能够消费者订阅。订阅者必须保持持续的活动状态及接收消息,除非订阅者建立了持久的订阅。在这种情况下,在订阅者未连接时发布的消息将在订阅者重新连接时重新发布。如下图所示:

消息中间件MQ详解_中间件_04

 

发布/订阅模型特性

(1)每个消息可以有多个订阅者

(2)客户端只有订阅后才能接收到消息

(3)持久订阅和非持久订阅

 

注意:

(1)发布者和订阅者有时间依赖

接受者和发布者只有建立订阅关系才能收到消息

(2)持久订阅

订阅关系建立后,消息就不会消失,不管订阅者是否都在线

(3)非持久订阅

订阅者为了接受消息,必须一直在线。

当只有一个订阅者时约等于点对点模式

 

5 消息中间件应用场景

5.1 用户注册异步处理

网站用户注册,注册成功后会过一会发送邮件确认或者短息

消息中间件MQ详解_MQ_05

 

5.2 日志分析使用

把日志进行集中收集,用于计算PV、用户行为分析

消息中间件MQ详解_中间件_06

 

5.3 数据复制

(1)将数据从源头复制到多个目的地,一般是要求顺序或者保证因果序列

(2)用于跨机房数据传输、搜索、离线数据计算等。

消息中间件MQ详解_消息_07

 

5.4 延迟消息发送和暂存

(1)把消息中间件当成可靠的消息暂存地

(2)定时进行消息投递,比如模拟用户秒杀访问,进行系统性能压测

消息中间件MQ详解_中间件_08

 

5.5 消息广播

(1)缓存数据同步更新

(2)往应用推送数据

比如更新本地缓存:

消息中间件MQ详解_消息_09

 

6 消息中间件消息模型分类

6.1 push推消息模型

消息生产者将消息发送给消息传递服务,消息传递服务又将消息推给消息消费者。

 

6.2 pull拉消息模型

消费者请求消息服务接受消息,消息生产者从消息中间件拉该消息。

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

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

相关文章

奇遇MIX体验:加入全彩VST透视,开创消费级VR一体机新时代

前不久在奇遇MIX发布会上我们知道,面临着国内复杂的竞争环境,奇遇VR将选择差异化运营模式,一是硬件上停产单一VR模式设备,专注于支持VST的VR设备;二是内容层面,通过提供三年影视或游戏权益的模式&#xff0…

【openGauss实战1】openGauss基于CentOS8的部署

📢📢📢📣📣📣 哈喽!大家好,我是【IT邦德】,江湖人称jeames007,10余年DBA工作经验 一位上进心十足的【大数据领域博主】!😜&#x1f61…

写出更优雅和稳健的 TS 代码的几个 tips

写出更优雅和稳健的 TS 代码的几个 tips 本来想放优雅 太优雅了.jpg,后来还是好懒啊…… 使用 unknown 代替 any any 的问题在于它直接关闭了 TS 的类型检查,因此一旦使用了 any,那就代表任何事情都会发生。使用 unknown 则告诉 TS&#x…

LIS源码 医院检验科LIS系统源码 .net检验系统源码 实验室信息管理系统源码全开源,价值百万

LIS系统即实验室信息管理系统。LIS系统能实现临床检验信息化,检验科信息管理自动化。其主要功能是将检验科的实验仪器传出的检验数据经数据分析后,自动生成打印报告,通过网络存储在数据库中,使医生能够通过医生工作站方便、及时地…

PXE+Kickstart 自动化部署系统

PXE 预启动执行环境是由Intel开发的技术,可以让计算机通过网络来启动操作系统(前提是计算机上安装的网卡支持PXE技术),主要用于在无人值守安装系统中引导客户端主机安装Linux操作系统. Kickstart是一种无人值守的安装方式,其工作原理是预先把原本需要运维人员手工填写的参数保…

谷粒商城之高级篇(2)

2.6 购物车服务 2.6.1 环境搭建 ①域名配置 ②创建 微服务 暂时需要的插件 此外&#xff0c;导入 公共包的依赖 <dependency><groupId>com.atguigu.gulimall</groupId><artifactId>gulimall-common</artifactId><version>0.0.1-SNAPSHOT…

50. 残差网络(ResNet)代码实现

1. 残差块 ResNet沿用了VGG完整的 33 卷积层设计。 残差块里首先有2个有相同输出通道数的 33 卷积层。 每个卷积层后接一个批量规范化层和ReLU激活函数。 然后我们通过跨层数据通路&#xff0c;跳过这2个卷积运算&#xff0c;将输入直接加在最后的ReLU激活函数前。 这样的设计…

PDF在线转Word?方便快捷易上手的方法

PDF和Word都是我们日常生活中经常看到的文件格式&#xff0c;如果你也是一个工作党&#xff0c;那小编相信你肯定会遇到关于这两种文件的转换问题。其实&#xff0c;PDF格式是十分方便我们进行文件传输和差阅读&#xff0c;不仅兼容性较强&#xff0c;而且文件内容相对来说是固…

罗克韦尔AB PLC安装Studio 5000 V35的具体步骤演示

罗克韦尔AB PLC安装Studio 5000 V35的具体步骤演示 具体安装步骤可参考如下内容: 解压下载的安装包,找到安装包中的Setup.exe, 如下图所示,右击Setup.exe,选择“以管理员身份运行”, 如下图所示,安装程序正在准备中, 如下图所示,此时安装程序报错:未安装Microsoft…

ARM64内存虚拟化分析(6)向KVM注册内存更新

1 KVM memory listener的注册 在KVM初始化kvm_init()中会通过函数km_memory_listener_regiter()注册KVM所对应的memory listener&#xff0c;其中设置KVM region_add回调&#xff0c;KVM region_del回调以及KVM log_start/log_stop的回调。 2 region_add回调 当添加内存区域时&…

Wireshark抓到的H264帧

H264文件解析 NALU size, NALU start code size, NALU type 0, 0 0 UNSPECIFIED NALU size, NALU start code size, NALU type 26, 4 7 SPS NALU size, NALU start code size, NALU type 4, 4 8 PPS NALU size, NALU start code…

浅谈数据孤岛和数据分析的发展

大数据时代&#xff0c;企业对数据的重视力度逐步增强&#xff0c;数据分析、数据治理、数据管理、数据资产&#xff0c;已经被人们熟知&#xff0c;在数据的统计汇总和挖掘分析下&#xff0c;管理者的决策有了强有力的支撑和依据&#xff0c;同时也产生了新的问题&#xff0c;…

CSS 奇技淫巧Box-shadow实现圆环进度条

CSS 奇技淫巧Box-shadow实现圆环进度条 文章目录CSS 奇技淫巧Box-shadow实现圆环进度条一、Box-shadow圆环进度条二、效果预览三、原理刨析四、实际应用五、总结六、参考资料&#x1f498;七、推荐博文&#x1f357;一、Box-shadow圆环进度条 实现圆环进度条的方法用很多种&am…

figma和sketch应该选择哪个?

设计行业的工具层出不穷&#xff0c;在我看来sketch它在一定程度上被颠覆了PS&#xff0c;如今sketch已经成为许多设计团队的设计工具。 那么Figma相对于Sketch自身优势是什么&#xff1f;有什么不便&#xff1f;让我们从几个方面来了解。 两个软件都很适合创建UI和组件库。Sk…

图形查看器丨IrfanView功能简介

IrfanView 是一款快速、紧凑和创新的图形查看器&#xff0c;适用于Windows XP、Vista、7、8、10和11。 IrfanView寻求创建独特、新颖和有趣的功能&#xff0c;与其他一些图形查看器不同&#xff0c;它们的全部“创造力”是基于功能克隆、窃取想法和来自ACDSee和/或IrfanView的整…

mac vscode安装dart

1.安装Dart 1.安装下载Dart的工具 官网&#xff1a;https://brew.sh/ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"如果遇到 zsh: command not found: brew /bin/zsh -c "$(curl -fsSL https://gite…

Vue.js

文章目录1、vue核心基础1.1、安装1.2、Hello Vue1.3、模板语法1.4、数据绑定1.5、el与data的两种写法1.6、理解MVVM模型1.7、Object.defineProperty方法1.8、数据代理1.9、事件处理2.0、事件修饰符2.1、键盘事件2.2、计算属性2.3、监视属性2.4、绑定样式2.5、条件渲染2.6、列表…

《计算机网络》——第五章知识点

可靠 保证接收方进程从缓存区读出的字节流与发送方发出的字节流是完全一样的。 确认重传不分家&#xff0c;TCP的发送方在规定的时间内没有收到确认就要重传已发送的报文段。 流量控制:让发送方慢点&#xff0c;要让接收方来得及接收。 TCP利用滑动窗口机制实现流量控制。 …

PCB电磁兼容设计1

PCB电磁兼容设计 20221229 关键元件 无源器件 模拟、逻辑器件 磁性元件 开关元件 连接器元件 多数情况&#xff0c;电路基本元件满足EMC程度将决定设备满足EMC的程度。 实际元件不是“理想”的&#xff0c;本身可能是干扰源或敏感设备。 选择合适的电子元件的主要准则包…

try/catch捕获不到的异常

try/catch捕获不到的异常捕获不到的异常这种情况finally块会执行吗&#xff1f;spring中的Transactional事务还会会滚吗&#xff1f;该如何捕获这种异常&#xff1f;Throwable可以看做是异常世界中的Object&#xff0c;在Java中所有异常都有一个共同的祖先&#xff1a;Throwabl…