阿帕奇骆驼与阿帕奇卡夫卡[重复]

Posted

技术标签:

【中文标题】阿帕奇骆驼与阿帕奇卡夫卡[重复]【英文标题】:Apache Camel vs Apache Kafka [duplicate] 【发布时间】:2018-07-09 06:01:16 【问题描述】:

据我所知,Apache Kafka 是异步消息传递平台,而 Apache Camel 是实现企业集成模式的平台。

那么,Apache Camel 和 Apache Kafka 的实际区别是什么?我们计划用 Apache Camel 来实现这个系统,这相对容易,但我们的客户想要 Apache Kafka 而不是理性的。

选择 Apache Kafka 来实现消息队列功能的优势是什么,它也可以使用 Apache Camel 来实现?我担心卡夫卡只会为项目引入不必要的开销。我们是在比较苹果和橙子吗?

我们需要简单的 API 来设置和使用集群消息队列。我们最初的计划是使用 Camel 在集群 JMS 或 ActiveMQ 队列上消费/生产。卡夫卡如何让这项任务变得更容易?无论哪种情况,应用程序本身都将在 WebLogic 服务器上运行。

消息将是点对点类型,其中有多个相同服务的实例在运行,但只有一个实例应根据负载平衡策略处理消息并发出结果。消息队列也是集群的,因此服务实例或队列实例的故障都不是单点故障。

【问题讨论】:

【参考方案1】:

骆驼和卡夫卡是完全不同的东西。在很多用例中,camel只是作为kafka/activemq/...的客户端使用。

Kafka和activemq是相似的,但也有不同的东西,参考What is the difference between Apache kafka vs ActiveMQ。 Kafka 具有更高的吞吐量,并且数据始终在磁盘上,因此比 activemq 更可靠。

Kafka通常用作实时数据流,一般情况下activemq主要用于应用程序之间的集成,书上是这么说的。但在大多数现实世界的情况下,kafka 和 activemq 可以很容易地相互替换。

【讨论】:

【参考方案2】:

这两者很难比较。它们不涵盖相同的工作领域,但存在一些系统,您可以在其中一个替换另一个。

很快。

Kafka 是具有流式处理消息能力的消息传递平台Apache Kafka。

Camel 是 ETL 框架,它可以从“任何”(参见 Camel 的端点列表)输入点转换消息/事件/数据,并将其发送到“任何”输出Apache Camel - Enterprise Integration Patterns。

你可以在没有 Kafka 的情况下使用 Camel,反之亦然。但当然也有可能成功地同时使用两者。

案例 1. 您处理邮件并存储在 PostgreSQL 数据库中。卡夫卡没用 这里。 案例 2。您处理来自 ActiveMQ 的消息并将它们发送到 卡夫卡。你可以同时使用。

【讨论】:

因此,Kafka 是否适合通信,其中许多服务实例侦听消息,但只有一个应该处理它(即在收到消息后将其从队列中删除)。所以基本上这是与集群服务和队列的点对点通信方式。 不止一个消费者可以处理它。这取决于设置。有两种选择:Kafka 将充当负载均衡器(一条消息发送给多个消费者之一),Kafka 将充当复制器(一条消息从一组定义的消费者发送给所有消费者)。而且它不是点对点的,因为 Kafka 需要代理。 骆驼不是 ETL。是EIP实现 @ACV 你如何定义 ETL(提取、转换和加载),你说 Camel 不是 ETL。顺便说一句,我曾说过 Camel 是 ETL FRAMEWORK 而不是 ETL 本身。 @SewerynHabdank-Wojewódzki Camel 作为 EIP 实现可以用于 ETL,但 ETL 是一个非常广泛的术语。我不认为 Camel 被宣传为 ETL 工具。

以上是关于阿帕奇骆驼与阿帕奇卡夫卡[重复]的主要内容,如果未能解决你的问题,请参考以下文章

RabbitMQ 一二事 - 简单队列使用

阿帕奇骆驼和跺脚

JMS 队列拆分。企业集成。阿帕奇骆驼

有没有办法使用千分尺在telegraf中获取kafka流和骆驼指标

Apache Kafka 和 Camel 之间的区别(代理与集成)

卡夫卡与风暴:卡夫卡和风暴的明智比较