你知道rocketmq和kadka之间的区别是什么吗?他们之间究竟有什么样的不同之处呢?对这方面有疑惑的小伙伴可以一起通过下文来了解一下哦。
Consumer差异:
1、消费确认
2、事务消息
kafka不支持分布式事务消息,rocketmq指定一定程度上的事务消息,阿里云的rocketmq支持可靠的事务消息;
3、消息过滤
rocketmq的queue和kafka的partition对应。
但是,rocketmq的topic还可以更加的细分,可对消息加tag,订阅时可指定特定的tag来对消息做更进一步的过滤,或者,向服务器上传一段Java代码,能够对消息做任意形式的过滤,甚至可以做Message Body的过滤拆分。
4、消费并行度
kafka的消费者默认单线程,rocketmq消费者分有序消费模式和并发消费模式。
5、有序消息
rocketmq支持全局有序和局部有序,kafka也支持有序消息,可是,假如,有一个broker宕机了,就不能在保证有序。
Broker差异:
1、数据写入
kafka每个partition独占一个目录,每个partition均有各自的数据文件.log,rocketmq每个topic共享一个数据文件commitlog;
kafka的数据写入熟读比rocketmq高出一个量级,kafka的分区数量是有限制的;
2、服务治理
kafka用zookeeper来做服务发现和治理,rocketmq用自定义的nameServer做服务发现和治理;
3、主从差异
kafka的master/slave是基于partition维度,rocketmq是基于broker维度;
kafka的master/slave可以切换,rocketmq不可以却换;
4、消息查询
rocketmq支持消息查询是,除了queue的offset外,还支持自定义key,rocketmq对offset和key都做了索引,均独立的索引文件;
5、刷盘
rocketmq支持同步刷盘;
Producer差异
1、发送响应
kafka的发送ack支持三种设置,消息存进memory buffer就返回、等到leader收到消息返回、等到leader和isr的follower都收到消息返回、当然kafka都是异步刷盘,rocketmq都需要等broker的响应确认,有同步刷盘,异步刷盘,同步双写,异步双写等策略,相比于kafka多了一个同步刷盘;
2、发送方式
kafka默认使用异步发送的形式,rocketmq可选择使用同步或者异步发送;
rocketmq和kadka的区别你都搞清楚了吗?这些都是很基础的知识哦,希望对你的java学习之路会有所帮助,更多相关内容,可以继续关注奇Q工具网的java架构师栏目来了解和学习哦。
推荐阅读: