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

  • 相关阅读:
    Spring Boot属性配置文件详解
    Spring Boot中使用@Scheduled创建定时任务
    Spring Boot中使用@Async实现异步调用
    Spring boot中使用log4j记录日志
    Spring Boot中对log4j进行多环境不同日志级别的控制
    Spring Boot中使用AOP统一处理Web请求日志
    在Windows下安装MongoDB
    MongoDB中的基础概念:Databases、Collections、Documents
    Spring Boot中使用log4j实现http请求日志入mongodb
    Spring Boot中的事务管理
  • 原文地址:https://www.cnblogs.com/taozi32/p/13626451.html
Copyright © 2020-2023  润新知