1、 数据流风格直观理解: 数据到达即被激活,无数据时不工作。
2、 数据流风格的特征:
数据的可用性决定着处理<计算单元>是否执行;
系统结构:数据在各处理之间的有序移动;
在纯数据流系统中,处理之间除了数据交换,没有任何其他的交互。
3、 数据流风格的基本构件:
基本构件:数据处理
构件接口:输入端口、输出端口,从输入端口读取数据,向输出端口写入数据
计算模型:从输入端口读数,经过计算处理,然后写出输出端口。
4、 数据流风格的连接件:数据流
(单向、通常是异步、有缓冲)
接口:reader和writer
计算模型:把数据从一个处理的输出端口传送到另一个处理的输入端口
5、 数据流风格的拓扑结构:任意拓扑结构的图
一般来说,数据的流向是无序的,我们主要关注近似线性的数据流或在限度内的循环数据流。
6、 三种典型的数据流风格:批处理、管道过滤器、过程控制
7、 批处理风格基本定义:每个处理步骤是一个独立的程序,每一步必须在前一步结束后才能开始,数据必须是完整的,以整体的方式传递。
8、 批处理风格基本构成:基本构件:独立的应用程序
连接件:某种类型的媒介
拓扑结构:连接件定义了相应的数据流图,表达拓扑结构
每一步骤必须在前一步骤完成结束后方能开始。
9、 管道与过滤器(基本定义)
数据源源不断的产生,系统需要对这些数据进行若干处理(分析、计算、转换等),把系统分解为几个序贯的处理步骤,这些步骤之间通过数据流连接,一个步骤的输出是另一个步骤的输入,每个处理步骤由一个过滤器构件实现,处理步骤之间的数据传输由管道负责。每个处理步骤(过滤器)都有一组输入和输出,过滤器从管道中读取输入的数据流,经过内部处理,然后产生数据流并写入管道内。
10、管道过滤器的基本构成:
构件:过滤器(处理数据流)一个过滤器封装了一个处理步骤,数据源点和数据终点可以看作是特殊的过滤器。
连接件:管道(连接一个源和一个目的过滤器) 转发数据流,数据可能是ASCII字符形成的流
拓扑结构:连接器定义了数据流图,形成拓扑结构
11、过滤器(目标是将源数据变换成目标数据,从数据流到数据流的变化):
通过计算和增加信息来丰富数据,通过浓缩和删减来精炼数据,通过改变数据表现形式来转化数据,将一个数据流分解为多个数据流,将多个数据流合并为一个数据流。
12、过滤器读取与处理数据流的方式:递增的读取和消费数据流(数据到来时便被处理,不是收集然后处理)
13、过滤器的其他特征:无上下文信息,不保留状态,对其他过滤器无任何了解
14、过滤器的状态:停止状态、处理状态、等待状态
15、管道:其作用是在过滤器之间传送数据。(单向流,可能具有缓冲区,数据缓冲区可以是文件、数组、字典、树等collection类型,管道形成传输图,管道的先后顺序不影响输出的结果)
不同的管道中流动的数据流,可能具有不用的数据格式。(因为数据在流经过每一个过滤器进行了丰富、精炼、转换、融合、分解等操作,因而产生了变化)
从管道读数据是一次性操作,数据一旦被读,它就从管道中被抛弃,释放空间以便写更多的数据。
管道的分类——————————
管道的连接过滤器的方式~~~~~
数据流的分类:推式与拉式
- Question: what is the force that make data flow? (是什么力量推动数据在管道中流动?)
- Three choice, all with force emanating from filters:
– Push: data source pushes data in downstream direction (推式:前面的过滤器把新产生的数据推入管道)
– Pull: data sink pulls data from upstream direction (拉式:随后的过滤器从管道中拉出所需数据)
– Push/pull: a filter is actively pulling from upstream, computing, and pushing downstream (推拉式:过滤器以循环的方式,从管道中拉出其输入数据,并将其处理产生的数据压入后续管道)
过滤器的分类:主动与被动
- Active filter: The filter is an active process or thread that performs a loop, pulling its input from and pushing its output down the pipeline; (主动过滤器:具有pull/push类型的过滤器)
- Passive filter (被动过滤器)
– Pull Strategy (拉式策略): The filter is a passive object that is driven by the subsequent pipeline element that pulls output data from the filter;
– Push Strategy (推式策略): The filter is a passive object that is driven by the previous pipeline element that pushes input data into the filter.
- Attention: 系统中至少有一个主动过滤器 (可以来自外部环境,如用户输入)
- ~~~~~~~~~~~一些图片~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
管道-过滤器风格的优点
- 使得系统中的构件具有良好的隐蔽性和高内聚、低耦合的特点;
– 支持软件复用:
- 允许设计者将整个系统的输入/输出行为看成是多个过滤器的行为的简单合成;
- 只要提供适合在两个过滤器之间传送的数据,任何两个过滤器都可被连接起来;
– 系统维护和增强系统性能简单:
- 新的过滤器可以添加到现有系统中来,旧的可以被改进的过滤器替换掉;
- 允许对一些如吞吐量、死锁等属性的分析;
- 支持并行执行:
– 每个过滤器是作为一个单独的任务完成,因此可与其它任务并行执行。
管道-过滤器风格的优点