RocketMQ与Kafka的区别
RocketMQ和Kafka区别
1)适⽤场景
Kafka适合⽇志处理 RocketMQ适合业务处理 结论:平⼿,根据具体业务定夺2)性能
kafka单机写⼊TPS号称在百万条/秒; RocketMQ⼤约在10万条/秒;
结论:追求性能的话,kafka单机性能更⾼3)可靠性
RocketMQ⽀持异步/同步刷盘;异步/同步 Replication; Kafka使⽤异步刷盘⽅式,异步Replication;
结论:RocketMQ所⽀持的同步⽅式提升了数据的可靠性。4)实时性
均⽀持pull长轮询,RocketMQ消息实时性更好 结论:RocketMQ胜出。5)⽀持的队列数
Kafka单机超过个队列/分区,消息发送性能降低严重; 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不是特别适合