前言 1
第1章状态化流处理概述 7
传统数据处理架构 8
事务型处理 8
分析型处理 9
状态化流处理 11
事件驱动型应用 13
数据管道 14
流式分析 15
开源流处理的演变 16
历史回顾 17
Flink快览 18
运行首个Flink应用 20
小结 23
第2章流处理基础 25
Dataflow编程概述 25
Dataflow图 25
数据并行和任务并行 26
数据交换策略 27
并行流处理 28
延迟和吞吐 28
数据流上的操作 31
时间语义 36
流处理场景下一分钟的含义 37
处理时间 38
事件时间 39
水位线 40
处理时间与事件时间 41
状态和一致性模型 41
任务故障 43
结果保障 44
小结 46
第3章Apache Flink架构 47
系统架构 47
搭建Flink所需组件 48
应用部署 50
任务执行 51
高可用性设置 52
Flink中的数据传输 54
基于信用值的流量控制 56
任务链接 57
事件时间处理 58
时间戳 59
水位线 59
水位线传播和事件时间 61
时间戳分配和水位线生成 63
状态管理 64
算子状态 65
键值分区状态 66
状态后端 68
有状态算子的扩缩容 68
检查点、保存点及状态恢复 71
一致性检查点 71
从一致性检查点中恢复 72
Flink检查点算法 74
检查点对性能的影响 79
保存点 79
小结 82
第4章设置Apache Flink开发环境 83
所需软件 83
在IDE中运行和调试Flink程序 84
在IDE中导入书中示例 84
在IDE中运行Flink程序 87
在IDE中调试Flink程序 88
创建Flink Maven项目 89
小结 90
第5章DataStream API(1.7版本) 91
Hello, Flink! 91
设置执行环境 93
读取输入流 94
应用转换 94
输出结果 95
执行 96
转换操作 96
基本转换 97
基于KeyedStream的转换 100
多流转换 104
分发转换 108
设置并行度 111
类型 112
支持的数据类型 113
为数据类型创建类型信息 116
显式提供类型信息 117
定义键值和引用字段 118
字段位置 118
字段表达式 119
键值选择器 120
实现函数 121
函数类 121
Lambda函数 122
富函数 123
导入外部和Flink依赖 124
小结 125
第6章基于时间和窗口的算子 127
配置时间特性 127
分配时间戳和生成水位线 129
水位线、延迟及完整性问题 133
处理函数 134
时间服务和计时器 136
向副输出发送数据 138
CoProcessFunction 140
窗口算子 141
定义窗口算子 142
内置窗口分配器 143
在窗口上应用函数 148
自定义窗口算子 155
基于时间的双流Join 167
基于间隔的Join 167
基于窗口的Join 168
处理迟到数据 170
丢弃迟到事件 170
重定向迟到事件 171
基于迟到事件更新结果 172
小结 174
第7章有状态算子和应用 175
实现有状态函数 176
在RuntimeContext中声明键值分区状态 176
通过ListCheckpointed接口实现算子列表状态 180
使用CheckpointedFunction接口 187
接收检查点完成通知 189
为有状态的应用开启故障恢复 190
确保有状态应用的可维护性 190
指定算子唯一标识 191
为使用键值分区状态的算子定义最大并行度 192
有状态应用的性能及鲁棒性 192
选择状态后端 193
选择状态原语 194
防止状态泄露 195
更新有状态应用 198
保持现有状态更新应用 199
从应用中删除状态 200
修改算子的状态 200
可查询式状态 202
可查询式状态服务的架构及启用方式 203
对外暴露可查询式状态 204
从外部系统查询状态 205
小结 207
第8章读写外部系统 209
应用的一致性保障 210
幂等性写 211
事务性写 211
内置连接器 213
Apache Kafka数据源连接器 214
Apache Kafka数据汇连接器 218
文件系统数据源连接器 222
文件系统数据汇连接器 224
Apache Cassandra数据汇连接器 228
实现自定义数据源函数 232
可重置的数据源函数 233
数据源函数、时间戳及水位线 235
实现自定义数据汇函数 236
幂等性数据汇连接器 238
事务性数据汇连接器 239
异步访问外部系统 248
小结 251
第9章搭建Flink运行流式应用 253
部署模式 253
独立集群 254
Docker 256
Apache Hadoop YARN 258
Kubernetes 261
高可用性设置 266
独立集群的HA设置 267
YARN上的HA设置 268
Kubernetes的HA设置 270
集成Hadoop组件 270
文件系统配置 272
系统配置 274
Java和类加载 275
CPU 275
内存和网络缓冲 276
磁盘存储 278
检查点和状态后端 279
安全性 280
小结 281
第10章Flink和流式应用运维 283
运行并管理流式应用 283
保存点 284
通过命令行客户端管理应用 285
通过REST API管理应用 292
在容器中打包并部署应用 298
控制任务调度 302
控制任务链接 302
定义处理槽共享组 303
调整检查点及恢复 305
配置检查点 306
配置状态后端 309
配置故障恢复 311
监控Flink集群和应用 313
Flink Web UI 313
指标系统 316
延迟监控 322
配置日志行为 323
小结 324
第11章还有什么? 325
Flink生态的其他组成部分 325
用于批处理的DataSet API 325
用于关系型分析的Table API及SQL 326
用于复杂事件处理和模式匹配的FlinkCEP 326
用于图计算的Gelly 327
欢迎加入社区 327