数据流风格,着重于数据的流动过程,有两种典型应用。下面让我们逐一分析一下。

1、顺序批处理风格

特点:

§系统模块化:每个处理步骤是一个独立的程序

§可转化为有向无环图:每一步必须在前一步结束后才能开始

§数据的有效性控制程序:数据必须是完整的,以整体的方式传递

批处理也是一种传统的风格,可以从下图中70年代的批处理系统图中初窥端倪。

批处理架构风格 不能并行 批处理软件体系结构_批处理架构风格 不能并行

一个批处理系统的例子

批处理架构风格 不能并行 批处理软件体系结构_反馈控制_02

一个可能的批处理系统的数据流图

由图中可以看出,它的基本组件为独立的程序模块,连接件是数据流,拓扑结构是有向图拓扑序列。

批处理系统虽然设计简单,容易实现,但是结构僵化,不易变更,较适合传统的数据处理系统。

 

2、管道-过滤器风格

特点:

§每个构件都有输入输出,构件完成对输入数据的处理产生输出。

§构件之间相对独立,非邻近过滤器不共享任何信息。

§整个体系结构的最终输出与各构件执行的顺序无关。

 

批处理架构风格 不能并行 批处理软件体系结构_反馈控制_03

一种典型的管道-过滤器结构

在管道-过滤器结构中,数据以数据流的方式从左端流入,流经各个过滤器,对数据进行处理;对于处理完的数据,立即写入到下游管道。

显然,构件是过滤器,连接件是管道,拓扑结构是DAG。

总结一下!

优点:

§由于每个组件的行为不受其他组件的影响,整个系统的行为易于理解

§系统中的组件具有良好的隐蔽性和高内聚、低耦合的特点,复用性和可维护性能均良好;

•可将整个系统的输入/输出行为看成是多个过滤器的行为的简单合成;

•只要提供适合在两个过滤器之间传送的数据,任何两个过滤器都可被连接起来;

•新的过滤器可以添加到现有系统中来,旧的可以被改进的过滤器替换掉;

§支持并行执行:每个过滤器是作为一个单独的任务完成,因此可与其它任务并行执行。

缺点:

§通常导致进程成为批处理的结构:虽然过滤器可增量式地处理数据,但它们是独立的,所以设计者必须将每个过滤器看成一个完整的从输入到输出的转换;

§不适合处理交互的应用:当需要增量地显示改变时,这个问题尤为严重;

§在数据传输上没有通用的标准,每个过滤器都增加了解析和合成数据的工作,这样就导致了系统性能下降,并增加了编写过滤器的复杂性;

§结构固定,难以进行错误处理。

 

3、批处理与过滤器比较

共同点是处理过程之间均互不调用。

前者数据以整体的形式传输,数据总量有限。

后者数据用数据流的形式传输,数据量可以无限制。

 

4、反馈控制风格——一种特殊的数据流风格

反馈控制环是一种特定的数据流结构,传统数据流结构是线性的,控制连续循环过程的体系结构应该是环形的

一个反馈控制环主要包含三种元素:

  • 计算元素,包括过程定义和控制算法
  • 数据元素,包括输入、控制、操纵等过程变量、设定点控制和相关变量的控制变量
  • 控制环样式,包括处理过程现实和预期的状态、对反馈结果的调整

反馈控制环结构能够处理复杂的自适应问题,机器学习就是一个典型的实例:

批处理架构风格 不能并行 批处理软件体系结构_批处理_04

实施一个好的反馈控制环,有四点是至关重要的:过程定义、过程变量、设定点和控制算法。