Apache kafka与ActiveMQ有什么区别?

Box*_*ert 34 activemq-classic apache-kafka

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

Chr*_*Lam 36

Kafka和ActiveMQ可能有一些重叠,但它们最初是为不同目的而设计的.因此,比较它们就像比较Apple和Orange.

卡夫卡

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

ActiveMQ的

ActiveMQ是一个通用消息代理,支持多种消息传递协议,如AMQP,STOMP,MQTT.它支持更复杂的消息路由模式以及企业集成模式.通常,它主要用于应用程序/服务之间的集成,尤其是在面向服务的体系结构中.

  • 首先想到的是比较苹果公司。用橙色 (3认同)

Mat*_*ich 12

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

在谈论"聚类"时,经常会有苹果与橘子的比较.ActiveMQ和其他企业代理集群发布消息和跟踪消费者订阅.Kafka集中发布并要求消费者跟踪订阅.似乎很小,但它有显着差异.

所有经纪人都有相同的背压问题 - Kafka可以做一个"懒惰的持久性",生产者不会等待经纪人同步到磁盘......这对很多用例来说都很好,但可能不是我ppatierno在他的幻灯片中提到了每个单一消息的场景.

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

  • 你能说为什么 Kafka 不是你想要的 I-care-about-every-single-message 场景吗?消息队列,您可以在其中跟踪您的进度,并且发送方保留它发送的消息的积压,以便接收方可以回滚并连接并再次请求旧消息,这非常可靠,不是吗?它获得了更好的吞吐量。像这样:http://www.cedanet.com.au/ceda/persistent-message-queue.php (2认同)

Kai*_*ner 6

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

您可以将Kafka用于“传统消息传递”,而不能将MQ用于Kafka特定的场景。

文章“ Apache Kafka与企业服务总线(ESB)—朋友,敌人还是朋友?https://www.confluent.io/blog/apache-kafka-vs-enterprise-service-bus-esb-friends-enemies-or-frenemies/)”讨论了为什么Kafka不具有竞争力,而是对集成和消息解决方案的补充(包括ActiveMQ)以及如何集成两者。


Rav*_*abu 6

Kafka体系结构与ActiveMQ不同。

在Kafka中,生产者将消息发布到主题,这是特定类型的消息流。消费者将通过提取数据来订阅经纪人的一个或多个主题。

主要区别:

  1. 卡夫卡制片人不等待经纪人的确认。如果代理可以像生产者一样快地处理消息,则总体吞吐量将很高。ActiveMQ必须维护每个消息的传递状态。

  2. Kafka具有更有效的存储格式。平均而言,每条消息在Kafka中的开销为9字节,而在ActiveMQ中为144字节。这意味着ActiveMQ使用的空间比Kafka多70%。

  3. Kafka是基于的消息传递系统,而ActiveMQ是基于的消息传递系统。发布者将向ActiveMQ中的所有使用者发送消息。消费者将在自己的时间在Kafka提取消息。

  4. 在Kafka中-使用者可以倒退到旧的偏移量并重新使用数据。当您解决某些问题并决定在解决问题后重播旧消息时,此功能很有用。

由于上述效率,Kafka吞吐量是ActiveMQ和RabbitMQ等普通消息传递系统的2倍至4倍。

可以在notes.stephenholiday.com上了解更多详细信息。

  • 3.这是不正确的——ActiveMQ消费者拉取消息 (7认同)
  • 2. ActiveMQ 不会多使用 70% 的磁盘空间——这显然是错误的。 (6认同)
  • 3.还是不正确。ActiveMQ是一个broker,生产者和消费者是分开的,和Kafka一样。在这方面,两者没有区别。 (6认同)
  • 2. 称其“更高效”具有误导性。ActiveMQ 使用标准格式的元数据(标头和属性)存储消息。Kafka 将其推送给应用程序进行定义。这是一个利益与权衡的交易。 (5认同)
  • 是的,我是说描述其测试场景的 Kafka 文档包含不一致和不准确的地方。我认为世界上最好的 Kafka 架构师的声明(他们看到每个 Kafka 代理的 55Mb/s - 75MB/s 的限制)支持了我的观点。我认为我们,技术人员,应该能够进行建设性的对话,并超越“kafka 规模更好”——我认为这是一种过于简单化的做法,最终会对业务造成损害。 (5认同)
  • 5. 具有误导性——增加 Kafka 复制会降低代理吞吐量,因为带宽和延迟不为零。这不是 Kafka 特有的问题——所有分布式数据系统都有同样的问题——增加复制会降低每个节点的吞吐量——生产者 25%(1x 数据)+ 75%(3x 数据)用于复制= 100% 可用吞吐量。生产者的 16.7%(1x 数据)+ 复制的 82.3%(5x 数据)= 100% 可用吞吐量。 (2认同)