Kafka一般适用日志传输,而RocketMQ适用非日志的可靠性传输(日志传输也可以)。接下来我们将讨论它俩区别,你们就知道哪种情况用RocketMQ。其实,RocketMQ是阿里开发的,大家都知道,阿里的淘宝非常强,所以这个是对网上商城非常方便。
数据可靠性
- RocketMQ支持异步实时刷盘,同步刷盘,同步Replication,异步Replication
- Kafka只支持异步刷盘,异步Replication
RocketMQ的同步刷盘在单机可靠性比Kafka高,不会因为操作系统崩溃,导致数据丢失。同步Replication比异步Replication可靠,数据完全无单点。Kafka在主机宕机,备机自动切换,由于异步Replication导致数据丢失。如果主机重启,与现在的主机产生数据冲突。
性能
- Kafka的TPS高,不稳定
KafkaTPS高因为producer将多个消息合并,批量发向broker。这里会有一些问题,缓存过多消息,gc是个问题;producer发送消息到broker,向业务返回成功,但是producer宕机,导致消息丢失;producer分布式系统,且每台机器是多线程发送,单个producer产生的数据量有限;发送消息单一功能,缓存可由上层业务完成。
单机支持的队列数
- Kafka单机超过64个队列,发送消息响应时间随着队列越多越长
- RocketMQ单机支持最高5万个队列,Load不会明显变化
实时性
- Kafka短轮询,实时性取决轮询间隔时间
- RocketMQ长轮询,消息投递延时通常在几毫秒
失败重试
- Kafka消费失败不支持重试
- RocketMQ消费失败支持定时重试,每次重试间隔时间顺延
消息顺序
- Kafka消息顺序,broker宕机,产生消息乱序
- RocketMQ消息顺序,broker宕机,不会乱序
定时消息
- Kafka不支持
- RocketMQ支持,指定毫秒级别的延时时间
分布式式事物
- Kafka不支持
- RocketMQ支持
消息查询
- Kafka不支持
- RocketMQ支持根据message id和消息内容查询
消息回溯
- Kafka理论支持
- RocketMQ按照时间支持,精确到毫秒
消费并行度
- Kafka消费并行度与分区数一致
- RocketMQ顺序消费和Kafka一样,乱序取决consumer的线程数
消息轨迹
- Kafka不支持
- RocketMQ支持
broker消息过滤
- Kafka不支持
- RocketMQ根据message tag或者任意形式过滤
其它方面,比如Kafka消息堆积比RocketMQ强,更成熟,而RocketMQ java语言编写。