rocketmq的controller是通过什么确定有几主几从的 比如我有三个副本(想建立一主两从)[阿里云消息队列MQ]

rocketmq的controller是通过什么确定有几主几从的 比如我有三个副本(想建立一主两从) 它怎么区分 而不是给我建成三个主?

「点点赞赏,手留余香」

    还没有人赞赏,快来当第一个赞赏的人吧!
=====这是一个广告位,招租中,联系qq 78315851====
1 条回复 A 作者 M 管理员
  1. broker指定相同的brokerName,此回答整理自钉群“群2-Apache RocketMQ 中国开发者钉钉群”

  2. RocketMQ 的控制器(Controller)采用 Raft 算法保证高可用,负责管理 Broker、 Topic、Queue 等的元数据信息,并且控制消息的路由、负载均衡等。在 RocketMQ 中,每个 Broker 都会向控制器注册自己的信息,并且定时向控制器上报自己的状态信息,包括 Broker 中存储的消息数量、存储大小、最近一次的心跳时间等。

    • 在 RocketMQ 中,每个 Topic 都会有一个或多个 Queue,每个 Queue 都会有一个主节点和多个从节点。当一个新的 Topic 被创建时,控制器会根据 Broker 集群的状态信息和策略规则来为每个 Queue 分配主节点和从节点。具体来说,控制器会先根据副本数 N 和 Broker 数量 K 来计算出每个队列应该有的主节点数 Q,然后根据负载均衡策略等因素在 K 个 Broker 中为每个主节点分配一个 Broker,然后为每个主节点分配 Q-1 个从节点,并在 Broker 中创建对应的主从关系。如果由于 Broker 数量不足或其他原因导致无法满足 Q>1 的情况,控制器会将 Queue 的副本数调整为满足最小副本数要求。

    如果你想建立一主两从的 Queue,可以采用以下步骤:

    1. 确保你的 Broker 集群中至少有 3 个 Broker。
    2. 创建一个副本数为 3 的 Topic,并指定一个 Queue 数量。
    3. 根据控制器为每个 Queue 分配主从节点的策略,等待创建成功。

    如果一切正常,每个 Queue 都会被分配一个主节点和两个从节点,满足每个队列应该有的主节点数为 1 的要求。