zoukankan      html  css  js  c++  java
  • 推送消息为什么使用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语言编写。

  • 相关阅读:
    多叉树
    PowerDesigner设置集锦(2)
    Delphi应用程序在命令行下带参数执行返回命令行提示的问题
    不允许在 '*******' 上使用扩展属性,或对象不存在
    仓库管理系统开发完成
    动态创建Frame窗体(根据类名,除T以外的字母)
    Access中的常用TSQL
    批量删除同类文件(带通配符)
    判断Access数据库中的表或查询是否存在的SQL
    序列化FastReport,重要提示少走弯路
  • 原文地址:https://www.cnblogs.com/ivy-xu/p/12609055.html
Copyright © 2011-2022 走看看