Kafka与MQ的区别

Kafka与MQ的区别作为消息队列来说 企业中选择 mq 的还是多数 因为像 Rabbit Rocket 等 mq 中间件都属于很成熟的产品 性能一般但可靠性较强 而 kafka 原本设计的初衷是日志统计分析 现在基于大数据的背景下也可以做运营数据的分析统计 而 redis 的主要场景是内存数据库 作为消息队列来说可靠性太差 而且速度太依赖网络 IO 在服务器本机上的速度较快 且容易出现数据堆积的问题 在比较轻量的场合下能够适用 R

作为消息队列来说,企业中选择mq的还是多数,因为像Rabbit,Rocket等mq中间件都属于很成熟的产品,性能一般但可靠性较强,

而kafka原本设计的初衷是日志统计分析,现在基于大数据的背景下也可以做运营数据的分析统计,而redis的主要场景是内存数据库,作为消息队列来说可靠性太差,而且速度太依赖网络IO,在服务器本机上的速度较快,且容易出现数据堆积的问题,在比较轻量的场合下能够适用。

RabbitMQ,遵循AMQP协议,由内在高并发的erlanng语言开发,用在实时的对可靠性要求比较高的消息传递上。

kafka是Linkedin于2010年12月份开源的消息发布订阅系统,它主要用于处理活跃的流式数据,大数据量的数据处理上。

在架构模型方面

RabbitMQ遵循AMQP协议,RabbitMQ的broker由Exchange,Binding,queue组成,其中exchange和binding组成了消息的路由键;客户端Producer通过连接channel和server进行通信,Consumer从queue获取消息进行消费(长连接,queue有消息会推送到consumer端,consumer循环从输入流读取数据)。rabbitMQ以broker为中心;有消息的确认机制。

kafka遵从一般的MQ结构,producer,broker,consumer,以consumer为中心,消息的消费信息保存的客户端consumer上,consumer根据消费的点,从broker上批量pull数据;无消息确认机制。

简单明了,Kafka与MQ的区别

 

在吞吐量

rabbitMQ在吞吐量方面稍逊于kafka,他们的出发点不一样,rabbitMQ支持对消息的可靠的传递,支持事务,不支持批量的操作;基于存储的可靠性的要求存储可以采用内存或者硬盘。

kafka具有高的吞吐量,内部采用消息的批量处理,zero-copy机制,数据的存储和获取是本地磁盘顺序批量操作,具有O(1)的复杂度,消息处理的效率很高。

在可用性方面

rabbitMQ支持miror的queue,主queue失效,miror queue接管。

kafka的broker支持主备模式。

在集群负载均衡方面

rabbitMQ的负载均衡需要单独的loadbalancer进行支持。

kafka采用zookeeper对集群中的broker、consumer进行管理,可以注册topic到zookeeper上;通过zookeeper的协调机制,producer保存对应topic的broker信息,可以随机或者轮询发送到broker上;并且producer可以基于语义指定分片,消息发送到broker的某分片上。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/202971.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月19日 下午10:53
下一篇 2026年3月19日 下午10:54


相关推荐

  • 事务隔离级别与锁的对应关系_速度级别H和速度级别S

    事务隔离级别与锁的对应关系_速度级别H和速度级别S隔离级别org.springframework.transaction.annotation.Isolationpublic enum Isolation { DEFAULT(-1), READ_UNCOMMITTED(1), READ_COMMITTED(2), REPEATABLE_READ(4), SERIALIZABLE(8);}DEFAULT :这是默认值,表示使用底层数据库的默认隔离级别。对大部分数据库而言,通常这值就是: READ_CO..

    2022年8月8日
    9
  • 下列那个类有获取PropertyDescriptor实例的方法_java反射怎么理解

    下列那个类有获取PropertyDescriptor实例的方法_java反射怎么理解JAVA中反射机制(JavaBean的内省与BeanUtils库)内省(Introspector)是Java语言对JavaBean类属性、事件的一种缺省处理方法。  JavaBean是一种特殊的类,主要用于传递数据信息,这种类中的方法主要用于访问私有的字段,且方法名符合某种命名规则。如果在两个模块之间传递信息,可以将信息封装进JavaBean中,这种对象称为“值对象”(ValueOb…

    2026年4月20日
    4
  • 对象数据库与关系数据库利弊谈

    对象数据库与关系数据库利弊谈在 20 世纪 60 年代后期引入的面向对象技术引起了一场革命 到 20 世纪 80 年代后 面向对象的技术已经成为了行业的主流 其原因多种多样 面向对象不仅简化了界面的开发 而且也提供了一种更加灵活 简单数据处理方法 这种方法从根本上改变了应用程序的构建方法 不再像关系型数据库一样用死板的二维表格来表示数据 对象技术使用类对数据进行描述 一个对象是一个类的实例 就像一颗特定的橡树是橡树类的实例一样 对

    2026年3月18日
    2
  • Xshell学习–菜鸟篇

    Xshell学习–菜鸟篇

    2021年9月25日
    40
  • 即梦AI换脸神器:手把手教你玩转换脸术,普通人也能轻松搞定!

    即梦AI换脸神器:手把手教你玩转换脸术,普通人也能轻松搞定!

    2026年3月12日
    2
  • 对数函数、指数函数、幂函数的区别和运算法则

    对数函数、指数函数、幂函数的区别和运算法则对数的定义 一般地 函数 y log a gt 0 且 a 1 x 0 叫做对数函数 也就是说以幂 真数 为自变量 指数为因变量 底数为常量的函数 叫对数函数 指数的定义 一般地 y 函数 a 为常数且以 a gt 0 a 1 叫做指数函数 的函数定义域是 R 幂函数的定义 一般地 y a 为有理数 的函数 即以底数为自变量 幂为因变量 指数为常数的函数称为幂函数 对数

    2026年3月18日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号