网站首页 > 博客文章 正文
大家好,我是mikechen。
RocketMQ是非常重要的消息中间件,是高薪的必备技能,需要重点掌握,下面我就全面来详解RocketMQ架构@mikechen
本篇已收于mikechen原创超30万字《阿里架构师进阶专题合集》里面。
RocketMQ
RocketMQ是一个布式消息中间件,是由阿里巴巴开发和维护的,是一个类似于Apache Kafka消息中间件。
RocketMQ支持消息发送/和消费的顺序保证,并且RocketMQ具有出色的吞吐量性能,能够处理每秒数几十万条消息。
RocketMQ,适用于各种规模的企业级应用场景,比如:实时数据处理、日志采集、消息通知等。
RocketMQ架构
RocketMQ是基于分布式架构设计的,可以水平扩展以应对高负载,和大规模数据处理需求。
整体架构如下:
主要会涉及到:Broker、NameServer、和Producer/Consumer等角色的分布式部署,下面我会分别详解@mikechen
NameServer
NameServer 是 RocketMQ 的一个重要组件,用于管理、和维护整个消息系统的元数据信息,包括 :Broker 的地址、主题(topic) 的路由信息等。
整体设计,如下图所示:
主要解决:
- 注册Broker信息:当Broker启动时,会向NameServer注册自己的信息,包括:主题(topic)和队列(queue)的路由信息。
- 提供路由查询服务:Producer和Consumer在发送和消费消息时,需要知道消息应该发送到哪个Broker,NameServer提供了这种路由查询服务。
- 故障处理:当 Broker 出现故障或宕机时,NameServer 会及时发现并移除故障的 Broker,以防止 Producer 、或 Consumer 发送或接收到无效的 Broker。
Producer
Producer是消息的发送者,负责:将消息发送到RocketMQ的Broker,如下图所示:
主要分为,如下步骤:
1、创建消息
Producer ,首先创建消息,消息可以是任意形式的数据,比如:文本、JSON、二进制数据等。
在创建消息时,Producer 需要指定消息所属的主题(topic),主题是消息的逻辑分类,用于标识消息的类型、或者用途。
2、消息发送
发送消息时,Producer 需要指定消息的目标主题,RocketMQ 系统会根据主题的路由信息,将消息发送到相应的 Broker 节点。
这里会涉及到多种方式:
- 同步发送:Producer 发送消息后会等待 Broker 的确认,确保消息被成功发送到 Broker。
- 异步发送:Producer 发送消息后,不会等待 Broker 的确认,而是立即返回,异步发送适用于对消息传输延迟要求不高的场景。
- 单向发送:Producer 发送消息后不会等待任何确认,直接返回,这种方式下,Producer 不关心消息是否被成功发送到 Broker。
Broker
在 RocketMQ 中,Broker 是消息存储和处理节点,负责存储和管理消息,如下图所示:
1、消息存储
Broker 负责将 Producer 发送的消息持久化存储,确保消息不会丢失。
RocketMQ 使用文件存储的方式来存储消息数据,消息数据被追加写入到文件中,并定期刷写到磁盘上持久化存储。
2、消除传输
Broker 接收 Producer 发送的消息,并将消息传输给相应的 Consumer 进行消费。
当 Consumer 订阅了某个主题时,Broker 会将该主题下的消息发送给 Consumer,以实现消息的传输。
3、存储配置
RocketMQ Broker 的配置包括许多方面,如:存储配置、网络配置..等,如下图所示:
- brokerName:Broker 的名称,用于唯一标识一个 Broker 节点;
- namesrvAddr:NameServer 的地址,Broker 会向 NameServer 注册自己的信息;
- brokerIP1:Broker 的 IP 地址,可以通过IP1、IP2...等来区分;
- listenPort:Broker 监听的端口号;
- brokerId:Broker 的唯一标识符,通常与 brokerName 相同。
Consumer
Consumer 是 RocketMQ 中的消息消费者,负责从 Broker 中拉取消息并进行处理,如下图所示:
Consumer 需要通过订阅的方式,告知 RocketMQ 它对哪些主题感兴趣,一旦订阅成功,Consumer 就可以从 Broker 中拉取消息进行消费。
Consumer 定期向 Broker 发送拉取消息的请求,Broker 根据消费者组的消费进度、和消息队列的分配情况,将消息推送给 Consumer。
本篇已收于mikechen原创超30万字《阿里架构师进阶专题合集》里面。
猜你喜欢
- 2024-09-17 MQ 技术产品井喷,今天来详聊一下腾讯开源消息中间件 TubeMQ | 原力计划
- 2024-09-17 消息队列专栏(三)RocketMQ和Kafka
- 2024-09-17 全网最通俗易懂的Kafka入门(kafka 入门)
- 2024-09-17 Kafka、RabbitMQ、RocketMQ等中间件对比—消息发送性能和区别
- 2024-09-17 17个方面对比Kafka、RabbitMQ、RocketMQActiveMQ分布式消息队列
- 2024-09-17 Kafka与RocketMq文件存储机制对比
- 2024-09-17 理解Kafka和其他MQ对比(kafka与其他mq的区别)
- 2024-09-17 滴滴出行基于RocketMQ构建企业级消息队列服务的实践
- 2024-09-17 7张图,带你5分钟入门RocketMQ(rocketmq简介)
- 2024-09-17 大数据相关,Kafka与MQ的区别(kafka跟rabbitmq的区别)
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- powershellfor (55)
- messagesource (56)
- aspose.pdf破解版 (56)
- promise.race (63)
- 2019cad序列号和密钥激活码 (62)
- window.performance (66)
- qt删除文件夹 (72)
- mysqlcaching_sha2_password (64)
- ubuntu升级gcc (58)
- nacos启动失败 (64)
- ssh-add (70)
- jwt漏洞 (58)
- macos14下载 (58)
- yarnnode (62)
- abstractqueuedsynchronizer (64)
- source~/.bashrc没有那个文件或目录 (65)
- springboot整合activiti工作流 (70)
- jmeter插件下载 (61)
- 抓包分析 (60)
- idea创建mavenweb项目 (65)
- vue回到顶部 (57)
- qcombobox样式表 (68)
- vue数组concat (56)
- tomcatundertow (58)
- pastemac (61)
本文暂时没有评论,来添加一个吧(●'◡'●)