推送消息为什么使用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语言编写。

猜你喜欢

转载自www.cnblogs.com/ivy-xu/p/12609055.html