MQ的设置

RocketMQ 与 Kafka 核心配置对比

以下从生产者、消费者、Broker、分片(分区/队列)四个维度对比两者的核心配置差异,结合典型场景说明:


一、生产者配置

RocketMQ

  1. 发送模式
    • DefaultMQProducer:支持 同步发送(syncSend)异步发送(asyncSend)单向发送(sendOneWay),通过参数 sendLatencyFaultEnable 控制故障转移策略。
    • 重试机制:默认重试次数 retryTimesWhenSendFailed=2,可自定义超时时间 sendMsgTimeout=3000ms
  2. 消息压缩
    • 支持 gzipsnappy 等压缩算法,通过 compressMsgBodyOverHowmuch 设置压缩阈值(默认4KB)。

Kafka

  1. 批量发送
    • batch.size=16384 (默认16KB):控制单个批次大小。
    • linger.ms=0 :批次等待时间,设为0表示立即发送,增大可提升吞吐但增加延迟。
  2. 可靠性控制
    • acks=1(默认):Leader写入成功即返回;acks=all 需所有副本确认(更高可靠性但延迟增加)。

二、消费者配置

RocketMQ

  1. 消费模式
    • PushConsumer:长轮询模式,实时性高,通过 consumeThreadMin=20 和 consumeThreadMax=64 调节并发线程数。
    • PullConsumer:需手动拉取消息,灵活性高但复杂度高。
  2. 偏移量管理
    • 默认持久化到Broker,支持重置消费位点(按时间戳或偏移量)。

Kafka

  1. 消费组
    • group.id 定义消费组,同一组内消费者共享分区。
    • enable.auto.commit=true (默认自动提交偏移量),可设为 false 手动提交。
  2. 分区分配策略
    • partition.assignment.strategy 支持 Range(默认)、RoundRobin 等策略。

三、Broker配置

RocketMQ

  1. 存储机制
    • storePathCommitLog:CommitLog文件存储路径(默认 ~/store/commitlog),单个文件1GB。
    • flushDiskType=ASYNC_FLUSH(默认异步刷盘),高可靠性场景可设为 SYNC_FLUSH(同步刷盘)。
  2. 副本与高可用
    • 主从同步复制:brokerRole=SYNC_MASTER(同步复制),ASYNC_MASTER(异步复制)。
    • NameServer地址:通过 namesrvAddr 配置多个节点实现路由发现。

Kafka

  1. 日志存储
    • log.dirs :数据存储目录,支持多路径提升IO性能。
    • log.retention.hours=168 (默认保留7天),log.segment.bytes=1GB 控制日志分段大小。
  2. 副本同步
    • unclean.leader.election.enable=false (禁止非ISR副本成为Leader,保证数据一致性)。
    • num.replica.fetchers=1 控制副本同步线程数。

四、分片(分区/队列)设置

RocketMQ

  1. 队列(Queue)
    • 通过 setWriteQueueNums(8) 设置每个Topic的队列数(类似Kafka分区),队列数影响消费并行度。
    • 单个Broker默认支持约10万队列,但需根据磁盘IO和内存合理配置。

Kafka

  1. 分区(Partition)
    • 创建Topic时指定 num.partitions=3 (默认分区数),分区数直接影响最大消费并行度。
    • 单机分区过多(如超过100)可能导致文件句柄和负载过高。

五、选型与配置建议

  1. 高吞吐场景
    • Kafka:优先增加分区数,优化 batch.size 和 linger.ms 。
    • RocketMQ:启用异步刷盘,增大 sendMsgTimeout 避免超时。
  2. 金融级可靠性
    • RocketMQ:配置 SYNC_FLUSH + 同步复制(主从ACK)。
    • Kafka:设置 acks=all + min.insync.replicas=2 。
  3. 消费并行度
    • Kafka:分区数需≥消费者线程数。
    • RocketMQ:队列数决定并发上限,可通过 consumeThreadMax 调整线程池。

扩展阅读:更多配置细节可参考官方文档或中的源码解析。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值