RocketMQ介绍

RocketMQ · 官方网站 | RocketMQ

一.简介

RocketMQ 是一个分布式消息中间件,它包含四个主要组件:NameServer、Broker 、Producer和Consumer。

NameServer :(带头大哥

  1. NameServer 类似于轻量级的服务注册与发现中心,扮演着路由管理的角色。

  2. 它负责维护 Broker 注册的 Topic 信息、队列信息以及 Broker 的地址列表等路由数据。

  3. 生产者和消费者都需要连接 NameServer 获取路由信息,从而得知应该向哪个 Broker 发送或订阅消息。

Broker :(小弟-干活的)

  1. Broker 是 RocketMQ 的核心服务,它负责接收、存储和转发消息。

  2. Broker 分为主从节点,支持多副本机制,提供高可用和高并发的消息处理能力。

  3. Broker 会定时向 NameServer 注册自己的路由信息,并处理来自生产者的消息发布请求以及来自消费者的订阅和消息拉取请求。

Producer

  1. Producer 是消息的生产者,负责创建并发送消息到 Broker。

  2. Producer 会首先从 NameServer 获取 Topic 的路由信息,然后选择合适的 Broker 进行消息投递。

  3. 支持分布式集群部署和负载均衡,能够进行消息的批量发送、顺序发送、延时发送等多种消息发送模式。

Consumer

  1. Consumer 是消息的消费者,它订阅特定的 Topic 并从 Broker 拉取消息进行处理。

  2. Consumer 也会连接 NameServer 获取 Topic 的路由信息,进而找到并连接相关的 Broker 以拉取消息。

  3. Consumer 支持集群消费模式,包括广播消费、集群消费、有序消息消费等多种消费模式。

二.在 RocketMQ 中,Topic、Queue和Group 是三个非常重要的概念。

1. Topic(主题)

Topic 是消息发布和订阅的逻辑标识符(抽象-消息的归类),所有消息都必须发布到特定的 Topic 中,然后才能被订阅者消费。

  • 生产者(Producer)发布消息时,会选择一个特定的 Topic,所有的消息都会按照这个 Topic 进入对应的队列。

  • 消费者(Consumer)订阅的是一个或多个 Topic,表示他们希望消费这个 Topic 下的所有消息。

  • 多个生产者可以向同一个 Topic 发布消息,同样,多个消费者也可以订阅同一个 Topic。

2.Queue(消息队列)

一开始的时候一个Topic就对应一个queue,多好,一个是名字、一个是实现。可是用着用着就悲催了,为啥?消息操作太多了,全都怼在一个小队列上。为了提高效率,咋整??RocketMQ是这样做的,一个Topic绑定的是一组queue,这样每个queue分摊部分压力,性能就上去了。

  1. Queue 是 Topic 下物理层面的进一步划分,代表了消息的实际存储位置和消费顺序。

  2. 在 RocketMQ 中,每个 Topic 会被拆分成多个Queue,这些 Queue 是分布式的,可以存在于不同的 Broker 节点上。

  3. 生产者在发布消息时,消息会被均匀地分布到 Topic 关联的所有 Queue 上,这样可以实现水平扩展和负载均衡。

  4. 消费者在消费消息时,可以选择从 Topic 下的一个或多个Queue 中消费消息,以此实现并行消费和分布式处理,提高消息消费的效率和系统的吞吐量。

简而言之,Topic 是逻辑上的抽象,用于标识一类消息,而 Queue 是 Topic 在物理层面的具体实现,用于承载实际的消息,并决定了消息的存储和消费顺序。两者结合起来,使得RocketMQ能够高效地进行消息的发布和订阅。

3. Group(组)

Group 是生产者和消费者的一个逻辑标识符,每个生产者和消费者都必须属于某一个 Group。RocketMQ 使用 Group 来区分不同的消费者和生产者,以便进行负载均衡、容错和协作。同一 Group 中的消费者将共同 消费同一个 Topic 中的消息。在 RocketMQ 中,一个组可以有多个消费者实例,每个实例将独立消费一部分消息。这样设计的好处在于可以通过增加实例数来扩容和提高消费速度。

每个组都会拿到topic的所有消息,同一组内如果有多个消费者实例,那么它们平均拿取消息。

相关推荐
weisian15119 小时前
Java并发编程--51-详解RocketMQ:高可靠消息中间件的核心特性与生产实践
java·rocketmq·java-rocketmq·事务消息
qq_2975746720 小时前
RocketMQ 系列文章(高级篇第 4 篇):消息过滤、延迟消息与死信队列深度应用实战
rocketmq
开发者联盟league2 天前
在windows上安装和运行rocketmq
windows·rocketmq
冷小鱼3 天前
消息队列(MQ)技术全景科普:从选型到AI+未来
人工智能·kafka·rabbitmq·rocketmq·mq·pulsar
筠·4 天前
Docker Compose 部署 RocketMQ
docker·rocketmq·java-rocketmq
Rcnhtin7 天前
RocketMQ
java·linux·rocketmq
qq_297574678 天前
RocketMQ 系列文章(高级篇第 1 篇):高可用集群部署与运维监控实战指南
运维·rocketmq·java-rocketmq
成为大佬先秃头9 天前
解决RocketMQ-Dashboard开启登录认证后不生效
rocketmq
卷毛的技术笔记9 天前
从“拆东墙补西墙”到“最终一致”:分布式事务在Spring Boot/Cloud中的破局之道
java·spring boot·分布式·后端·spring cloud·面试·rocketmq
qq_2975746710 天前
RocketMQ 系列文章(进阶篇第 4 篇):死信队列与延迟消息实战指南
rocketmq