Flink原理、实战与性能优化
上QQ阅读APP看书,第一时间看更新

前言

为什么要写这本书

记得在几年前刚开始做流式计算相关的项目时,发觉项目对实时性和数据量的要求很高,无奈求助于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也将在未来的大数据生态中占据举足轻重的位置。

读者对象

本书从多个方面对Flink进行了深入介绍,包括原理、多种抽象接口的使用,以及Flink的性能监控与调优等方面,因此本书比较适合以下类型的读者。

❏ 流计算开发工程师

❏ 大数据架构工程师

❏ 大数据开发工程师

❏ 数据挖掘工程师

❏ 高校研究生以及高年级本科生

如何阅读本书

本书共分为10章,各章节间具有一定的先后关系,对于刚入门的读者,建议从第1章开始循序渐进地学习。

对于有一定经验的读者可以自行选择章节开始学习。如果想使用Flink开发流式应用,则可以直接阅读第4章、第5章,以及第7章之后的内容;如果想使用Flink开发批计算应用,则可以选择阅读第5章以及第7章之后的内容。

勘误和支持

除封面署名外,参加本书编写工作的还有:张再胜、尚越、程龙、姚远等。由于笔者水平有限,编写时间仓促,书中难免会出现一些错误或者不准确的地方,恳请读者批评指正。由于Flink技术的参考资料相对较少,因此书中有些地方参考了Flink官方文档,读者也可以结合Flink官网来学习。书中的全部源文件可以从GitHub网站下载,地址为https://github.com/zhanglibing1990/learning-flink。同时笔者也会将相应的功能及时更新。如果你有更多宝贵的意见可以通过QQ群686656574或电子邮箱zhanglibing1990@126.com联系笔者,期待能够得到你们的真挚反馈。