请阐述 Apache Flink 的基本定位与核心特性,并对比说明它和 Spark Streaming 在流处理模型上的主要差异。
考察说明
考查对 Flink 本质和流处理模型差异的理解,判断是否真正掌握其区别于批处理框架的核心思想。
回答思路
- 【回答框架 1】Flink 是一个开源的分布式流处理引擎,核心是真正的流处理(True Streaming),每个事件到达即被处理,实现低延迟和 Exactly-Once 状态一致性,并支持事件时间处理与状态管理。
- 【回答框架 2】Spark Streaming 本质上是微批处理(Micro-batch),将数据流按固定间隔(如 2 秒)切分为小批次,通过 Spark 批处理引擎执行,因此延迟一般在秒级。
- 【回答框架 3】绝对对比差异点:处理模型上,Flink 是逐条事件驱动,Spark Streaming 是批量处理;延迟上,Flink 更低(毫秒级),Spark Streaming 较高(秒级);流处理能力上,Flink 原生支持事件时间和 Watermark,能处理乱序数据,而 Spark Streaming 主要在微批框架内实现;状态管理上,Flink 提供分布式、可检查点的状态存储,Spark Streaming 的窗口状态相对受限。
- 【关键点 1】Flink 是真正的流处理引擎,逐条处理事件,延迟低。
- 【关键点 2】Spark Streaming 采用微批模型,延迟较高。
- 【关键点 3】Flink 原生支持事件时间与状态管理,适合复杂事件处理。
- 【关键点 4】选择取决于场景:需要毫秒级延迟选 Flink,批流统一可用 Spark。
- 【易错点 1】勿混淆 Spark Streaming 与 Structured Streaming(后者基于微批和持续处理)。
- 【易错点 2】版本差异可能导致特性不同,需说明基于通用概念,具体以实测为准。
- 【易错点 3】延迟对比不能绝对化,需结合具体配置和场景。