Flink是Apache下面的一个开源框架,最近很好,官方的介绍如下:
Apache Flink is a framework and distributed processing engine for stateful computations over unbounded and bounded data streams. Flink has been designed to run in all common cluster environments, perform computations at in-memory speed and at any scale.
简单来说Flink的目的是让我们更方便地处理数据流,数据流分两种,一种是无限数据流,一种是有限数据流。无限数据流就是有起点但是没有终点的数据,比如我们系统里面的订单数据,它一直产生,暂时还没看到终点。有限数据流是指有起点和终点的数据,比如我们系统中一月份的数据。
处理流数据时一般是要有状态的,举个例子,我们系统有一个接收车辆GPS数据的功能,有时候GPS数据会产生不正常的漂移,比如车辆的位置在上海,过了5分钟,GPS的位置突然漂移到了青岛,这个位置显然是不对的,我们要把这个错误的点丢弃,怎么知道最新的位置是正确还是错误的呢?我们需要记录前一个点的位置,在这里,前一个点的位置就是状态,没有状态,我们就无法判断当前的位置是正确的还是错误的。
Flink的好处是它使用内存存储状态,性能相当好,当系统shutdown的时候,还可以把状态存储下来,等系统恢复的时候,能把数据流恢复到正确的状态。