前言
当一个行业专家解决一个特定问题时,很少完全创新出一个全新的方案,更多是采用类似问题的方案来解决新问题。
在对特定应用领域的系统架构方法的抽象总结,我们称之为系统架构风格,与设计模式类似,但层次比设计模式高,设计模式用于解决子系统或组件的实现,而系统架构风格用于描述如何划分组件及组件之间如何协作。
管道与过滤器架构风格属于数据流领域架构风格:数据在系统中经过各阶段处理,并最终给出结果的应用领域。
简介
系统架构定义:描述构件及构件之间的协作关系,在管道与过滤器架构中,将构件描述为过滤器,构件与构件之间的连接称为管道
过滤器负责接收数据,处理数据及输出数据,各过滤器之间由管道连接
过滤器有以下几个特点:
- 相互之间不共享状态
- 对连接的过滤器不感知
- 相互可独立执行,支持并行
- 过滤器的计算正确性与各个过滤器的执行顺序无关,只与自身的输入数据有关。
- 过滤器相互之间是否可通过管道连接,取决于传输的数据是否可被识别
管道:负责传输数据。
系统体系图
适用场景
管理与过滤器架构风格属于数据流架构体系,适合于处理数据需按阶段处理的应用领域,数据在一个处理阶段中处理,前一个处理阶段的输出被后一个阶段接收并处理,
常见的示例:
编译器:
在代码编码过程中,编译器需执行词法分析阶段,句法分析阶段,语义分析阶段,代码生成阶段,每一个阶段的输出作为后一阶段的输入。
网络传输
在网络中计算机之间的数据通信也可以看成是管道与过滤器,计算机发送的数据通过应用程,表示层,会话层,网络层,数据链路层,物理层,层层处理后发送到对方计算机。
OTS仿真
在OTS仿真系统中,设备通过物质流传递数据,
优点
各模块高内聚,松耦合
各模块可重用
方便更新或加入新的过滤器,扩展系统功能
易于理解,可将系统看成是各过滤器的简单叠加
系统特定问题如死锁,吞吐量等容易分析
各过滤器相互独立,可支持并行
缺点
在复杂系统中,若过滤器之间存在相互的关系,需要设计协调相互之间的计算顺序
若各过滤器传输的数据没有统一的规范,各过滤器则需要做加密解析等操作,降低了性能
参考系统体系图发现没有统一的共享数据区,因此不能提供任务处理进度,了解各阶段的处理细节。
实现技巧
由于各过滤器之间相互独立计算,计算的结果只与输入有关,因此在协作时,需根据过滤器的依赖关系,设计好计算拓扑图,根据拓扑图来保证过滤器的计算顺序,保证计算正确。