开发者学堂课程【NiFi 知识精讲与项目实战(第一阶段):Nifi 核心概念】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/705/detail/12507
Nifi 核心概念
内容介绍
一、核心概念
二、总结
一、核心概念
Nifi 的设计概念与基于流式编程的 fbp 思想是密切相关的,fbp 指的是常见的流式编程。
1.NIFI 和流式编程的映射关系以及核心组件的概念
NiFi 术语 |
FBP Term |
描述 |
FlowEile |
信息包 lnformationPacket |
FlowEile 表示在系统中移动的每个对象,对于每个 FlowFile,NIEI 都会记录它一个属性键值对和0个或多个字节内容(FlowFile 有attribute 和 content)。 |
FlowFile Processor |
黑盒 Black BoX |
实际上是处理器起主要作用。在eip 术语中,处理器就是不同系统间的数据路由,数据转换或者数据中介的组合。处理器可以访问给定FlowFile 的属性及其内容。处理器可以对给定工作单元中的零或多个流文件进行操作,并提交该工作或回滚该工作。 |
Connection |
缓冲区 BoundedBuffer |
Connections 用来连接处理器。它们充当队列并允许各种进程以不同的速率进行交互。这些队列可以动态地对进行优先级排序,并且可以在负载上设置上限,从而启用背压。 |
Flow Controller |
调度器 scheduler |
流控制器维护流程如何连接,并管理和分配所有流程使用的线程。流控制器充当代理,促进处理器之间流文件的交换 |
ProcessGroup |
分支网络 subnet |
进程组里是一组特定的流程和连接,可以通过输入端口接收数据并通过输出端口发送数据,这样我们在进程组里简单地组合组件,就可以得到一个全新的组件(Process Group)。 |
(1)flowfile,flowfile 主要是表示在系统当中移动的每一个对象,对于每一个对象来说,Nifi 都会记录下属性键值以及0个或多个字节内容。 File 既有属性,又有内容,是2个主要组成部分,对应了流式编程中的信息包。
(2)Flow file processor, processor 就是处理器的意思。实际上是 Nifi 当中的核心组件。在 EIP 术语中,处理器就是不同系统间的数据路由、数据转换或者数据中介的组合。处理器可以访问给定 Flow file 的属性及其内容。处理器可以对给定工作单元中的零或多个流文件进行操作。并提交该工作或回滚该工作。表示 Flow file 文件当中的内容可以通过 processor 处理器进行逻辑运算、路由或转换中介判断等操作。Flow file processor 是 Nifi 的核心,在流式编程当中对应的概念叫黑盒。
(3)connection,connection 的作用是用来连接处理器,也是 processor,多个 processor 之间通过 connection 连接进行串联的,connection 充当队列的角色,并且允许各个进程以不同的速率,进行交互,队列可以动态的进行优先级的排序,并且可以在负载均衡上设置上限,从而启用背压机制。connection 既充当了连接的对象,又承担了队列的角色,有双重功能。在流式编程当中,所对应的组件是缓冲区。
(4)Flow file controlerl 组件,流控制器,主要是维护流程如何进行衔接,并且管理和分配所有流程使用的线程,流式控制器,充当代理角色,促进处理器之间的文件进行交换。对应流式编程当中的组件叫做 schedule,调度器。
(5)Process group,处理器组。进程组是由一组特定的流程和连接所组成的,可以通过输入端口接受数据,并且通过输出端口去发送数据。组也可以和组之间进行数据通信,在不同的进程组中,也可以进行简单的组合,这样就可以得到全新功能的组件。组合连接以后又形成了新的大组。组可以有集联的组合关系。以上是 Nifi 的核心组件的概念。
设计模式类似于分阶段的概念,通过组把不同的操作分成不同的阶段,帮助 Nifi 成为有效、容易构建、功能强大,可扩展性很强的数据流平台。
2.Nifi 的好处
(1)有助于处理器可视化创建和管理
(2)本质上是异步的,允许很高的吞吐量和足够大的自然缓冲
(3)Nifi 提供了高并发的模型,开发人员不必担心并发的复杂性,只需要通过界面的操作拖拽,以及配置就可以实现出高并发处理、多现成的处理。
(4)NIFI 它促进了内聚和松散藕合组件的开发,可以在其他环境中重复使用,并且方便进行单元测试。
以上是在开发中经常使用的方式。
(5)NIFI 的资源受限链接使得背压和压力释放等关键功能自然和直观,可以在流程当中配置链接,不同的链接可以设置不同背压的值,也可以进行压力释放的配置,可以避免程序因为压力过大而导致假死现象,以上是高并发系统开发时必须需要的机制,叫做熔断保护机制。
(6)错误处理变得像基本逻辑一样自然,而不是粗粒度的全部捕获错误信息,可以精确的、快速的捕捉到所产生的错误的根本原因,并且展示给使用者,便于发现问题、定位问题、解决问题
(7)数据进入和退出系统的点,以及数据如何进行流转,都很容易跟踪和理解以及查看,方便进行全流程数据的跟踪、查看以及定位,更方便使用和开发以及单元测试。
二、总结
1.主要内容是 NIFI 核心组件概念,一共5个核心的组件:
(1)Flow file。Flow file 指的是文件对象包含的内容,主要是属性和内容,也就是 attribute、content;
(2)flowfile processor。处理器主要用来处理 Flow file,对 Flow file 进行逻辑的判断或路由以及转换等操作,处理器负责这个核心的处理业务工作;
(3)connection,翻译成中文是连接处理器。连接处理器,主要负责两个业务,一是连接不同的 processor,二是充当队列的角色,connection 中可以保存数据;
(4)flow controller,流控制器,主要充当代理、调度器的角色,促进处理器之间文件的交换;
(5)processor group,处理器组,处理器组也可以叫做进程组,组包含了一组的 processor 以及 connection,并且组和组之间也可以进行连接和传输数据,组成新的大组。
以上是 Nifi 的核心组件,和基础的流式编程相同。
2.NIFI 优点
(1)可视化管理,便于操作,不需要掌握代码;
(2)吞吐量大,自然缓冲;
(3)高并发,对于高并发操作很简单,不需要进行复杂的处理,会自动进行优化;
(4)内聚和松耦合开发模式,在 Nifi 当中,可以方便的进行支持;
(5)垄断机制,支持背压设置和压力释放机制,可以用来保护系统;
(6)错误处理直观精确;
(7)数据流动,可以方便的进行查看和更多数据流动的整体流程,方便理解和跟踪。