当前位置: 首页 > news >正文

消息中间件的基础概念入门

目录

一、什么是消息中间件

1.1、简介

1.2、消息中间件的主要作用

解耦合

异步通信

负载均衡

可靠性与持久性

消息路由与调度

削峰

事务支持

监控与审计

跨平台和跨语言支持

二、常用消息中间件对比

2.1、 RabbitMQ

2.1.1、特点

2.1.2、适用场景

2.2、Apache Kafka

2.2.1、特点

2.2.2、适用场景

2.3、 ActiveMQ

2.3.1、特点

2.3.2、适用场景

2.4、 Redis(使用 Pub/Sub 功能)

2.4.1、特点

2.4.2、适用场景

2.5、 NATS

2.5.1、特点

2.5.2、适用场景


一、什么是消息中间件

1.1、简介

消息中间件也可以称消息队列,是指用高效可靠的消息传递机制进行与平台无关的数据交流,并基于数据通信来进行分布式系统的集成。通过提供消息传递和消息队列模型,可以在分布式环境下扩展进程的通信。

当下主流的消息中间件有RabbitMQ、Kafka、ActiveMQ、RocketMQ等。

1.2、消息中间件的主要作用

解耦合

消息中间件使得系统中的各个组件可以通过消息进行通信,而不需要直接相互依赖。这种解耦合使得系统的各个部分可以独立开发、部署和扩展,提高了系统的灵活性和可维护性。

异步通信

通过消息中间件,系统中的不同组件可以实现异步通信。当一个组件发送消息时,它不必等待接收方处理完毕,可以继续执行其他操作。这种异步机制提高了系统的响应性和并发处理能力。

负载均衡

消息中间件通常支持多消费者模型,允许多个消费者并发处理消息,从而实现负载均衡。这样可以有效利用系统资源,提高整体吞吐量。

可靠性与持久性

许多消息中间件提供消息持久化功能,确保即使系统故障或重启,消息也不会丢失。这对于关键业务场景尤为重要,例如金融系统和订单处理。

消息路由与调度

消息中间件能够根据各种规则(如主题、队列、消息类型等)对消息进行路由和调度,从而实现复杂的消息传递逻辑。这使得开发人员可以灵活地设计系统的消息传递流程。

削峰

消息队列中的常用场景,一般在秒杀或抢够活动中使用广泛。一般会因为流量过大,应用系统配置承载不了这股瞬间流量,导致系统直接挂掉,即传说中的“宕机”现象。为解决这个问题, 我们会将那股巨大的流量拒在系统的上层,即将其转移至 MQ 而不直接涌入我们的接口。

事务支持

一些消息中间件支持分布式事务,可以确保消息的发送和处理能够原子性地保证,这对于需要强一致性的业务场景非常重要。

监控与审计

消息中间件通常提供监控和管理工具,可以实时了解消息的状态、流量以及系统的健康状况。此外,通过记录消息,可以实现审计功能,帮助追踪和分析系统行为。

跨平台和跨语言支持

许多消息中间件支持多种协议和客户端库,使得不同平台和编程语言的应用程序能够方便地进行通信,增强了系统的互操作性。

二、常用消息中间件对比

2.1、 RabbitMQ

RabbitMQ 是一个开源的消息代理,基于 AMQP(高级消息队列协议)。

2.1.1、特点

  1.   支持多种协议(AMQP, MQTT, STOMP等)。
  2.   强大的消息路由功能。
  3.   支持事务和确认机制,保证消息传递的可靠性。
  4.   提供丰富的管理界面和监控功能。

2.1.2、适用场景

适用于需要复杂消息路由和高可用性的场景,如电商系统的订单处理

2.2Apache Kafka

Kafka 是一个分布式流平台,最初由 LinkedIn 开发,现为 Apache 的开源项目。

2.2.1、特点

  1.   高吞吐量,适用于大规模数据流处理。
  2.   基于发布/订阅模型,支持多消费者。
  3.   提供持久化和分区功能,保证高可用性。
  4.   支持实时数据处理,适合流式应用。

