第1章 为何选择Flink 1
1.1 流处理欠佳的后果 2
1.1.1 零售业和市场营销 2
1.1.2 物联网 3
1.1.3 电信业 5
1.1.4 银行和金融业 5
1.2 连续事件处理的目标 6
1.3 流处理技术的演变 6
1.4 初探Flink 9
1.5 生产环境中的Flink 12
1.5.1 布衣格电信 13
1.5.2 其他案例 14
1.6 Flink的适用场景 15
第2章 流处理架构 17
2.1 传统架构与流处理架构 17
2.2 消息传输层和流处理层 18
2.3 消息传输层的理想功能 19
2.3.1 兼具高性能和持久性 20
2.3.2 将生产者和消费者解耦 20
2.4 支持微服务架构的流数据 21
2.4.1 数据流作为中心数据源 22
2.4.2 欺诈检测:流处理架构用例 22
2.4.3 给开发人员带来的灵活性 24
2.5 不限于实时应用程序 24
2.6 流的跨地域复制 26
第3章 Flink的用途 29
3.1 不同类型的正确性 29
3.1.1 符合产生数据的自然规律 29
3.1.2 事件时间 31
3.1.3 发生故障后仍保持准确 32
3.1.4 及时给出所需结果 33
3.1.5 使开发和运维更轻松 33
3.2 分阶段采用Flink 34
第4章 对时间的处理 35
4.1 采用批处理架构和Lambda架构计数 35
4.2 采用流处理架构计数 38
4.3 时间概念 40
4.4 窗口 41
4.4.1 时间窗口 41
4.4.2 计数窗口 43
4.4.3 会话窗口 43
4.4.4 触发器 44
4.4.5 窗口的实现 44
4.5 时空穿梭 44
4.6 水印 45
4.7 真实案例:爱立信公司的Kappa架构 47
第5章 有状态的计算 49
5.1 一致性 50
5.2 检查点:保证exactly-once 51
5.3 保存点:状态版本控制 59
5.4 端到端的一致性和作为数据库的流处理器 62
5.5 Flink的性能 65
5.5.1 Yahoo!Streaming Benchmark 65
5.5.2 变化1:使用Flink状态 66
5.5.3 变化2:改进数据生成器并增加吞吐量 67
5.5.4 变化3:消除网络瓶颈 68
5.5.5 变化4:使用MapR Streams 69
5.5.6 变化5:增加key基数 69
5.6 结论 71
第6章 批处理:一种特殊的流处理 73
6.1 批处理技术 75
6.2 案例研究:Flink作为批处理器 76
附录 其他资源 79
关于作者 84