【问题标题】:Apache Camel vs Apache Nifi阿帕奇骆驼与阿帕奇尼菲
【发布时间】:2021-01-08 07:48:08
【问题描述】:

我使用 Apache camel 已经很长时间了,发现它是满足各种系统集成相关业务需求的绝佳解决方案。但几年前,我遇到了 Apache Nifi 解决方案。 google了一下,发现Nifi虽然可以作为ETL工具,但实际上是用于流处理的。

在我看来,“哪个更好”是一个非常糟糕的问题,因为这取决于不同的事情。但如果有人能描述更多关于两者之间的基本比较以及显而易见的问题,什么时候使用什么,那就太好了。

这将有助于根据我当前的要求做出决定,这在我的情况下将是一个不错的选择,或者我应该同时使用它们。

【问题讨论】:

    标签: apache-camel apache-nifi


    【解决方案1】:

    最大和最明显的区别是 NiFi 是一种无代码方法 - 99% 的 NiFi 用户永远不会看到一行代码。它是一个基于 Web 的 GUI,具有用于构建管道的拖放界面。

    NiFi 可以执行 ETL,可以用于批处理用例,但它面向数据流。这不仅仅是将数据从 A 移动到 B,它还可以进行复杂(和高性能)的转换、丰富和规范化。它开箱即用,支持许多特定源和端点(例如 Kafka、Elastic、HDFS、S3、Postgres、Mongo 等)以及通用源和端点(例如 TCP、HTTP、IMAP 等)。

    NiFi 不仅仅是关于消息 - 它可以原生地处理各种不同的格式,还可以用于二进制数据和大文件(例如移动多 GB 视频文件)。

    NiFi 被部署为一个独立的应用程序——它不是一个框架、api 或库,也不是你集成到其他东西中的东西。它是一个完全独立的、已实现的应用程序,开箱即用,功能齐全,无需额外开发。虽然它可以根据需要通过自定义开发进行扩展。

    NiFi 是本机集群的 - 它希望(但不是必需)部署在多个主机上,这些主机作为一个集群协同工作,以实现性能、可用​​性和冗余。

    因此,这两种工具的使用方式截然不同 - 希望这有助于突出一些关键差异

    【讨论】:

    • 感谢您的回答。我对 Nifi 不太了解,但根据答案,Nifi 似乎可以做任何事情。那么对于哪些场景,人们应该更喜欢 Camel,而不是 Nifi?
    • Camel 是一个框架,您可以将其集成到您自己的应用程序中,以处理与外部面向消息的应用程序的集成 - 因此,如果您正在构建自己的、独立的、专门处理消息的应用程序,那么骆驼很适合。 NiFi 通常部署为更广泛架构的一部分。
    【解决方案2】:

    NiFi 和 Camel 之间确实存在一些功能重叠,但它们的设计非常不同:

    • Apache NiFi 是一个主要集中使用的数据处理和集成平台。它采用低代码方法,更喜欢配置。
    • Apache Camel 是一个集成框架,主要用于分布式解决方案。解决方案是用 Java 编码的。示例解决方案包括适配器、流、API、连接器、云函数等。

    它们可以很好地结合使用。尤其是在使用 Apache ActiveMQ 或 Apache Kafka 等消息代理时。

    一个例子: 一个 java 应用程序使用 Camel 进行了增强,以便它可以向 Kafka 发送消息。在 NiFi 中,第一步是使用来自 Kafka 的消息。然后在 NiFi 流程中,消息在各个步骤中发生变化。在中间,消息被放在另一个 Kafka 主题上。云中的 Camel 函数 (CamelK) 对消息执行各种操作,完成后将消息放在 Kafka 主题上。消息通过 NiFi 流,最后调用用 Camel 创建的 API。

    在一篇博客中,我详细介绍了结合 Camel 和 Nifi 的各种方法:

    https://raymondmeester.medium.com/using-camel-and-nifi-in-one-solution-c7668fafe451

    【讨论】:

    • 感谢您的回答,我很欣赏“平台和框架”的概念。
    猜你喜欢
    • 2018-07-09
    • 2019-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-09
    • 2018-11-27
    相关资源
    最近更新 更多