Flink入门与实战
上QQ阅读APP看书,第一时间看更新

1.1 Flink原理分析

很多人是在2015年才听到Flink这个词的,其实早在2008年,Flink的前身就已经是柏林理工大学的一个研究性项目,在2014年这个项目被Apache孵化器所接受后,Flink迅速成为ASF(Apache Software Foundation)的顶级项目之一。截至目前,Flink的版本经过了多次更新,本书基于1.6版本写作。

Flink是一个开源的流处理框架,它具有以下特点。

  • 分布式:Flink程序可以运行在多台机器上。
  • 高性能:处理性能比较高。
  • 高可用:由于Flink程序本身是稳定的,因此它支持高可用性(High Availability,HA)。
  • 准确:Flink可以保证数据处理的准确性。

Flink主要由Java代码实现,它同时支持实时流处理和批处理。对于Flink而言,作为一个流处理框架,批数据只是流数据的一个极限特例而已。此外,Flink还支持迭代计算、内存管理和程序优化,这是它的原生特性。

由图1.1可知,Flink的功能特性如下。

  • 流式优先:Flink可以连续处理流式数据。
  • 容错:Flink提供有状态的计算,可以记录数据的处理状态,当数据处理失败的时候,能够无缝地从失败中恢复,并保持Exactly-once。
  • 可伸缩:Flink中的一个集群支持上千个节点。
  • 性能:Flink支持高吞吐、低延迟。

图1.1 Flink的功能特性

在这里解释一下,高吞吐表示单位时间内可以处理的数据量很大,低延迟表示数据产生以后可以在很短的时间内对其进行处理,也就是Flink可以支持快速地处理海量数据。