1.2 Flink的核心特性
在了解了Flink的定义以及常见应用场景后,本节将介绍Flink作为大数据流处理引擎的5个核心特性,并从数据处理延迟和产出数据质量两个角度对比Apache Storm、Spark Streaming和Apache Flink的优劣势。
1.2.1 Flink的5个核心特性
1.真正的流处理引擎
在Flink的流处理模式下,Flink处理数据的粒度是事件粒度或者说数据粒度,也就是来一条数据就处理一条数据。这个特性反馈到日常的业务中就是数据处理延迟极低,一般是毫秒级别,基于该特性,在实时大屏场景中,我们可以实现大屏指标的快速更新。
2.强大性能的分布式计算引擎
Flink是分布式的计算引擎,处理数据的吞吐能力能够轻松达到百万、千万级别QPS(Queries Per Second,每秒处理数据的条目)。Flink处理数据的吞吐量在很多场景下甚至可以做到和物理资源呈线性关系,因此在面对大流量数据时,Flink无所畏惧。
3.时间语义丰富的计算引擎
Flink预置了多种时间语义的API,包括事件时间、处理时间和摄入时间语义,我们可以通过这些预置API实现时间窗口上的高效数据处理。
4.高可用的有状态计算引擎
Flink不但提供了丰富的状态类型及状态操作API,而且提供了Checkpoint、Savepoint这样的快照机制来保障精确一次的数据处理,即使作业发生异常,我们也无须担心数据丢失或者重复。同时,Flink支持TB级别的状态数据存储能力。
5.流批一体的计算引擎
Flink不仅是流处理的好手,目前在批处理方面也在大力发展,我们通过同一条SQL语句就可以同时完成流处理、批处理,这可以显著降低开发、维护和资源使用的成本。
1.2.2 3种流处理引擎特性的对比
在学习流处理引擎相关的知识时,除了Flink,一定绕不开Apache Storm、Spark Streaming,它们都是老牌流处理引擎,那么为什么Flink会后来居上呢?
我们以流处理场景中常用的两个标准来看看这3个引擎各自的优缺点。这两个标准分别是数据处理延迟和产出数据质量。
❑数据处理延迟:流处理的核心要求是数据处理快,因此数据处理延迟是衡量流处理引擎优劣的重要指标。
❑产出数据质量:流处理作业一般都是7×24小时运行的,这期间很难保证作业不发生故障,数据质量主要指流处理作业在发生故障后,通过自身的异常容错功能是否能够保证数据计算结果的准确性。
表1-1是3种流处理引擎关于数据处理延迟、产出数据质量的对比。
表1-1 3种流处理引擎关于数据处理延迟、产出数据质量的对比
通过上述对比,我们可以看到相比其他两个计算引擎Flink在数据处理延迟和产出数据质量上都具有明显的优势。