Nifi 架构 | 学习笔记

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介: 快速学习 Nifi 架构

开发者学堂课程【NiFi 知识精讲与项目实战(第一阶段)Nifi 架构 】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/705/detail/12508


Nifi 架构

内容介绍

一、结构介绍

二、总结


一、结构介绍

Nifi 架构的组成如图所示:

 111.png

最底层是系统 OS,例如 windows 或 linux 系统,基于系统 OS 基础之上是 gvm,java 的 gvm 虚拟机,因为 Nifi 是基于 java 进行开发的,所以所有的运行都是基于 gvm 进行,在 gvm 当中,

1.Nifi的分类

(1)web sever,也就是网络服务器,网络服务器的主要目的是用来承载 http 的命令以及控制的 API,也就是数据服务,浏览器是通过调用服务来实现 Nifi 功能;

(2)flow controller,流控制器,流控制器是整个操作的核心,它为将要运行的组件提供线程,并且进行线程的管理调度,为处理器进行不同的调度,在 flow controller 中,包含了不同的处理器以及扩展处理器;

(3)流文件存储库,在流文件存储库中,主要存储的是 flow file 的状态,跟踪 flow file 的状态,是通过 flow file 进行实现的,flow file 有自己的默认实现,它通过日志的技术来进行,最终写入到磁盘当中。大致流程是先写入到日志当中,然后再把日志存盘,以上是是 flow file 存储库;

(4)文件内容存储库,在 content repository 当中,存的是 flow file 真实的内容,而在 content repository 中存储的只是 flow file 的状态信息,真正的内容是在 content repository 当中进行存储的; (5)Provenance repository源头存储库,源头指的是文件来源的事件,也可以叫做事件存储库,里面存储的是所有的事件数据,是可插拔的,可以有自己的实现进行存储 ,NIFI 有自己的默认实现,使用多个物理的磁盘卷进行保存,并且事件都是有索引的,可以方便的进行查询和搜索。

2.架构组件的描述信息

(1)网络控制器,它的目的是用来承载 http 命令和控制器 API;

(2)流式控制器,是操作的核心,主要目的是用来管理调度,为组件去提供线程

(3)Extension,是扩展,有各种类型的 nf 扩展,关键是 Nifi 的扩展,也是在 GVM 当中进行操作和执行的,需要使用 Java 进行扩展

(4)流文件存储库,主要存储的是 flow file 的状态信息,而不是真正的 flow file 的文本内容

(5)Provenance repository,它的实现是可插拔的,有多种选择,并且可以配置,甚至是自己实现,默认实现是通过 write ahead log 技术,写到磁盘当中,核心思想是先写入到日志当中,然后再将日志落入到磁盘

(6)content repository 内容存储库,存储的是 flow file 的实际内容了,实际内容比状态信息大得多,也是可插拔的,默认是一种简单的机制,把数据块存储到文件系统当中,也可以指定多个文件系统进行存储,以便获得不同的物理分区,来减少单个卷上 IO 征用

(7)源头存储库,存储的是流文件来源的事件信息,把事件数据存储到源头存储库当中,也是可插拔的,默认使用0或多个物理的磁盘进行存储,在每个事件数据当中,都保存有索引,并且支持进行搜索事件

3.nifi的集群架构 

222.png

nifi 集群中有3种角色,紫色的是 cluster coordnator 集群协调器,一共是5个节点,其中第二个节点是集群协调器,集群协调器主要用来管理节点的添加和删除的操作逻辑。primary node 是主节点,zookeeper 在每一台当中都有一个节点,Nifi 支持两种方式的集群,一种是内置的 zk 集群,还有一种是基于外部的 zk 集群,图当中展示的是内置 zk 集群,还有一种模式,每个 Nifi 都内置了 zookeeper。

(1)配合运作 zk 节点是每个 zookeeper 组成的,它主要用来进行选举、跳以及状态信息的管理,cluster coordnator 集群协调器,它的用处主要是管理节点,例如某个节点,要把它删掉,删完之后,在并发量高的时候,又把它添加进来,是通过集群协调器来进行的,但是数据并不是只在节点上保存,数据是在每个节点上都保存的。如果宕机以后,zk 会自动选举,得到集群协调器。

