在本教程中,我们将从架构的角度介绍 Apache Camel 和 Apache Kafka 之间的主要区别。
一般来说,Apache Camel 和 Apache Kafka 之间的比较(部分)就像比较苹果和梨。事实上,Apache Camel 是一个完整的集成框架,而Apache Kafka 是一个分布式消息传递平台。因此,在高层次上,它们不会相互排斥。 Apache Kafka 确实可以很好地融入集成层,可以设计为 Camel Route。
以下图为例:
更合理的比较是将 Apache Camel 与 CloverDX 作为集成平台或 Apache Kafka 与 Artemis Active MQ 作为消息传递平台。
为了更好地理解 Apache Kafka 和 Apache Camel 之间的区别,让我们对这两种产品进行基本概述。
###骆驼概述
Apache Camel 是一个开源集成框架,针对不同系统之间的集成。 Camel 的核心是一个路由引擎,或者更准确地说是一个路由引擎构建器。它允许您定义自己的路由规则,决定从哪些来源接受消息,并确定如何处理这些消息并将其发送到其他目的地。
在其路由中,Camel 使用了一组组件,这些组件是企业集成模式 (EIP) 的实现。 EIP 用于解决使用不同集成策略(例如文件传输、共享数据库和异步消息传递。每个策略都可能需要路由、拆分和聚合消息。此外,还需要监控所应用的每个策略的正确结果。
以下是Camel Route的概述:
应用程序集成:Camel 旨在用于需要在不同协议和应用程序(例如文件、电子邮件、API)之间移动数据的每个场景由于其庞大的组件集(超过 200 个),您可以当您想在使用大多数已知协议的任何一个应用程序之间来回移动数据时,请使用 Apache Camel。 Camel 中的所有组件或多或少都以类似的方式工作。因此,一旦您了解了如何使用一个组件,您会发现使用其他组件会更容易。除了标准的文件、FTP、JMS 组件外,还有用于复杂应用程序的组件,例如 Facebook、Twitter、Salesforce 和 Workday。您还可以编写自己的自定义组件。
基于模式的开发:应用程序集成的许多常见用例——例如支持事务或转换——通常在计划和编写代码时会很复杂。但是 Camel 可以通过提供可以链接在您的 Route 中的组件来简化此过程。 Camel 为以下内容提供模式和功能:
这些需求在 Camel 中很容易实现,因为它将这些特性包含为一组模式,也称为企业集成模式 (EIP)。您可以提取这些 EIP 中的任何一个,并在您的代码中使用它们,而无需在每次需要这些功能时都编写自己的解决方案。
许多集成的高级架构:一旦你掌握了基本模式,你会发现在 Camel 中开发通用集成变得很容易。这显然是一个优势:您将能够通过重用模板等模式来相当快速地创建许多集成。在大型公司中,这可能是一个非常有吸引力的选择,它有助于选择一种开发团队共享和理解的方法。
处理数据,尤其是 Java 对象:由于 Camel 是一个 Java 框架,它特别擅长处理 Java 对象。因此,如果您正在使用可以反序列化为 Java 对象的文件格式(许多文件格式可以转换为 Java 对象,如 XML、JSON ......),那么 Camel 可以轻松处理它。
另一方面,Apache Kafka 是纯分布式消息传递,具有发布-订阅模式,可提供可伸缩性,并且可以处理大量数据。其主要特点如下:
这是 Apache Kafka 的架构图:
如您所见,Kafka 集群有五个主要组件:
以下是一些流行的(真实企业的真实示例)用例:
提交日志:很多时候系统没有日志,只是因为无法处理大数据量。 Kafka 可以管理大量日志
日志聚合: 日志分析是每个支持团队的关键方面。 Kafka 可以物理收集日志并去除文件位置等繁琐细节
消息: 系统通常是异构的:Kafka 是集成不同消息系统的完美解决方案,这要归功于它的插件。
流处理:使用 Kafka,可以收集并进一步丰富信息。这也称为流处理。
记录用户活动:记录用户活动可能是一项复杂的任务,其中数据量很大。 Kafka 是实时处理和监控大型数据集的完美用例。
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : http://www.masterspringboot.com/various/camel/apache-camel-vs-apache-kafka
内容来源于网络,如有侵权,请联系作者删除!