NSA NiFi编程技术 - 基于流程的编程方法介绍 Flow-based Programming

原文在这里,http://www.jpaulmorrison.com/fbp/

据本文介绍,基于流程的编程方法(FBP)是一种编程流程图,把应用程序定义为一个由黑盒子处理单元构成的网络,通过消息的传递,在预定义的链接种交换数据,而链接本身是处理单元的外部接口。这些黑盒子处理单元可以被无限制的重新链接,从而构成不同的应用程序,而内部不需要改变。FBP是一种面向组件的自然模型。

特别是,FBP是基于有限缓冲,预定义时间内的信息包,命名端口和不同类型的链接构成的数据流编程的形态。(继续中)‘

NSA NiFi编程技术 - 基于流程的编程方法介绍 Flow-based Programming_第1张图片

简介

基于流程的编程方法,使用了一种叫做“数据工厂”的类比来定义应用程序,在其看来,一个应用程序不是一个单一的,序列化的处理过程,也就是说,在某个时间上从某一个点上开始,然后在此点上完成一件事情,然后直到其结束,而是看作一个异步处理通信过程的网络,通过以流的方式交换结构化的数据块,叫做“信息包”(IPs)来完成。在这种观点中,问题集中在应用程序中的数据,以及在其上所使用的转换,从而得到想要的结果。网络本身是定义在处理单元外围的,作为一个链接的列表而存在,并通过软件的一个部分来解释执行,通常叫做“调度者”。

处理单元通过固定量的链接方式来通信,一个链接通过一个端口附加到一个处理单元上,这个链接有一个位于处理代码和网络定义之间所认可的名字。多个处理进程(单元?)可以执行同一片代码,在某个时间的任何点上,一个给出的IP包只能被一个单一的处理进程所拥有,或者是正在两个处理进程之间转换,端口可以使简单的类型,或者是数组类型,被用作,例如,好象下面所描述的集聚组件模型的输入端口,它是一个端口的组合形式,通过异步执行的处理(进程?)来允许多个长时间的数据处理的原址功能,比如分类,合并,综合等等,而其以软件黑盒子的形态而受到支持。

由于FBP处理单元可以持续的执行,只要其有需要处理的数据,并且在某点上来输出它们的结果,所以FBP应用程序一般来说,比传统的应用程序更快,从而可以优化的使用一台机器上的所有的处理器,而并不需要特定的编程方式就能实现这一点。

网络的定义通常是流程图形式的,并使用某些低级的语言或者符号转换成一种链接列表。FBP在这一层面上,可以说是一种可视化的程序设计语言,更加复杂的网络定义是一种层次继承结构,通过从一些带有“粘性”链接的子网络上定义而成。

FBP和Linda语言在这个层面上有很多相似点,在Gelernter和Carriero的名词中,叫做“协同语言“:一种重要的语言独立机制。实际上,如果在一种足够低级的语言上来编写调度者,在不同语言上编写的组件可以被连接成为一个单一的网络,FBP因此可以称自己为domain-specific languages的一种概念,或者是"mini-languages"的一种概念。

FPB展示了“数据接合“的机制,也就是在某文章中所阐述的接合,即组件之间的一种接合的最松散的类型。松散接合的概念和面向服务的体系结构是相关的,而FBP适应了这样一种体系结构中的若干标准,某种程度上,它比大多数的这种体系结构的例子都更加的细致。

FBP提倡高层面,功能形的描述,这样可以简化系统行为的推演,这其中的一个例子就是,通过建立分布的数据流模型,来对于分布式多方协议做结构化的制定和分析。(继续中)

你可能感兴趣的:(NSA NiFi编程技术 - 基于流程的编程方法介绍 Flow-based Programming)