RocketMQ: Broker 使用指南

Broker 配置参数

  • 获取 Broker 的默认配置 $ sh mqbroker -m

  • Broker 启劢时,如何加载配置

    sh 复制代码
    ### 第一步生成 Broker 默认配置模版
    sh mqbroker -m > broker.p
    ### 第二步修改配置文件, broker.p
    ### 第三步加载修改过的配置文件
    nohup sh mqbroker -c broker.p
  • Broker 运行过程中,动态改变 Broker 的配置,注意,并非所有配置项都支持动态变更

    conf 复制代码
    ### 修改地址为 192.168.1.100:10911 的 Broker 消息保存时间为 24 小时
    sh mqadmin updateBrokerConfig -b 192.168.1.100:10911 -k fileReservedTime -v 24
字段名 默认值 说明
listenPort 10911 Broker 对外服务的监听端口
namesrvAddr null Name Server 地址
brokerIP1 本机 IP 本机 IP 地址,默认系统自动识别,但是某些多网卡机器会存在识别错误的情况,这种情况下可以人工配置
brokerName 本机主机名
brokerClusterName DefaultCluster Broker 所属哪个集群
brokerId 1 BrokerId,必须是大等于 0 的整数,0 表示 Master,>0 表示 Slave,一个 Master 可以挂多个 Slave,Master 与 Slave 通过 BrokerName 来配对
autoCreateTopicEnable TRUE 是否允许 Broker 自动创建 Topic,建议线下开启,线上关闭
autoCreateSubscriptionGroup TRUE 是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭
rejectTransactionMessage FALSE 是否拒绝事务消息接入
fetchNamesrvAddrByAddressServer FALSE 是否从web服务器获取Name Server 地址,针对大规模的Broker 集群建议使用这种方式
storePathCommitLog $HOME/store/commitlog commitLog 存储路径
storePathConsumeQueue $HOME/store/consumequeue 消费队列存储路径
storePathIndex $HOME/store/index 消息索引存储路径
storeCheckpoint $HOME/store/checkpoint checkpoint 文件存储路径
abortFile $HOME/store/abort abort 文件存储路径
deleteWhen 4 删除文件时间点,默认凌晨 4 点
fileReservedTime 48 文件保留时间,默认 48 小时
maxTransferBytesOnMessageInMemory 262144 单次 Pull 消息(内存)传输的最大字节数
maxTransferCountOnMessageInMemory 32 单次 Pull 消息(内存)传输的最大条数
maxTransferBytesOnMessageInDisk 65536 单次 Pull 消息(磁盘)传输的最大字节数
maxTransferCountOnMessageInDisk 8 单次 Pull 消息(磁盘)传输的 最大条数
messageIndexEnable TRUE 是否开启消息索引功能
messageIndexSafe FALSE 是否提供安全的消息索引机制,索引保证不丢
haMasterAddress 在 Slave 上直接设置 Master 地址,默认从 Name Server 上,自动获取,也可以手工强制配置
brokerRole ASYNC_MASTER Broker 的角色 - ASYNC_MASTER 异步复制 Master - SYNC_MASTER 同步双写 Master - SLAVE
flushDiskType ASYNC_FLUSH 刷盘方式 - ASYNC_FLUSH 异步刷盘 - SYNC_FLUSH 同步刷盘
cleanFileForciblyEnable TRUE 磁盘满、且无过期文件情况下,TRUE 表示强制删除文件,优先保证服务可用,FALSE 标记服务不可用,文件不删除

Broker 集群搭建

推荐的几种 Broker 集群部署方式,这里的 Slave 不可写,但可读,类似于 Mysql 主备方式

1 )单个 Master

  • 这种方式风险较大,一旦 Broker 重启或者宕机时,会导致整个服务不可用,不建议线上环境使用

2 ) 多 Master 模式

  • 一个集群无 Slave,全是 Master,例如 2 个 Master 戒者 3 个 Master

  • 优点:配置简单,单个 Master 宕机戒重启维护对应用无影响,在磁盘配置为 RAID10 时,即使机器宕机不可恢复情况下,由于 RAID10 磁盘非常可靠,消息也不会丢(异步刷盘丢失少量消息,同步刷盘一条不丢),性能最高

  • 缺点:单台机器宕机期间,返台机器上未被消费的消息在机器恢复之前不可订阅,消息实时性会受到影响

    sh 复制代码
    ### 先启劢 Name Server,例如机器 IP 为:192.168.1.1:9876
    nohup sh mqnamesrv &
    ### 在机器 A,启劢第一个 Master
    nohup sh mqbroker -n 192.168.1.1:9876 -c $ROCKETMQ_HOME/conf/2m-noslave/broker-a.properties &
    ### 在机器 B,启动第二个 Master
    nohup sh mqbroker -n 192.168.1.1:9876 -c $ROCKETMQ_HOME/conf/2m-noslave/broker-b.properties &

