Flink原理、实战与性能优化

张利兵
前言为什么要写这本书记得在几年前刚开始做流式计算相关的项目时,发觉项目对实时性和数据量的要求很高,无奈求助于Flink开源社区(后文简称“社区”),在社区中发现可以使用的流式框架有很多,例如比较主流的框架Apache Storm、Spark Streaming等,Apache Flink(简称“Flink”)也在其中。于是笔者开始对各种流式框架进行详细研究,最后发现能同时支持低延迟、高吞吐、Excactly-once的框架只有Apache Flink,从那时起笔者就对Flink这套框架充满兴趣,不管是其架构还是接口,都可以发现其中包含了非常优秀的设计思想。虽然当时Flink在社区的成熟度并不是很高,但笔者还是决定将Flink应用在自己的项目中,自此开启了Flink分布式计算技术应用之旅。刚开始学习Flink,对于没有分布式处理技术和流式计算经验的人来说会相对比较困难,因为其很难理解有状态计算、数据一致性保障等概念。尤其在相关中文资源比较匮乏的情况下,需要用户在官网以及国外的技术网站中翻阅大量的外文资料,这在一定程度上对学习和应用Flink造成了阻碍。笔者在2018年参加了一场由Flink中文社区组织的线下交流活动,当时听了很多领域内专家将Flink应用在不同业务场景中的分享,发现Flink这项技术虽然优秀,但是国内尚未有一本能够全面介绍Flink的中文书籍,于是笔者决定结合自己的实际项目经验来完成一本Flink中文书籍,以帮助他人学习和使用Flink这项优秀的分布式处理技术。阿里巴巴在2018年1月开源了其内部Flink的分支项目Blink,并推动社区将Blink中优秀的特性合并到Flink主干版本中,一时间Flink在国内的发展被推向了高潮,成为很多公司想去尝试使用的新技术。因此笔者相信未来会有更多的开发者参与到Flink社区中来,Flink也将在未来的大数据生态中占据…