主要分为四部分:
发布消息的角色。Producer通过 MQ 的负载均衡模块选择相应的 Broker 集群队列进行消息投递,投递的过程支持快速失败和重试。
消息消费的角色。
NameServer(Name Server)是 RocketMQ 分布式架构中的一个关键组件。NameServer 的主要作用是管理整个 RocketMQ 集群的元数据信息,包括 T o p i c \color{Green}Topic Topic、 B r o k e r \color{Green}Broker Broker、 Q u e u e \color{Green}Queue Queue 等信息,最主要的是管理 Broker 和 路由信息。以下是 NameServer 的主要功能和作用:
在 RocketMQ 集群中,通常有多个 NameServer 以提供高可用性。生产者和消费者通过连接任意一个可用的 NameServer 来获取集群的路由信息。这种设计保证了系统的稳定性和可扩展性。
总体而言,NameServer 在 RocketMQ 中充当了集群元数据管理和路由分发的重要角色,确保消息在集群中的顺利传递和负载均衡。
在 Apache RocketMQ 中,代理服务器通常被称为 Broker。RocketMQ Broker 是整个消息队列系统中的核心组件,负责接收、存储和传递消息。扮演了消息的中转站和存储库的重要角色。以下是 RocketMQ Broker 的主要功能和特点:
RocketMQ 中的 Broker 有两个主要角色:Master(主节点) 和 Slave(从节点)。Master 负责处理写入消息的操作,而 Slave 负责从 Master 复制消息,以保持数据一致性。当 Master 节点发生故障时,系统可以自动或手动切换到 Slave 节点,提高系统的可用性。
在 Master-Slave 架构中,Broker 分为 Master 与 Slave。一个Master可以对应多个Slave,但是一个Slave只能对应一个Master。Master 与 Slave 的对应关系通过指定相同的BrokerName,不同的BrokerId 来定义,BrokerId为0表示Master,非0表示Slave。Master也可以部署多个。
每个 Broker 与 NameServer 集群中的所有节点建立长连接,定时注册 Topic 信息到所有 NameServer。
·
Producer 与 NameServer 集群中的其中一个节点建立长连接,定期从NameServer 获取Topic路由信息,并向提供 Topic 服务的 Master 建立长连接,且定时向 Master 发送心跳。Producer 完全无状态。
·
Consumer 与 NameServer 集群中的其中一个节点建立长连接,定期从 NameServer 获取 Topic 路由信息,并向提供 Topic 服务的 Master、Slave 建立长连接,且定时向 Master、Slave发送心跳。Consumer 既可以从 Master 订阅消息,也可以从 Slave 订阅消息。
持续更新中。。。