代码之家  ›  专栏  ›  技术社区  ›  SELA

阿帕奇NIFI vs阿帕奇气流vs阿帕奇猎鹰?在下面的场景中,哪个最适合?

  •  4
  • SELA  · 技术社区  · 6 年前

    我正在用Java开发一个解决方案,它通过属于不同供应商的RESTAPI与一组设备通信。因此,对于每个供应商,我必须在解决方案中执行一组流程。但是,这些流程将根据每个供应商进行更改。以下是需要执行的高级流程。

    • Retrieve an XML file from a folder
    • Process the XML file
    • Perform some image processing
    • Schedule a job and execute it on the scheduled time
    • Storing data on a MySQL DB and perform some REST calls to outside APIs

    • I should be able to create custom workflows for new vendors
    • Need to identify any failures that have been occurred within the workflow and perform retry mechanisms.
    • Should be able to execute some functions parallelly (Eg: Image processing)
    • Scalable
    • Opensource

    所以我被告知要研究像Nifi/Airflow/Falcon这样的工作流管理器。我对它们做了一些研究,但无法最终确定最合适的解决方案。

    目前,我正在考虑使用Nifi。但是有人能给出你的意见吗?对于我的用例,什么是最好的解决方案?

    2 回复  |  直到 6 年前
        1
  •  13
  •   returntosender404    6 年前

    ApacheNIFI不像ApacheAirflow或ApacheOozie那样是一个工作流管理器。它是一个数据流工具-它路由和转换数据。它不是为了安排作业,而是允许您从多个位置收集数据,定义处理该数据的离散步骤,并将该数据路由到不同的目的地。

    ApacheFalcon的另一个不同之处在于,它允许您更轻松地定义和管理HDFS数据集。它有效地管理HDFS集群中的数据。

    根据您的描述,NiFi将是对您的需求的有用补充。它将能够收集XML文件,以某种方式对其进行处理,将数据存储在MySQL中,并执行REST调用。它还可以方便地配置给新的供应商,并且可以很好地容忍故障。它并行执行大多数功能,并可扩展为具有多台主机的群集NiFi。它的设计考虑到了性能和可靠性。

    我不确定的是执行图像处理的能力。有一些处理器(提取图像元数据、调整图像大小),但如果不是这样,您需要用Java开发一个新的处理器——这相对容易。或者,如果图像处理使用Python或其他脚本语言,则可以使用ExecuteScript处理器之一。

        2
  •  3
  •   panchicore    6 年前

    HttpRequest 所以你可以制作一个“webhook接收器”来触发一个来自外部的进程 HTTP POST ,对于简单的部署(即在一台机器中即插即用的部署),cronjob再次完成了任务。对于图像处理,我有一个带有python的OCR图像阅读器,它与 ExecuteScript 处理器和一个面部处理器 opencv 具有 ExecuteCommand 处理器,自动nifi的背压解决了我运行的许多问题,只运行python脚本和命令本身。