kafka 与 rocketmq

kafka 与 rocketmq
一、主从复制

服务端复制 异步复制 rocketMq不会丢消息 当出现故障时,该broker不再接收生产者消息,消费者自动切换到从节点消费 恢复后会继续同步数据到从节点 新版本使用 Dledger 的复制方式
kafka 多副本 ISR机制(ISR中维护的是与leader信息基本同步的副本) ack=all时会将leader中的消息同步到ISR列表所有节点,如果ISR列表为空 则会选择其中一个flower作为主
Kafka有一个保护策略,当一半以上的节点不可用时Kafka就会停止
kafka __consumer_offset topic对应的副本数 也可能引起可用性问题

二、消息存储

kafka:一个partition对应一个目录,该目录下有多个segment, segment使用最小offset命令,每个segment下有index文件和log文件

其中index文件为索引文件,使用稀疏索引,log为数据文件

 问题:为什么分为多个segmen?

文件过大影响读写性能

kafka性能存在问题:

当kafka分区过多时就会产生多个文件,从全局来看又变为了随机读写

rocketMq:

使用kafka的模式,但是日志统一记录在 commitLog中,每个分区下记录的时日志地址

三、运维成本

kafka 各个broker直接相互协调进行主从切换,运维成本相对较高

rocketMq 引入namespace 用于协调各个节点,运维成本较低,虽然索引也有多个文件,但是量较小,磁盘的刷新频率较低

https://cloud.tencent.com/developer/article/1421267

心有多大,天有多高,一起奋斗!!
原文地址:https://www.cnblogs.com/zhaolei1996/p/15509337.html