Kafka和Mq对比

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

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

而kafka原本设计的初衷是日志统计分析,现在基于大数据的背景下也可以做运营数据的分析统计,而redis的主要场景是内存数据库,作为消息

队列来说可靠性太差,而且速度太依赖网络IO,在服务器本机上的速度较快,且容易出现数据堆积的问题,在比较轻量的场合下能够适用。

RabbitMQ,遵循AMQP协议,由内在高并发的erlanng语言开发,用在实时的对可靠性要求比较高的消息传递上。
kafka是Linkedin于2010年12月份开源的消息发布订阅系统,它主要用于处理活跃的流式数据,大数据量的数据处理上。
1)在架构模型方面,
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数据;无消息确认机制。
2)在吞吐量,
kafka具有高的吞吐量,内部采用消息的批量处理,zero-copy机制,数据的存储和获取是本地磁盘顺序批量操作,具有O(1)的复杂度,消息处理的效率很高。
rabbitMQ在吞吐量方面稍逊于kafka,他们的出发点不一样,rabbitMQ支持对消息的可靠的传递,支持事务,不支持批量的操作;基于存储的可靠性的要求存储可以采用内存或者硬盘。
3)在可用性方面,
rabbitMQ支持miror的queue,主queue失效,miror queue接管。
kafka的broker支持主备模式。
4)在集群负载均衡方面,
kafka采用zookeeper对集群中的broker、consumer进行管理,可以注册topic到zookeeper上;通过zookeeper的协调机制,producer保存对应topic的broker信息,可以随机或者轮询发送到broker上;并且producer可以基于语义指定分片,消息发送到broker的某分片上。
rabbitMQ的负载均衡需要单独的loadbalancer进行支持。

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

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

(0)
上一篇 2026年3月19日 上午7:03
下一篇 2026年3月19日 上午7:04


相关推荐

  • ubuntu开机进入tty1_基于linux内核自制系统

    ubuntu开机进入tty1_基于linux内核自制系统这个系统很迷你。完全符合变态操作控的习惯,如果你很喜欢洁净的系统,那么它就是你的玩具~可以试试自己的能力,是否能够在这系统里DIY一个属于你自己的LINUX。。。转载于:https://www.cnblogs.com/xiaoCon/archive/2013/03/31/2991221.html…

    2022年8月12日
    12
  • 在pycharm中调试celery、gunicorn

    在pycharm中调试celery、gunicorncelery 启动代码 celery worker py 如下 fromappimpor appfromflask celeryimport create app celery Celery app if name main celery start 运行配置点击 PyCharm 中工具栏的 EditConfigur 新增名为 celery 的 Configuratio

    2026年3月27日
    2
  • noip2014普及组复赛题解_noip2019普及组复赛试题

    noip2014普及组复赛题解_noip2019普及组复赛试题NOIP2012普及组解题报告            byRtPYH——————————————————————————————————————前言:作者是一个蒟蒻,如果对本文有建议,欢迎提出!鄙人将虚心接受。

    2022年8月22日
    10
  • Spark源码系列(七)Spark on yarn具体实现

    Spark源码系列(七)Spark on yarn具体实现

    2021年8月30日
    59
  • loadrunner性能测试步骤_loadrunner可以做接口测试吗

    loadrunner性能测试步骤_loadrunner可以做接口测试吗LoadRunner性能测试教程1.工具介绍及下载2.操作步骤2.1.VuGen脚本编写及运行2.2.Controller场景运行2.3.Alalysis分析1.工具介绍及下载LoadRunner,是一种预测系统行为和性能的负载测试工具。通过模拟上千万用户实施并发负载及实时性能监测的方式来确认和查找问题,LoadRunner能够对整个企业架构进行测试。企业使用LoadRunner能最大限度地缩短测试时间,优化性能和加速应用系统的发布周期。LoadRunner可适用于各种体系架构的自动负载测试,能预测系统

    2022年10月10日
    56
  • python基础几大数据类型

    python基础几大数据类型数据类型1.数据类型之整型int大白话理解:整数int作用:记录人的年龄班级人数…定义:都是整数age=18直接写整数就是整型2.数据类型之浮点型float大白话理解:

    2022年7月5日
    22

发表回复

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

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