作品简介

这是一部从源代码角度出发,通过分析Flink的各个功能模块的实现来剖析Flink的架构设计和实现原理的著作。它将能指导读者更好地对Flink进行性能调优、可用性保障、效能优化和二次开发。

四位作者都是非常资深的Flink专家,部分作者是Flink源代码的维护者和改造者,本书总结了他们在阿里巴巴、蚂蚁集团、滴滴等企业的大规模Flink实践经验。

全书共11章,主要内容如下。

第1章:阅读Flink源代码前的准备

主要介绍了Flink源代码的获取、编译、调试,以及它的目录结构、设计理念和基本架构。此外,还分析了Flink与Hadoop MapReduce、Spark在设计上的差异。

第2~8章:Flink功能模块源代码和架构解析

从源码角度分析了Flink的编程模型与API、运行时组件与通信、状态管理与容错、任务提交与执行、Flink网络栈、Flink Connector、部署模式等功能模块的原理。力求让读者深入理解Flink的原理,而不只是跟着本书读一遍Flink源代码。原理和思想是不局限于某一个框架和技术,了解了Flink的原理和思想,可以将其扩展到其他框架和技术上。

第9~10章:Flink Table、SQL与Flink CEP

编程方式逐渐从原先基于Map-Reduce的任务模式向SQL化演进,SQL意味着标准和效率。这两章重点讲解了StreamTableEnvironment的实现过程、SQL的解析过程、Table Connector以及Flink CEP的内部实现原理。

第11章:Flink监控

主要讲解了Flink的监控指标、常用系统指标和监控体系的建设,以及常用的定位手段。

罗江宇

Flink技术专家,先后就职于新浪微博、滴滴和某大型电商公司。先后主导或参与了多家公司的Flink实时计算服务的构建、对超大规模集群的维护以及Flink引擎的改造。拥有丰富的实时计算实战经验,目前专注于Kubernetes调度、Flink SQL及Flink流批一体化方向。

赵士杰

资深大数据技术专家,曾就职于滴滴、阿里巴巴等一线互联网公司。从0到1深度参与了滴滴的大数据建设,拥有非常丰富的大数据平台一线建设经验,对于大数据领域的计算和存储引擎也有深入研究。

李涵淼

大数据研发专家,曾任滴滴大数据开发工程师。从事大数据领域工作多年,参与过多家公司流计算平台的设计与研发,目前专注于批流一体、OLAP技术方向的研究与应用。

闵文俊

蚂蚁集团技术专家、开源大数据社区爱好者、Flink Contributor,在实时计算领域工作多年,深度参与了滴滴、蚂蚁集团的实时计算平台建设。

