推送消息为什么使用RocketMQ,而不使用Kafka?
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语言编写。
                    
                
                
            
        
浙公网安备 33010602011771号