用途:面向实时数据管道、事件驱动架构与流式分析的设计与选型,帮助判断何时用流处理、何时用批处理,并理解流处理核心概念与框架差异。
主要能力:
- 批处理与流处理对比:延迟、数据边界、状态、复杂度与成本;
- 核心概念:事件时间与处理时间、水位线、滚动/滑动/会话/计数窗口、状态管理与状态后端(内存、RocksDB、外部存储);
- 框架对比:Kafka Streams(库、Kafka 原生、Java/Scala)、Flink(分布式集群、真正流式、SQL 支持)、Spark Streaming(微批、统一批流 API、多语言);
- 处理模式:过滤、映射/转换、聚合、流-流连接、流-表连接、去重;
- 交付保证:至多一次、至少一次、精确一次及其实现前提;
- 迟到事件处理:丢弃、允许延迟、侧输出、重处理历史;
- 扩展与监控:分区并行、背压、吞吐/延迟/消费者滞后等指标与最佳实践。
使用方式:在设计阶段据此评估延迟、状态与容错需求,选择框架和窗口/水位线策略,规划分区与状态恢复,并配置消费者滞后等监控告警。文中 Flink 示例仅用于说明拓扑结构,实际使用需按框架文档编写代码。
适用场景:实时告警、欺诈检测、实时分析、需要即时响应的连续数据流。
限制:不适用于以批量报表、复杂历史分析或成本优先且可接受分钟至小时延迟的场景;精确一次需要幂等或事务支持;状态恢复和迟到事件策略需业务权衡。