RocketMQ和Kafka区别
1)适用场景
Kafka适合日志处理
RocketMQ适合业务处理
结论:平手,根据具体业务定夺
2)性能
kafka单机写入TPS号称在百万条/秒;
RocketMQ大约在10万条/秒;
结论:追求性能的话,kafka单机性能更高
3)可靠性
RocketMQ支持异步/同步刷盘;异步/同步 Replication;
Kafka使用异步刷盘方式,异步Replication;
结论:RocketMQ所支持的同步方式提升了数据的可靠性。
4)实时性
均支持pull长轮询,RocketMQ消息实时性更好
结论:RocketMQ胜出。
5)支持的队列数
Kafka单机超过64个队列/分区,消息发送性能降低严重;
RocketMQ单机支持最高5万个队列,性能稳定;
结论:长远来看,RocketMQ胜出,这也是适合业务处理的原因之一
6)消息顺序性
Kafka某些配置下,支持消息顺序,但是一台Broker宕机后,就会产生消息乱序;
RocketMQ支持严格的消息顺序,在顺序消费场景下,一台Broker宕机后,发送消息会失败,但是不会乱序。
结论:RocketMQ胜出
7)消费失败重试机制
Kafka消费失败不支持重试
RocketMQ消费失败支持定时重试,每次重试间隔时间顺延
8)定时/延时消息
Kafka不支持定时消息;
RocketMQ支持定时消息
9)分布式事务消息
Kafka不支持分布式事务消息
RocketMQ支持分布式事务消息
10)消息查询机制
Kafka不支持消息查询
RocketMQ支持根据Message Id查询消息,也支持根据消息内容查询消息
11)消息回溯
Kafka理论上可以按照Offset来回溯消息
RocketMQ支持按照时间来回溯消息,精度毫秒,例如从一天之前的某分某秒开始重新消费消息
RocketMQ诞生的场景
1)Kafka的业务应用场景主要定位于日志传输;对于复杂业务支持不够。
2)RocketMQ具有数据可靠性、数据实时性、消息队列的个数更多等特点;更符合业务严谨的项目。
3)Kafka针对的是海量数据的场景,但是对数据的正确性要求不是特别严格。但是像关于交易等对数据的正确性要求特别高的,Kafka不是特别适合