Flink核心技术:源码剖析与特性开发
上QQ阅读APP看书,第一时间看更新

Flink最早是德国一些大学中的研究项目,经过多年的发展,其已在现实的生产场景中得到了越来越多的应用。近些年,由于社区的推动和商业上的支持,Flink在流式计算领域相比其他大数据分布式计算引擎有着明显的优势,并且在批量计算、批流一体化的发展上有着令人期待的前景。

在Flink官网,有一栏为Flink Blog(Flink博客),其中会定期发布一些文章来记录Flink发展过程中的重大事件或介绍新引入的重要概念等。Flink Blog中的第一篇文章宣布了Flink 0.6的发布。在Flink官网中可供下载的第一个版本是0.6版本,因为在0.5版本及之前的版本中,项目名称为Stratosphere,即Flink的前身。

Stratosphere项目起源于德国柏林工业大学(Technische Universität Berlin)Volker Markl教授于2008年提出的构想。由于数据库是Volker Markl教授的主要研究方向之一,因此创建该项目的初衷是构建一个以数据库概念为基础、以大规模并行处理(massively parallel processing,MPP)架构为支撑、以MapReduce计算模型为逻辑框架的分布式数据计算引擎。在此构想之上,在该项目中还专门引入了流处理,为后来Flink的发展“添加”了良好的“基因”。

Volker Markl教授联络德国柏林工业大学、德国柏林洪堡大学(Humboldt–Universität zu Berlin)和德国哈索·普拉特纳研究所(Hasso Plattner Institute)的多名科研人员,共同开始Stratosphere项目的研发。在2010年前后,第一版Stratosphere以开源的形式发布。在获得初步的应用和一定范围的关注后,该项目组在2010年至2014年又持续改进并陆续发布了多个版本。从此期间项目组发表的论文可以观察到,该项目已经具备了后来的Flink的雏形,可以看到如JobGraph、ExecutionGraph等执行图的概念以及作业管理器(JobManager)、任务管理器(TaskManager)等组件的架构设计。

随着知名度的提高,Stratosphere项目遇到了命名的困扰。项目组成员发现Stratosphere这个名字早已由一家商业实体注册,他们不得不对项目重新命名。最终,在2014年申请成为Apache软件基金会的孵化器项目后,经过项目组成员投票,项目正式更名为Flink。Flink在德语中意为“敏捷、快速”。同时,项目组决定使用松鼠形象作为商标,也是为了强调“敏捷、快速”的特性(如图1-1所示)。

图1-1 Flink 商标

Flink自从加入Apache后发展十分迅猛。自2014年8月发布0.6版本后,Flink仅用了3个月左右的时间,在2014年11月就发布了0.7版本,该版本包含Flink目前为止最重要的特性之一——Flink Streaming。Flink于2014年年底顺利从孵化器“毕业”,成为Apache顶级项目。随后,Flink逐步添加了在今天看来都属于其核心功能的特性,如一致性语义、事件时间和Table API等。

随着Flink受到社区越来越多的关注,其功能和稳定性也不断得到完善。一方面是因为它的功能特性受到了商学两界的广泛认可;另一方面也是因为要应对其他已经商业化的大数据计算引擎的竞争,越来越多的公司开始将Flink应用在它们真实的现网环境中,并在技术和商业上共同推动Flink的发展。我国很多公司都已经大规模使用Flink作为其分布式计算场景的解决方案,如阿里巴巴、华为、小米等。其中,阿里巴巴已经基于Flink实时计算平台实现了对淘宝、天猫、支付宝等的数据业务的支持。

早期Stratosphere项目的核心成员曾共同创办了一家名叫Data Artisans的公司,其多年来一直致力于Flink的技术发展和商业化。2019年,阿里巴巴收购了Data Artisans公司,并将其开发的分支Blink开源。相信在未来的发展中,凭借阿里巴巴强大的技术储备和商业支持,以及庞大的数据量和丰富的业务场景,Flink的发展一定会迎来新的机遇。