ActiveMQ RabbitMQ Kafka 对比

1 篇文章 0 订阅
1 篇文章 0 订阅

1)TPS(事务数量/s)比较

Kafka 最高RabbitMq次之,ActiveMq 最差

2)吞吐量比较

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

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

3)架构方面

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 数据;无消息确认机制。

4)可用性方面

RabbitMq 支持miror 的queue,主queue失效,miror queue 接管

Kafka 的broker 支持主备模式

ActiveMq 也支持主备模式

5)负载均衡方面

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

RabbitMq 的负载均很需要单独的loadbalance进行支持。

综合比较:

ActiveMq:历史悠久的开源项目,已经在很多产品中得到了应用,实现了JMS1.1的规范,可以和spring-jms轻松整合,实现了多种协议,不够轻巧,支持持久化到数据库,对队列数较多的的情况支持不好。

RabbitMq: 它比Kafka 成熟,支持AMQP事务处理,在可靠性上,RabbitMq 超过Kafka ,性能方面超过ActiveMq

Kafka: 设计的初衷就是日志处理的,不支持AMQP事务处理,可以看作是一个日志系统,针对想很强,所以她并没有一个具备成熟MQ应该具有的特性,Kafka 的性能(吞吐量,TPS)比RabbitMq 要强,如果用来做大数据的快速处理时比较有优势的。

 

转载自:https://blog.csdn.net/vtopqx/article/details/76382934

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: ActiveMQRabbitMQKafka都是消息队列(Message Queue)系统。 ActiveMQ是一个开源的、基于Java的消息队列系统,支持多种通信协议,如AMQP、STOMP、MQTT等,可以用于异步通信、解耦、负载均衡等场景。 RabbitMQ也是一个开源的、基于Erlang语言的消息队列系统,支持AMQP协议,具有高可用性、可靠性和可扩展性,适用于分布式系统、微服务架构等场景。 Kafka是一个分布式的、基于Scala语言的消息队列系统,主要用于大规模数据处理和分析,支持高吞吐量、低延迟、可靠性等特性,适用于流处理、日志收集、实时分析等场景。 ### 回答2: ActiveMQRabbitMQKafka 都是流行的消息队列系统,它们都可以用于实现消息传递、解耦合和异步通信等场景。但是,它们之间在设计理念、使用场景和架构模型等方面存在不同。 ActiveMQ 是一个基于 JMS(Java Message Service)标准的消息中间件,使用开源的 Apache ActiveMQ 作为消息服务提供商。它提供了多种传输协议和消息协议(如 AMQP、MQTT 和 STOMP 等),支持广泛的编程语言和平台。ActiveMQ 提供了完整的 JMS 消息模型,包括点对点和发布-订阅模式,并提供了事务和持久化等高级功能。ActiveMQ 是一个比较成熟和稳定的消息系统,适合于大规模企业级应用,但是在高并发场景下,可靠性和性能可能会受到影响。 RabbitMQ 是一个使用 Erlang 语言编写的 AMQP (Advanced Message Queuing Protocol) 消息中间件,其架构采用分布式节点的方式,能够实现高可用和高可靠性。RabbitMQ 支持多种消息协议,并提供了丰富的插件和 API,支持多种编程语言。RabbitMQ 支持点对点和发布-订阅模式,提供了事务和持久化等高级功能,支持复杂的路由策略和负载均衡。RabbitMQ 的设计哲学是“居于中间,支持多个端点”,即将中间件作为独立的透明服务器,将业务系统与消息的传输和处理相分离,从而实现解耦合和高度灵活性。 Kafka 是一个分布式的、高吞吐量的消息中间件,其特点是支持高并发和高可靠性,主要用于实时流数据的处理和分发。Kafka 的设计思想是“纯日志”,即将消息作为日志进行处理,其架构采用“发布-订阅”模式,支持多个消费者消费同一份消息。Kafka 支持水平扩展,可以通过增加分区和副本来提高性能和可用性,同时还提供了消息缓存和消息存储等高级功能。Kafka 适合于处理大规模数据流和业务处理,但是其功能相对较简单,对开发人员要求较高。 综上所述,ActiveMQRabbitMQKafka 都具有各自独特的优势和适用场景。选择一个消息队列系统时,需要根据具体的业务需求和性能要求进行考虑,在可靠性、性能、灵活性和易用性等方面进行综合评估和比较。同时,也需要注意消息协议的兼容性和编程语言的支持等因素。 ### 回答3: ActivemqRabbitmqKafka都是消息中间件,用于实现分布式系统中不同组件之间的消息传递。 Activemq是基于Java的开源消息中间件,它使用JMS(Java Messaging Service)API来实现消息传递,支持多种传输协议,例如TCP、SSL、NIO以及JMS等。Activemq具有高度可靠性和可伸缩性以及易于管理的特点,可以支持多种消息模型,包括点对点、发布/订阅和持久订阅。 与Activemq相比,Rabbitmq是一个更轻量级的开源消息代理,由Erlang编写,使用AMQP(Advanced Message Queuing Protocol)进行消息传递。它提供了多种消息路由机制,包括直接、主题和分发,可以灵活地处理不同类型的消息传递场景。此外,Rabbitmq还具有高度可靠性、可扩展性和易于管理的特点。 与ActivemqRabbitmq相比,Kafka则更适合大数据处理环境。Kafka是一个分布式的流式平台,可以快速处理海量数据,通过分布式的存储和处理机制,使得数据具有高可靠性和高性能,可以应对海量数据的实时处理。Kafka使用基于发布/订阅模式的消息传递机制,并支持多种消息路由机制,包括分区、复制和故障转移等。 总的来说,这三种消息中间件都具有不同的特点和适用场景,选择哪种消息中间件应该基于实际需求进行评估和选择。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值