多用于串行多步骤的任务处理。
大致结构为: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,处理流中,实现用户交互,控制各部状态比较复杂