管道过滤器架构

多用于串行多步骤的任务处理。

大致结构为:source -> pipe -> filter -> pipe -> filter -> pipe -> sink

例如shell命令:cat xxx.txt | sort | gunzip

就是一个管道过滤器。|为管道符,连接各阶段处理,而各个阶段的处理cat sort gunzip 就是一个过滤器(相对穿过它们的真正的文本数据而言)

几种工作方式:

active source/ passive filter / passive sink

passive source / passive filter / active sink

passive source / active filter / passive sink

passiive source / active multiple filter / passive sink

filter:流水线的处理单元,在上个例子中的cat, sort, gunzip,管道过滤器中的数据都会顺次接受处理

pipe:一般用队列实现,起到缓冲或者同步的作用

优点:

1,过滤器可以重用,自由组合

2,中间结果自然传递

3,在多个filter都主动执行时可以高效并行处理

缺点:

1,数据传输的开销较大

2,转换开销也较大

3,错误处理比较复杂

4,处理流中,实现用户交互,控制各部状态比较复杂

你可能感兴趣的:(java,linux,前端)