Apache Camel vs Apache Nifi

9cbw7uwe  于 12个月前  发布在  Apache
关注(0)|答案(2)|浏览(283)

我使用Apache camel已经很长一段时间了,发现它是一个非常棒的解决方案,可以满足所有系统集成相关的业务需求。但是几年前,我遇到了Apache Nifi解决方案。经过一些谷歌搜索,我发现虽然Nifi可以作为ETL工具工作,但它实际上是用于流处理的。
在我看来,“哪个更好”是一个非常糟糕的问题,因为这取决于不同的事情。但如果有人能更多地描述两者之间的基本比较,以及一个明显的问题,什么时候用什么,那就太好了。
这将有助于根据我目前的需求做出决定,这将是我的背景下的一个好选择,或者我应该将两者一起使用。

iecba09b

iecba09b1#

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

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

它们可以很好地一起使用。特别是在使用Apache ActiveMQ或Apache Kafka等消息代理时。

**示例:**一个Java应用通过Camel增强,可以向Kafka发送消息。在NiFi中,第一步是使用来自Kafka的消息。然后,在NiFi流中,在各个步骤中改变消息。在中间,消息被放在另一个Kafka主题上。云中的Camel函数(Camel K)对消息执行各种操作,当它完成时,它将消息放在Kafka主题上。消息通过NiFi流,该流调用使用Camel创建的API。

在一篇博客中,我详细介绍了Camel和Nifi的各种结合方式:
https://raymondmeester.medium.com/using-camel-and-nifi-in-one-solution-c7668fafe451

rsl1atfo

rsl1atfo2#

最大和最明显的区别是NiFi是一种无代码的方法- 99%的NiFi用户永远不会看到一行代码。它是一个基于Web的GUI,具有拖放界面来构建管道。
NiFi可以执行ETL,* 可以 * 用于批处理用例,但它面向数据流。它不仅仅是将数据从A移动到B,它还可以进行复杂的(和高性能的)转换,丰富和规范化。它开箱即用,支持许多特定的源和端点(例如Kafka、Elastic、HDFS、S3、Postgres、Mongo等)以及通用源和端点(例如,TCP、HTTP、IMAP等)。
NiFi不仅仅是消息-它可以原生地与各种不同的格式一起工作,但也可以用于二进制数据和大文件(例如,文件)。移动多GB视频文件)。
NiFi是作为一个独立的应用程序部署的--它不是一个框架、API或库,也不是你可以集成到其他东西中的东西。它是一个完全独立的,实现的应用程序,具有开箱即用的功能,无需额外开发。如果需要的话,它可以通过自定义开发进行扩展。
NiFi是原生集群的--它期望(但不是必需的)部署在多个主机上,这些主机作为一个集群一起工作,以获得性能、可用性和冗余。
因此,这两种工具的使用方式非常不同-希望这有助于突出一些关键差异

相关问题