业界对于消息的传递有多种方案和产品,本文就比较有代表性的两个MQ(rabbitMQ,kafka)进行阐述和做简单的对比,
在应用场景方面,
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进行支持。
相关推荐
ActiveMQ RabbitMQ RokcetMQ Kafka实战 消息队列中间件视频教程
ActiveMQ RabbitMQ RokcetMQ Kafka实战 消息队列中间件视频教程
RabbitMQ和Kafka详细笔记以及示例代码
在Spring Cloud框架中,整合RabbitMQ或Kafka作为消息驱动是常见的微服务间通信方式。这两种技术都是流行的消息中间件,用于实现异步处理、解耦和扩展性。下面将详细阐述它们在Spring Cloud中的应用。 首先,...
本项目“camel-archetype-rabbitmq-kafka-connector”专注于扩展Camel对RabbitMQ和Kafka之间通信的支持,通过Kafka连接器实现地图配置的无缝传递,极大地简化了两个消息中间件之间的交互。 首先,我们要理解...
比较MQ产品之RabbitMQ与Kafka.zip
2. **特性和优缺点**:对比分析ActiveMQ、RabbitMQ和Kafka各自的特性,以及在不同场景下的适用性。 3. **部署与配置**:如何设置和配置这些服务,包括集群搭建、性能优化等。 4. **API使用**:如何使用各种编程语言...
本面试专题系列涵盖了三个关键的分布式消息中间件:ActiveMQ、RabbitMQ和Kafka,这些都是Java开发者和技术面试者需要深入了解的重要知识点。下面我们将逐一探讨这三个组件的核心概念、使用场景以及在实际开发中的...
本项目采用了rabbitmq与kafka两种消息队列,将任务调度从原始的业务微服务中有效分离,降低业务代码的耦合度。所有调度任务均由调度中心微服务发起。使原有业务真正实现分布式多节点运行。本资源包含了Github下载...
MQ对比
面试中,候选人往往会被问及关于消息中间件的知识,特别是ActiveMQ、RabbitMQ和Kafka这三大主流消息队列系统的理解与应用。本系列专题将深入探讨这三个工具,以帮助你更好地准备面试。 1. **ActiveMQ**: - ...
连接器用于读取RabbitMQ队列或主题。 配置 名称 类型 重要性 默认值 验证器 文献资料 kafka.topic 细绳 高的 Kafka主题,用于将消息写入。 兔子队列 列表 高的 兔子队列 rabbitmq.host 细绳 高的 本地主机 要...
RabbitMQ 选型和对比 1.从社区活跃度 按照目前网络上的资料,RabbitMQ 、activeM 、ZeroMQ 三者中,综合来看,RabbitMQ 是首选。 2.持久化消息比较 ZeroMq 不支持,ActiveMq 和RabbitMq 都支持。持久化消息主要是...
MQ对比:Kafka VS Rocketmq VS Rabbitmq 超详细 ,值的收藏,参考资料
- **主从与分布式**: ActivemQ和RabbitMQ仅支持主从模式,而Kafka和RocketMQ支持真正的分布式消息系统。 - **持久化消息**: ZeroMQ不支持消息持久化;ActivemQ和RabbitMQ支持消息持久化,这对于确保消息的可靠性至关...
高性能架构面试题系列:Nginx+ActiveMQ+RabbitMQ+Kafka 请解释Nginx如何处理HTTP请求。 Nginx使用反应器模式。主事件循环等待操作系统发出准备事件的信号,这样数据就可以从套接字读取,在该实例中读取到缓冲区并...
在这个示例中,我们将深入探讨RabbitMQ的基本用法以及它与Kafka的简单对比。 【描述】:“本代码是之前上传的rabbitMQ文档相对应的简单示例。”这表明提供的代码是基于先前发布的文档编写的,目的是帮助读者通过...
RabbitMQ至Kafka桥 主要思想是从提供的交换中读取消息,并将其发送给 。 在Kafka不可用的情况下,应用程序使用中间永久性存储来保留读取的消息。 服务是用Go语言编写的,并且可以使用1.14及更高版本的go编译器...