作品目录

  • 内容简介
  • 作者简介
  • 推荐语
  • 前言
  • 第1章 阅读Flink源代码前的准备
  • 1.1 环境准备
  • 1.2 获取、编译和调试Flink的源代码
  • 1.2.1 获取与导入Flink源代码
  • 1.2.2 编译与调试Flink源代码
  • 1.3 Flink源代码的目录结构
  • 1.4 Flink设计理念与基本架构
  • 1.4.1 Flink与主流计算引擎对比
  • 1.4.2 Flink基本架构
  • 1.5 本章小结
  • 第2章 编程模型与API
  • 2.1 DataStream
  • 2.2 算子
  • 2.3 窗口
  • 2.3.1 窗口的基本概念
  • 2.3.2 窗口的执行流程
  • 2.3.3 窗口分配器
  • 2.3.4 触发器
  • 2.3.5 窗口函数
  • 2.4 本章小结
  • 第3章 运行时组件与通信
  • 3.1 运行时组件
  • 3.1.1 REST
  • 3.1.2 Dispatcher
  • 3.1.3 ResourceManager
  • 3.1.4 JobMaster
  • 3.1.5 TaskExecutor
  • 3.2 组件间通信
  • 3.2.1 Akka与Actor模型
  • 3.2.2 组件间通信实现
  • 3.3 运行时组件的高可用
  • 3.3.1 Master节点上组件的高可用
  • 3.3.2 现有运行时组件高可用存在的问题及其解决方案
  • 3.4 本章小结
  • 第4章 状态管理与容错
  • 4.1 状态
  • 4.1.1 状态的原理与实现
  • 4.1.2 状态生存时间的原理与实现
  • 4.2 检查点
  • 4.2.1 检查点机制原理
  • 4.2.2 检查点执行过程
  • 4.2.3 任务容错
  • 4.3 状态后端
  • 4.4 本章小结
  • 第5章 任务提交与执行
  • 5.1 任务提交整体流程
  • 5.2 DAG转换
  • 5.2.1 DAG的4层转换
  • 5.2.2 WordCount转换过程
  • 5.3 Slot分配
  • 5.3.1 相关概念和实现类
  • 5.3.2 Slot申请流程
  • 5.3.3 任务部署
  • 5.4 任务执行机制
  • 5.4.1 任务执行过程
  • 5.4.2 MailBox线程模型
  • 5.5 本章小结
  • 第6章 Flink网络栈
  • 6.1 内存管理
  • 6.2 网络传输
  • 6.2.1 什么是Flink网络栈
  • 6.2.2 非流控模型的网络传输流程
  • 6.2.3 流控模型的网络传输流程
  • 6.3 流批一体的shuffle架构
  • 6.3.1 生命周期管理
  • 6.3.2 数据shuffle
  • 6.4 本章小结
  • 第7章 Flink Connector的设计与实现
  • 7.1 Kafka Connector实现原理
  • 7.1.1 Kafka Source Connector实现
  • 7.1.2 Kafka Sink Connector实现
  • 7.2 HBase Table Connector实现原理
  • 7.2.1 HBase Source Connector和Sink Connector的工厂实现
  • 7.2.2 HBase维表实现
  • 7.3 本章小结
  • 第8章 部署模式
  • 8.1 Local部署
  • 8.2 Standalone部署
  • 8.3 Flink on YARN模式
  • 8.3.1 YARN基本架构
  • 8.3.2 Flink on YARN模式介绍
  • 8.3.3 Flink on YARN启动过程
  • 8.4 Flinkon Kubernetes模式
  • 8.5 本章小结
  • 第9章 Flink Table与SQL
  • 9.1 StreamTableEnvironment类介绍
  • 9.1.1 StreamExecutionEnvironment类
  • 9.1.2 EnvironmentSettings类
  • 9.1.3 TableConfig类
  • 9.1.4 StreamTableEnvironment的创建过程
  • 9.2 SQL解析过程
  • 9.2.1 SQL解析
  • 9.2.2 SQL优化
  • 9.2.3 RelNode转换
  • 9.3 Table Connector
  • 9.3.1 TableSource
  • 9.3.2 TableSink
  • 9.3.3 SPI机制在Table Connector中的应用
  • 9.4 UDF与内置算子
  • 9.4.1 UDF
  • 9.4.2 内置算子
  • 9.5 本章小结
  • 第10章 Flink CEP原理解析
  • 10.1 CEP的基本概念
  • 10.1.1 什么是Flink CEP
  • 10.1.2 Pattern
  • 10.1.3 量词
  • 10.1.4 条件
  • 10.1.5 连接
  • 10.1.6 Flink CEP作业编写举例
  • 10.2 CEP内部实现原理
  • 10.2.1 NFA简介
  • 10.2.2 匹配过程
  • 10.2.3 CEP状态存储
  • 10.2.4 CEP和SQL结合
  • 10.3 本章小结
  • 第11章 Flink监控
  • 11.1 监控指标
  • 11.1.1 指标类型
  • 11.1.2 系统指标及自定义指标
  • 11.1.3 指标的使用
  • 11.2 常用系统指标
  • 11.3 监控体系建设
  • 11.3.1 指标监控及展示
  • 11.3.2 日志分析处理
  • 11.3.3 定位手段
  • 11.4 本章小结
展开全部