primary node 叫主节点,主节点的用处主要是用来运行不适合在集群环境中运行的组件,例如读文件,读取某个文件,如果在每个节点都执行任务的话,会重复的读取,这样的情况,就应该只在单一的节点上运行,可以利用主节点来进行运行,主节点,如果宕机以后zk也会进行选举,重新产生。从 NIFI1.0版本开始,Nifi 器群就采用了领主模式的集群,Nifi 集群中,每个节,对数据执行的任务都是相同的,但是每个节点都是在不同的数据集上运行的,可以进行负载均衡操作。

zookeeper 选择单个节点来作为集群协调器,zookeeper 会自动处理故障转移,所有集群的节点,都会向集群协调器发送心跳报告状态信息,协调器是负责,删除,断开以及连接工作节点,此外每个集群都会有主节点,主节点也可以产生,可以通过任何节点来操作用户界面,进行交互,所做的任何更改,都会复制到其他节点上。

 

二、总结

NIFI 架构共包含了6个核心的组件

1.网络服务器,主要是用来承载 http 命令和 controller、api 接口,用 web 服务器进行表示

2.流控制器,主要为处理器运行去提供线程,主要进行管理调度的角色,流控制器叫做 flow controller,web 服务器主要是承载 HTTP 请求和 API 接口服务

3.extension 是扩展,主要使用 java 进行扩展,因为是基于 jvm 运行的,

4.流文件存储库,flow file repostiry,主要保存 flow file 状态数据

5.Conten repostiry 内容存储库,存储的是数据

6.源头存储库,也可以叫做事件存储库,因为保存的是事件数据  nifi 支持集群模式来运行,也正是因为这种集群模式,才使 nifi 拥有了高吞吐量以及高性能,。Nifi 集群当中,一共包含了3种角色,第一种角色叫集群协调器,主要用处是用来删除或者添加 Node 节点。主节点,主要是目的运行不适合在集群模式来运行的处理器,没有特殊功能,因为是0主模式的集群,所以主节点没有特别核心的功能,主要是为了运行不适合在集群中运行的任务,也就是单节点任务,以上是主节点的用处 zookeeper 主要是用来做故障转移,选举的工作,以上是 nifi 架构的核心组成。

相关实践学习
基于MSE实现微服务的全链路灰度
通过本场景的实验操作,您将了解并实现在线业务的微服务全链路灰度能力。
相关文章
|
1月前
|
SpringCloudAlibaba Java 网络架构
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(二)Rest微服务工程搭建
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(二)Rest微服务工程搭建
52 0
|
4月前
|
Java Docker 容器
美团大牛精心整理SpringBoot学习笔记,从Web入门到系统架构
近期慢慢复工,为了准备面试,各路码友们都开始磨拳擦脚,背面试题、知识点。小编最近得一良友赠送了一份关于SpringBoot的学习笔记,简直不要好用,理论解析言简意赅,每一步操作都有图片展示。这么好的东西肯定不能私藏,为了感谢大家在2019年里的支持,我现在将这份笔记赠送给大家,祝大家前程似锦,Offer不断!
|
1月前
|
SpringCloudAlibaba Java 网络架构
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(七)Spring Cloud Gateway服务网关
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(七)Spring Cloud Gateway服务网关
98 0
|
1月前
|
SpringCloudAlibaba 负载均衡 Java
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(目录大纲)
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(目录大纲)
65 1
|
1月前
|
消息中间件 SpringCloudAlibaba Java
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(八)Config服务配置+bus消息总线+stream消息驱动+Sleuth链路追踪
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(八)Config服务配置+bus消息总线+stream消息驱动+Sleuth链路追踪
783 0
|
1月前
|
SpringCloudAlibaba Java 测试技术
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(六)Hystrix(豪猪哥)的使用
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(六)Hystrix(豪猪哥)的使用
38 1
|
1月前
|
SpringCloudAlibaba 负载均衡 Java
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(五)OpenFeign的使用
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(五)OpenFeign的使用
42 0
|
1月前
|
负载均衡 算法 Java
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(四)Ribbon的使用
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(四)Ribbon的使用
25 0
|
1月前
|
SpringCloudAlibaba 负载均衡 Java
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(三)Eureka服务注册中心
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(三)Eureka服务注册中心
44 1
|
1月前
|
SpringCloudAlibaba Java 持续交付
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(一)基础知识+各个组件介绍+聚合父工程创建
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(一)基础知识+各个组件介绍+聚合父工程创建
85 1