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

rocketmq5.0的controller模式下需要定义brokerId吗?

rocketmq5.0的controller模式下需要定义brokerId吗?

展开
收起
真的很搞笑 2023-04-18 08:11:44 260 0
6 条回答
写回答
取消 提交回答
  • 公众号:网络技术联盟站,InfoQ签约作者,阿里云社区签约作者,华为云 云享专家,BOSS直聘 创作王者,腾讯课堂创作领航员,博客+论坛:https://www.wljslmz.cn,工程师导航:https://www.wljslmz.com

    在 RocketMQ 5.0 版本中,使用 Controller 模式时需要定义 BrokerId,因为 Controller 启动的时候需要知道所有 Broker 的 ID,从而进行管理和配置。

    在 Controller 模式下,Broker 获取 ID 的方式是通过配置文件中的 brokerId。在启动 Broker 的时候,从配置文件中读取 brokerId,然后将 ID 发送到 NameServer,NameServer 将 Broker 的 ID 和 IP 地址信息映射在一起,以便 Controller 所有 Broker ID 信息的管理。

    因此,在 Controller 模式下,强烈建议为每个 Broker 指定唯一的 brokerId,以确保 Controller 可以正确地管理和配置 Broker。

    2023-04-30 12:54:59
    赞同 展开评论 打赏
  • 不需要,自动分配的。可以详细说下。或者用getSyncStateSet命令看下,此回答整理自钉群“群2-Apache RocketMQ 中国开发者钉钉群”

    2023-04-19 07:59:05
    赞同 展开评论 打赏
  • Broker的选主发起主要有三种情况:

    通过admin命令人为主动发起重新选主

    命令发起具体参照 electMaster 命令(运维命令由笔者开发完成),详细使用参照命令的说明

    RocketMQ集群刚搭建Broker启动注册Broker到DLedger Controller,DLedger Controller还没有选主,然后触发选主操作。

    RocketMQ Broker Master下线或者因为其他情况不能正常提供服务与DLedger Controller服务不能正常连接或者心跳失效,会触发DLedger Controller选主Broker

    2023-04-18 09:54:12
    赞同 展开评论 打赏
  • 需要,5.0引入controller之后,所有的broker都需要在配置文件中定义唯一的brokerid

    2023-04-18 08:47:10
    赞同 展开评论 打赏
  • 十年摸盘键,代码未曾试。 今日码示君,谁有上云事。

    RocketMQ5.0已经发布,在RocketMQ5.0新增了一个新的高可用模式 DLedger Controller 模式。

    DLedger Controller模式的核心思想:将其作为一个选主组件,并且是一个 可选择、松耦合 的组件。当部署 DLedger Controller 组件后,原本 Master-Slave 部署模式下 Broker 组就拥有 Failover 能力。

    Broker搭配Controller DLedger模式可以实现高可用以及主备自动切换。 Broker的部署和之前的版本相同只是增加了一些与Controller DLedger相关配置:

    enableControllerMode:Broker controller 模式的总开关,只有该值为 true,自动主从切换模式才会打开。默认为 false。 controllerAddr:controller 的地址,多个 controller 中间用分号隔开。例如​​controllerAddr = 127.0.0.1:9877;127.0.0.1:9878;127.0.0.1:9879​​ syncBrokerMetadataPeriod:向 controller 同步 Broker 副本信息的时间间隔。默认 5000(5s)。

    checkSyncStateSetPeriod:检查 SyncStateSet 的时间间隔,检查 SyncStateSet 可能会 shrink SyncState。默认5000(5s)。 syncControllerMetadataPeriod:同步 controller 元数据的时间间隔,主要是获取 active controller 的地址。默认10000(10s)。 haMaxTimeSlaveNotCatchup:表示 Slave 没有跟上 Master 的最大时间间隔,若在 SyncStateSet 中的 slave 超过该时间间隔会将其从 SyncStateSet 移除。默认为 15000(15s)。

    storePathEpochFile:存储 epoch 文件的位置。epoch 文件非常重要,不可以随意删除。默认在 store 目录下。 allAckInSyncStateSet:若该值为 true,则一条消息需要复制到 SyncStateSet 中的每一个副本才会向客户端返回成功,可以保证消息不丢失。默认为 false。 syncFromLastFile:若 slave 是空盘启动,是否从最后一个文件进行复制。默认为 false。 asyncLearner:若该值为 true,则该副本不会进入 SyncStateSet,也就是不会被选举成 Master,而是一直作为一个 learner 副本进行异步复制。默认为false。

    inSyncReplicas:需保持同步的副本组数量,默认为1,allAckInSyncStateSet=true 时该参数无效。 minInSyncReplicas:最小需保持同步的副本组数量,若 SyncStateSet 中副本个数小于 minInSyncReplicas 则 putMessage 直接返回 PutMessageStatus.IN_SYNC_REPLICAS_NOT_ENOUGH,默认为1。

    若需要保证Controller具备容错能力,Controller部署需要三副本及以上(遵循Raft的多数派协议) Controller部署配置文件中配置参数​​controllerDLegerPeers​​ 中的IP地址配置成其他节点能够访问的IP,在多机器部署的时候尤为重要。例子仅供参考需要根据实际情况进行修改调整。 要想实现消息不丢失需要Broker进行相对应的配置进行配合使用。

    2023-04-18 08:47:10
    赞同 展开评论 打赏
  • rocketmq5.0的controller模式下需要定义brokerId。

    2023-04-18 08:43:14
    赞同 展开评论 打赏
滑动查看更多

多个子产品线联合打造金融级高可用消息服务以及对物联网的原生支持,覆盖多行业。

相关产品

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

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