《Streaming Systems》作为去年的出版的关于实时计算的新书,主要探讨了Dataflow模型以及Streams和Tables之间的关系两块内容。趁着团队在集中精力建立实时计算框架以及应用到业务中,重新温习《Streaming Systems》,构建思维导图和导读笔记,以期对Spark 2.X和Flink有更好的理解。
《Streaming Systems》第一章分为三部分
- 首先澄清了流(Stream)的概念,区分了有界数据集和无界数据集,重新定义了Stream和Table的关系,并从一个更高的角度认为,流处理实际是批处理的超集,也借此批评了Lambda架构给系统引入的复杂性。再之后流处理系统应该要处理的正确性(correctness)和时间推理工具(tools for reasoning about time)两个概念。
- 梳理事件时间(event time)和处理时间(processing tim)两个实时计算过程中非常重要的概念,给出了两种不同的时间会给数据分析和处理带来的各种问题
- 最后抽象出数据处理的共同模式,以及处理无界数据集所使用的四种方法:数据集与时间无关(time- agnostic),推测式(approximation),基于处理时间的窗口(windowing by processing time)和基于事件时间的窗口(windowing by event time)