3 ) 多 Master 多 Slave 模式,异步复制

  • 每个 Master 配置一个 Slave,有多对 Master-Slave,HA 采用异步复制方式,主备有短暂消息延迟,毫秒级。

  • 优点:即使磁盘损坏,消息丢失的非常少,且消息实时性不会受影响,因为 Master 宕机后,消费者仍然可以从 Slave 消费,此过程对应用透明。不需要人工干预。性能同多 Master 模式几乎一样。

  • 缺点:Master 宕机,磁盘损坏情况,会丢失少量消息

    sh 复制代码
    ### 先启动 Name Server,例如机器 IP 为:192.168.1.1:9876
    nohup sh mqnamesrv &
    ### 在机器 A,启动第一个 Master
    nohup sh mqbroker -n 192.168.1.1:9876 -c $ROCKETMQ_HOME/conf/2m-2s-async/broker-a.properties &
    ### 在机器 B,启动第二个 Master
    nohup sh mqbroker -n 192.168.1.1:9876 -c $ROCKETMQ_HOME/conf/2m-2s-async/broker-b.properties &
    ### 在机器 C,启动第一个 Slave
    nohup sh mqbroker -n 192.168.1.1:9876 -c $ROCKETMQ_HOME/conf/2m-2s-async/broker-a-s.properties &
    ### 在机器 D,启动第二个 Slave
    nohup sh mqbroker -n 192.168.1.1:9876 -c $ROCKETMQ_HOME/conf/2m-2s-async/broker-b-s.properties &

4 )多 Master 多 Slave 模式,同步双写

  • 每个 Master 配置一个 Slave,有多对 Master-Slave,HA 采用同步双写方式,主备都写成功,向应用返回成功

  • 优点:数据不服务都无单点,Master 宕机情况下,消息无延迟,服务可用性不数据可用性都非常高

  • 缺点:性能比异步复制模式略低,大约低 10%左右,发送单个消息的 RT 会略高。目前主宕机后,备机不能自动切换为主机,后续会支持自动切换功能

    sh 复制代码
    ### 先启动 Name Server,例如机器 IP 为:192.168.1.1:9876
    nohup sh mqnamesrv &
    ### 在机器 A,启动第一个 Master
    nohup sh mqbroker -n 192.168.1.1:9876 -c $ROCKETMQ_HOME/conf/2m-2s-sync/broker-a.properties &
    ### 在机器 B,启动第二个 Master
    nohup sh mqbroker -n 192.168.1.1:9876 -c $ROCKETMQ_HOME/conf/2m-2s-sync/broker-b.properties &
    ### 在机器 C,启动第一个 Slave
    nohup sh mqbroker -n 192.168.1.1:9876 -c $ROCKETMQ_HOME/conf/2m-2s-sync/broker-a-s.properties &
    ### 在机器 D,启动第二个 Slave
    nohup sh mqbroker -n 192.168.1.1:9876 -c $ROCKETMQ_HOME/conf/2m-2s-sync/broker-b-s.properties &
  • 以上 Broker 与 Slave 配对是通过指定相同的 brokerName 参数来配对,Master 的 BrokerId 必须是 0,Slave 的 BrokerId 必须是大于 0 的数。另外一个 Master 下面可以挂载多个 Slave,同一 Master 下的多个 Slave 通过指定不同的 BrokerId 来区分。

  • $ROCKETMQ_HOST 指的 RocketMQ 安装目录,需要用户自己设置此环境变量。

Broker 重启对客户端的影响

  • Broker 重启可能会导致正在发往这台机器的的消息发送失败,RocketMQ 提供了一种优雅关闭 Broker 的方法,通过执行以下命令会清除 Broker 的写权限,过 40s 后,所有客户端都会更新 Broker 路由信息,此时再关闭 Broker 就不会发生发送消息失败的情况,因为所有消息都发往了其他 Broker

  • sh mqadmin wipeWritePerm -b brokerName -n namesrvAddr

相关推荐
风行無痕40 分钟前
Ubuntu Linux系统配置账号无密码sudo
linux·服务器·ubuntu
驱动小百科1 小时前
WiFi出现感叹号上不了网怎么办 轻松恢复网络
网络·智能路由器·wifi出现感叹号怎么解决·wifi无法上网·电脑wifi
好多知识都想学1 小时前
协议路由与路由协议
网络·智能路由器
SZ1701102312 小时前
中继器的作用
服务器·网络·智能路由器
chenxy022 小时前
如何快速分享服务器上的文件
运维·服务器
重启就好2 小时前
【Ansible】模块详解
linux·服务器·ansible
Huazzi.3 小时前
Ubuntu 22虚拟机【网络故障】快速解决指南
linux·网络·学习·ubuntu·bash·编程
熙曦Sakura3 小时前
【Linux网络】HTTP
linux·网络·http
毒果3 小时前
网络安全:账号密码与诈骗防范
网络·安全·web安全
八股文领域大手子3 小时前
SSL/TLS 证书与数字签名:构建互联网信任的详解
网络·网络协议·ssl