nifi主要概念

NiFi的建立是为了帮助解决现代数据流的挑战。

The core concepts of NiFi:

NiFi的基本设计概念与基于流的编程的主要思想密切相关[Flow Based Programming fbp]。以下是一些主要的NiFi概念以及它们是如何映射到FBP的:

NiFi Term FBP Term Description

FlowFile

Information Packet

A FlowFile represents each object moving through the system and for each one, NiFi keeps track of a map of key/value pair attribute strings and its associated content of zero or more bytes.

FlowFile Processor

Black Box

Processors actually perform the work. In [eip] terms a processor is doing some combination of data routing, transformation, or mediation between systems. Processors have access to attributes of a given FlowFile and its content stream. Processors can operate on zero or more FlowFiles in a given unit of work and either commit that work or rollback.

Connection

Bounded Buffer

Connections provide the actual linkage between processors. These act as queues and allow various processes to interact at differing rates. These queues can be prioritized dynamically and can have upper bounds on load, which enable back pressure.

Flow Controller

Scheduler

The Flow Controller maintains the knowledge of how processes connect and manages the threads and allocations thereof which all processes use. The Flow Controller acts as the broker facilitating the exchange of FlowFiles between processors.

Process Group

subnet

A Process Group is a specific set of processes and their connections, which can receive data via input ports and send data out via output ports. In this manner, process groups allow creation of entirely new components simply by composition of other components.

NiFi 的核心概念

  • FlowFile
    FlowFile表示在系统中移动的每个对象,FlowFile由两部分组成:
    • content 内容 既数据本身
    • attributes 属性 每条数据带上的属性信息.以键值对的形式.
  • FlowFile Processor
    1. FlowFile处理器,由它完成对数据的实际处理工作.包括但不限于对数据内容和属性的加载,路由,转换,输出等.
    2. 处理器最灵活之处在于处理器可以读写FlowFile的属性信息,并且用自带的领域特定语言(DSL)对属性进行编程.
  • Connection
    1. 由Connections把各个处理器链接起来,从而形成数据处理流程的有向无环图(DAG图).也称数据流, NiFi 中的 Flow.
    2. Connection 同时充当处理器间的队列,并且队列的属性高度可配置.
    3. 这些队列可以配置优先级,可以在设置阈值,可以实现反压。
  • Flow Controller
    1. 流控制器对用户不可见的.它充当维护处理器如何连接和管理所有处理器所使用的线程及其分配的重要角色。
    2. Flow Controller充当促进处理器之间FlowFiles交换的代理。
  • Process Group
    1. 为了方便管理,把一组特定的处理器及其连接组成的 Flow 放到一个处理组中去,可以通过输入端口接收数据并通过输出端口发送数据。
    2. 以这种方式,处理组可以通过组合其他组来创建全新组,形成更加复杂的DAG图( Flow 流)。

NiFi 的 关键特性

  • Flow 流高度可管理
    • 保证交付
      NiFi的一个核心理念是即使在非常高的规模下,保证交付也是必须的。这是通过有效使用专门的持久化的预写日志(WAL)和内容存储库来实现的。它们的设计可以实现非常高的事务处理速率,有效的负载分散,写入时复制以及发挥传统磁盘读/写的优势。
    • 背压和数据缓冲机制
      NiFi支持缓冲所有队列数据,以及在这些队列达到指定限制时提供背压的能力,或者在数据达到指定时间时使数据过期失效。
    • 可配置优先级的队列
      NiFi允许设置一个或多个优先级策略,用于如何从队列中检索数据。默认是先进先出,但有时候应该先拉取最新的数据,最大的数据或其他一些自定义方案。
    • Flow 流可配置特定的QoS(延迟v吞吐量,容量损失等)
      在 Flow 流中有一些点是很关键的,且不能容忍丢失.或者有时候必须在几秒钟内处理和交付它。NiFi 可以对这些问题进行细粒度的特定配置。
  • 易于使用
    • 可视化的控制和命令
      得益于强大的 web 操作界面.无论多么复杂的数据流都能在 web 界面上直观的呈现.整个数据处理流程,包括设计,控制,反馈和监控都可在web界面完成,一步到位.任何更改都能在界面上立马生效,完全不要部署的过程.对于整个数据流,更可以对中间某个处理器进行单独变更,实时生效.
    • 数据流模板
      对于设计好的数据流处理流,可以保存为模板来进行复用.模板可以导出成xml文件,导入到其他 NiFi 中进行多处使用.
    • 数据溯源
      flowfile 流过Flow 流时,NiFi会自动记录,索引并提供可用的起源数据,包括导入,导出,转换等。这些信息对于故障排除,优化等很有用处.
    • 对历史数据进行细粒度的恢复
      NiFi的内容存储库旨在充当历史记录的滚动缓冲区。数据仅在内容存储库过期时或存储空间不足时才会被删除。这与数据起源能力相结合,提供了非常精细的操作功能.包括对数据历史中的某一个点的点击查看内容,下载内容,处理回放等功能.所有数据都可以回溯到它生命周期中很早的某一点.
  • 安全机制
    • 系统内部安全
      Flow 流中的流动的数据都可以进行加密传输
    • 用户使用安全
      支持用户认证和不同级别的用户授权(可读,管理数据流,系统管理)
    • 多租户授权
  • 可扩展的架构设计
    • 可扩展组件
      NiFi 的核心设计就是扩展. 它的 processors, Controller Services, Reporting Tasks, Prioritizers, and Customer User Interfaces 都是 可扩展的.
    • 隔离的类加载器
      自定义的类加载器保证了扩展的组件简单的依赖关系.
    • 点到点的通信协议
      NiFi实例之间的通信协议是NiFi 点到点(S2S)协议。S2S可以轻松,高效,安全地将数据从一个NiFi实例传输到另一个实例。NiFi 客户端 的 库也可以轻松在其他应用程序使用,以通过S2S来与NiFi 实例进行通信。S2S中支持基于套接字的协议和HTTP(S)协议作为底层传输协议,使得可以将代理服务器嵌入到S2S通信中。
  • 灵活的扩容模型
    • 更多的NiFi 实例
      可以搭建 NiFi 集群,也可以不组成集群,多台机器使用 点到点 协议来协作.
    • 更大的并发数量
      直接修改处理器的并发数
  • 这个设计模型提供了许多有益的结果,帮助NiFi成为构建强大的、可伸缩的数据流的非常有效的平台。这些好处包括:

    有助于处理器的有向图的可视化创建和管理

    本质上是异步的,允许非常高的吞吐量和自然缓冲,即使处理和流率波动

    提供一个高并发模型,开发人员不必担心并发的典型复杂性

    促进内聚和松散耦合组件的开发,这些组件可以在其他上下文中重用,并促进可测试单元

    资源有限的连接使得关键功能,如背压和压力释放非常自然和直观

    错误处理变得像happy-path一样自然,而不是粗粒度的catch-all

    数据进入和退出系统的点以及数据如何流经系统都很容易理解和跟踪

发布了184 篇原创文章 · 获赞 32 · 访问量 11万+

猜你喜欢

转载自blog.csdn.net/wjandy0211/article/details/103370554