Flink是一个框架和分布式处理引擎,用于对无界和有界数据流进行有状态计算。它被设计在所有常见的集群环境中运行,以内存执行速度和任意规模来执行计算。Flink起源于Stratosphere项目,Stratosphere是在2010~2014年由3所地处柏林的大学和欧洲的一些其他的大学共同进行的研究项目,2014年4月Stratosphere的代码被复制并捐赠给了Apache软件基金会,参加这个孵化项目的初始成员是Stratosphere系统的核心开发人员,2014年12月,Flink一跃成为Apache软件基金会的顶级项目。Flink的重要特点包括事件驱动型、流与批的世界观、分层API等。事件驱动型应用是一类具有状态的应用,它从一个或多个事件流提取数据,并根据到来的事件触发计算、状态更新或其他外部动作。流处理的特点是无界、实时,无需针对整个数据集执行操作,而是对通过系统传输的每个数据项执行操作,一般用于实时统计。在Flink的世界观中,一切都是由流组成的,离线数据是有界限的流,实时数据是一个没有界限的流。Flink的流处理架构,获得的最大好处就是具有极低的延迟。Flink的分层API最底层级的抽象仅仅提供了有状态流,它将通过过程函数(Process Function)被嵌入到DataStream API中。DataSet API为有界数据集提供了额外的支持,例如循环与迭代。这些API处理的数据类型以类(classes)的形式由各自的编程语言所表示。此外,阿里实时计算团队决定在阿里内部建立一个Flink分支Blink,并对Flink进行大量的修改和完善,让其适应阿里巴巴这种超大规模的业务场景。Blink比起Flink的优势就是对SQL语法的更完善的支持以及执行SQL的性能提升。目前阿里70%的技术部门都有使用该版本。Flink是一个强大的大数据处理框架,它提供了流处理、批处理和实时计算的能力,具有极低的延迟和高效的性能,对于大数据处理和实时计算有着广泛的应用前景。