2.2.2、适用场景

适用于需要大规模数据处理和实时分析的场景,如日志收集、监控和流数据处理

2.3 ActiveMQ

ActiveMQ 是一款开源的消息代理,支持多种协议(如 JMS, AMQP)。

2.3.1、特点

  1.   简单易用,适合快速集成。
  2.   支持多种消息传递模式(点对点和发布/订阅)。
  3.   提供高可用性和集群功能。

2.3.2、适用场景

适用于企业内部系统集成和异步处理。

2.4 Redis(使用 Pub/Sub 功能)

Redis 是一个开源的内存数据结构存储,支持简单的消息发布/订阅功能。

2.4.1、特点

  1.   高性能,低延迟。
  2.   数据持久化选项。
  3.   简单易用的 API。

2.4.2、适用场景

适合低延迟的消息传递需求,如实时聊天应用。

2.5、 NATS

NATS 是一个轻量级的开源消息系统,专注于高性能和低延迟。

2.5.1、特点

  1.   简单的发布/订阅模型。
  2.   支持请求/响应模式。
  3.   高吞吐量和低内存占用。

2.5.2、适用场景

适合微服务架构中服务之间的通信。

特性

RabbitMQ

Kafka

ActiveMQ

Redis

Pulsar

NATS

数据模型

AMQP

发布/订阅

JMS

Pub/Sub

发布/订阅

发布/订阅

吞吐量

中等

中等

持久性

支持

支持

支持

可选

支持

可选

适用场景

复杂路由和高可用需求

实时数据处理

企业集成

低延迟需求

多租户和流处理

微服务通信

配置和管理

复杂

相对简单

简单

简单

复杂

简单

http://www.lryc.cn/news/521995.html

相关文章:

  • 基于Web的宠物医院看诊系统设计与实现(源码+定制+开发)在线预约平台、宠物病历管理、医生诊疗记录、宠物健康数据分析 宠物就诊预约、病历管理与健康分析
  • Excel数据叠加生成新DataFrame:操作指南与案例
  • Web 开发入门之旅:从静态页面到全栈应用的第一步
  • WebSocket实现分布式的不同方案对比
  • 基于注意力机制的端到端合成语音检测
  • MySQL NaviCat 安装及配置教程(Windows)【安装】
  • 微信小程序:播放音频
  • Ubuntu安装K8S
  • 独立同分布时,联合概率密度函数等于边缘概率密度函数乘积
  • 半导体数据分析: 玩转WM-811K Wafermap 数据集(三) AI 机器学习
  • 【.net core】【sqlsugar】时间查询示例
  • Kotlin 协程基础十 —— 协作、互斥锁与共享变量
  • Java中网络编程的学习
  • [计算机网络]一. 计算机网络概论第一部分
  • 【0393】Postgres内核 checkpointer process ③ 构建 WAL records 工作缓存区
  • 正则表达式基础知识及grep、sed、awk常用命令
  • redhat安装docker 24.0.7
  • 【excel】VBA简介(Visual Basic for Applications)
  • 【大厂面试AI算法题中的知识点】方向涉及:ML/DL/CV/NLP/大数据...本篇介绍为什么self-attention可以堆叠多层,这有什么作用?
  • NanoKVM简单开箱测评和拆解,让普通电脑实现BMC/IPMI远程管理功能
  • 【Idea】编译Spring源码 read timeout 问题
  • VSCode的配置与使用(C/C++)
  • SpringMVC (1)
  • 本地部署大模型—MiniCPM-V 2.0: 具备领先OCR和理解能力的高效端侧多模态大模型
  • 国产linux系统(银河麒麟,统信uos)使用 PageOffice 实现后台批量生成PDF文档
  • Python 扫描枪读取发票数据导入Excel
  • 电源自动测试系统中的ate定制化包含哪些内容?
  • 人工智能-机器学习之多分类分析(项目实战二-鸢尾花的多分类分析)
  • 多包单仓库(monorepo)实现形式
  • Java冒泡排序算法之:变种版