何时使用 Apache kafka 而不是 ActiveMQ [关闭]

问题描述 投票:0回答:3

我正在研究Apache Kafka。我想知道哪个更好:KafkaActiveMQ。这两种技术的主要区别是什么? 我想在 Spring MVC 中实现Kafka

apache-kafka activemq
3个回答
82
投票

Kafka 和 ActiveMQ 可能有一些重叠,但它们最初是为不同的目的而设计的。所以比较它们就像比较苹果和橙子一样。

卡夫卡

Kafka 是一个分布式流媒体平台,具有很好的横向扩展能力。它允许应用程序处理和重新处理磁盘上的流数据。由于它的高吞吐量,它通常用于实时数据流。

ActiveMQ

ActiveMQ 是一个通用的消息代理,它支持多种消息传递协议,例如 AMQP、STOMP、MQTT。它支持更复杂的消息路由模式以及Enterprise Integration Patterns。一般来说,它主要用于应用程序/服务之间的集成,特别是在面向服务的架构中。


26
投票

我每周都会听到这个问题......虽然 ActiveMQ(通常像 IBM MQ 或 JMS)用于传统消息传递,但 Apache Kafka 用作流媒体平台(消息传递 + 分布式存储 + 数据处理)。两者都是为不同的用例构建的。

你可以使用 Kafka 来做“传统消息传递”,但是不能使用 MQ 来做 Kafka 特定的场景。

文章“Apache Kafka vs. Enterprise Service Bus (ESB) - Friends, Enemies, or Frenemies? (https://www.confluent.io/blog/apache-kafka-vs-enterprise-service-bus- esb-friends-enemies-or-frenemies/)”讨论了为什么 Kafka 不是竞争性的而是对集成和消息传递解决方案(包括 ActiveMQ)的补充,以及如何集成两者。


21
投票

我认为在讨论使用哪些代理(以及何时出现 Kafka)时应该注意的一件事是经常引用的 Kafka 基准测试 显示了任何现代分布式计算机的上限。今天的代理都具有大致相同的总容量(以 MB/s 为单位)。与其他代理相比,Kafka 在处理小消息(10-1024 字节)方面做得非常好,但仍然限制在 ~75 Mb/s 左右(每个代理)。

在谈论“集群”时,经常会有苹果与橘子的比较。 ActiveMQ 和其他企业代理对消息发布和消费者订阅跟踪进行集群。 Kafka 集群发布并要求消费者跟踪订阅。看起来很小,但它有很大的不同。

所有代理都有相同的背压问题——卡夫卡可以做一个“惰性持久化”,生产者不会等待代理同步到磁盘。这对很多用例都有好处,但可能不是我关心 ppatierno 在他的幻灯片放映中提到的每条消息场景。

Kafka 非常适合横向扩展,例如小消息的大数据处理。 ActiveMQ 更适合经常被称为企业消息传递的用例类别(这只是一个术语,并不意味着 Kafka 对企业不利)——交易数据(尽管 Kafka 正在添加这个).. kiosk .. 零售商店.. 存储和转发.. dmz 遍历.. 数据中心到数据中心的发布.. 等等

© www.soinside.com 2019 - 2024. All rights reserved.