数据流架构风格
数据流架构风格以数据作为驱动,组件通过数据流连接,对到达的数据进行处理。主要包括批处理和管道-过滤器两种子风格。
-
批处理架构: 每个处理步骤是一个独立的程序,每一步必须在前一步结束后才能开始,且数据必须是完整的,以整体的方式传递。
优点:高吞吐、资源利用率高, 易扩展、支持并发、可重用
缺点:高延迟、无交互, 共享状态难、错误处理复杂 -
管道-过滤器架构: 把系统分为几个序贯地处理步骤,每个步骤之间通过数据流连接,一个步骤的输出是另一个步骤的输入。
优点:松耦合, 易扩展、支持并发、可重用
缺点:数据转换开销、交互性差, 共享状态难、错误处理复杂
总结:二者均属数据流风格,批处理适用于离线大批量作业,管道-过滤器适用于流式数据处理,都有易扩展、支持并发、可重用优点,但都存在交互性差、共享状态难、错误处理复杂的缺点。
分析
-
核心概念辨析
- 管道-过滤器风格:将处理分解为一系列连续的阶段(过滤器),数据像水流一样被逐个记录或微批次地处理。
- 典型示例:Unix命令行中的
cat log.txt | grep "error" | sort | uniq -c
- 典型示例:Unix命令行中的
- 批处理风格:定期收集数据,积累成一个批次,然后作为一个整体进行一次性处理。
- 典型示例:夜间ETL作业、历史数据统计分析、日终报表生成
- 管道-过滤器风格:将处理分解为一系列连续的阶段(过滤器),数据像水流一样被逐个记录或微批次地处理。
-
同属“数据流架构”的原因
- 在软件架构范畴内,二者均符合数据流架构的根本原则:系统的组件结构、行为及交互由数据在组件间的流动所驱动和决定。
选型
| 特性维度 | 批处理风格 | 管道-过滤器风格 |
|---|---|---|
| 架构核心 | 处理有界数据集,追求吞吐量 | 处理(无界)数据流,追求流式变换与低延迟 |
| 数据处理单位 | 批 (Batch) | 流 (Stream) / 单个数据单元或微批 |
| 首要设计目标 | 高效率处理海量历史数据 | 低延迟处理持续到达的数据 |
| 典型应用场景 | 离线数据分析、数据仓库构建、T+1报表 | 编译器、实时监控、信号处理、在线数据清洗 |
选型建议:
- 若业务需求为周期性、海量、对延迟不敏感的数据处理(如深度分析、报表),应首选批处理风格。
- 若业务需求为持续不断、需即时响应的数据处理(如实时风控、监控告警、实时推荐),应首选管道-过滤器风格(或其流处理实现)。
- 复杂的数据系统常并行采用这两种范式。例如,Lambda架构框架下,批处理层(批处理风格)保障最终准确性,速度层(常采用流处理/管道-过滤器风格)保障低延迟,从而兼顾吞吐量与实时性。

浙公网安备 33010602011771号