1.3.4 Flink
Flink是由德国3所大学发起的学术项目,后来不断发展壮大,并于2014年年末成为Apache顶级项目之一。在德语中,“flink”表示快速、敏捷,以此来表征这款计算框架的特点。
Flink主要面向流处理,如果说Spark是批处理界的“王者”,那么Flink就是流处理领域冉冉升起的“新星”。流处理并不是一项全新的技术,在Flink之前,不乏流处理引擎,比较著名的有Storm、Spark Streaming,如图展示了流处理框架经历的三代演进。
2011年成熟的Apache Storm(以下简称Storm)是第一代被广泛采用的流处理引擎。它是以数据流中的事件为最小单位来进行计算的。以事件为单位的框架的优势是延迟非常低,可以提供毫秒级的延迟。流处理结果依赖事件到达的时序准确性,Storm并不能保障处理结果的一致性和准确性。Storm只支持至少一次(At-Least-Once) 和至多一次(At-Most-Once),即数据流里的事件投递只能保证至少一次或至多一次,不能保证只有一次(Exactly-Once)。在多项基准测试中,Storm的数据吞吐量和延迟都远逊于Flink。对于很多数据准确性要求较高的应用,Storm有一定劣势。此外,Storm不支持SQL,不支持中间状态(State)。
2013年成熟的Spark Streaming是第二代被广泛采用的流处理框架。1.3.2小节中提到,Spark是“一统江湖”