rocketmq和kadka区别是什么?区别详细介绍

KLQ 2020-06-23 10:10:19 java常见问答 8705

你知道rocketmq和kadka之间的区别是什么吗?他们之间究竟有什么样的不同之处呢?对这方面有疑惑的小伙伴可以一起通过下文来了解一下哦。

Consumer差异:

1、消费确认

rocketmq仅支持手动确认,kafka支持定时确认;

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架构师栏目来了解和学习哦。

推荐阅读:

rocketmq面试题及答案,java面试常见问题详解

rocketmq事务消息原理有哪些?rocketmq是什么?

Kafka和mq的区别是什么?和rabbitmq有什么区别?