开发者社区 > 云原生 > 云消息队列 > 正文

rocketmq的controller是通过什么确定有几主几从的 比如我有三个副本(想建立一主两从)

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

展开
收起
真的很搞笑 2023-04-10 23:29:03 181 0
2 条回答
写回答
取消 提交回答
  • broker指定相同的brokerName,此回答整理自钉群“群2-Apache RocketMQ 中国开发者钉钉群”

    2023-04-12 10:40:46
    赞同 展开评论 打赏
  • 坚持这件事孤独又漫长。

    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 的要求。

    2023-04-11 08:56:07
    赞同 展开评论 打赏

涵盖 RocketMQ、Kafka、RabbitMQ、MQTT、轻量消息队列(原MNS) 的消息队列产品体系,全系产品 Serverless 化。RocketMQ 一站式学习:https://rocketmq.io/

相关产品

  • 云消息队列 MQ
  • 相关电子书

    更多
    RocketMQ Client-GO 介绍 立即下载
    RocketMQ Prometheus Exporter 打造定制化 DevOps 平台 立即下载
    基于 RocketMQ Prometheus Exporter 打造定制化 DevOps 平台 立即下载