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

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

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

展开
收起
真的很搞笑 2023-04-18 08:11:44 286 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
    赞同 展开评论 打赏
滑动查看更多

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

相关产品

  • 云消息队列 MQ
  • 热门讨论

    热门文章

    相关电子书

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