nifi架构

nifi是运行在jvm上的一个软件,NIFI的主要组成部分如下:

  • Web Server(网络服务)

    Web Server的主要作用是提供网页服务和rest api

  • Flow Controller(流控制器)

    Flow Controller是NIIF操作的大脑。它为处理器(processor)提供线程执行任务,同时管理处理器的执行调度

  • Extensions(Preocessor处理器)

    NIFI中拥有众多的类型处理器,主要分为以下几类:
    • Data Transformation(数据转换)
    • Routing and Mediation(路由和调解)
    • Database Access(数据库访问)
    • Attribute Extraction(属性提取)
    • System Interaction(系统交互)
    • Data Ingestion(数据撷取)
    • Data Egress / Sending Data(数据出口/数据发送)
    • Splitting and Aggregation(拆分和聚合)
    • HTTP
    • Amazon Web Services(亚马逊网络服务)
  • FlowFile Repository(流文件仓库)

    FlowFlie仓库是NIFI 保持追踪流中flowfile的相关信息的地方,仓库的实现是可插拔的,默认的方法是位于一个指定的磁盘分区持久写式日志。 Write-Ahead Log方法

  • Content Repository(内容仓库)

    内容仓库是存储FlowFile的实际内容的地方。仓库的实现是可插拔的。默认的方法是相当简单的机制-直接在文件系统中存储数据块。可以指定多个系统存储地址从而获得不同的物理分区优化单个文件卷的IO性能问题

  • Provenance Repository(源谱仓库)

    Provenance Repository是所有源谱事件数据的存储位置。该库的构建是可插拔使用,默认的实现是使用一个或多个物理磁盘卷。在每个位置的事件数据进行索引和搜索。

NiFi同时也是支持集群的,如下

NiFi 从1.0.0版本发布以来便已实现Zero-Master Clustering(不知道怎么翻译),每一个节点对不同对数据执行相同的操作。apache zookeeper选取一个节点作为协调器(Coordinator),zookeeper自动处理故障切换。所有集群的节点发送心跳和状态信息到集群的协调器,协调器负责连接和断开节点。此外,每一个集群一个都有zookeeper选举的主节点。操作人员可以从任何一个节点的用户界面(UI)的NiFi集群互动,所做的任何更改将被复制到集群中的所有节点,允许多个入口点。