“如果你关心流式处理和批处理工作的正确性,那么这本书是必读的。它对该主题的讨论是我看到的思考最清晰、最合逻辑的,其思想也被精彩诠释。”

——马丁·克莱普曼(Martin Kleppmann),剑桥大学

流式系统

如果学流式系统你想选一本书,那必须是这本_数据科学

如今,流式数据在大数据领域中举足轻重。随着越来越多的企业试图控制遍布世界的大规模无界数据集,流式系统终于达到了业界主流可使用的成熟度。通过本书提供的一系列实用指导,数据工程师、数据科学家和开发者可以以与平台无关的方式从概念层面学习如何处理流数据。

本书将带领读者从入门内容出发,深入探讨对处理实时数据流的定义、位置、时机和方法的理解。

在本书中读者将探索以下内容:

  • 流式数据处理模式和批处理数据处理模式的比较;
  • 健壮的乱序数据处理背后的核心原则和概念;
  • 如何用水位跟踪无界数据集的处理进度和完整性;
  • “精确一次”数据处理技术如何确保正确性;
  • 流和表的概念是如何构成批处理数据处理和流式数据处理的基础的;
  • 用真实的示例阐述强大的持久状态机制背后的实际动机。
  • 时变关系如何在流式处理与大家熟悉的SQL和关系代数的世界之间提供连接。

流式处理作为大数据处理领域中一个新兴且快速发展的分支,在实时数据分析、事件驱动架构及复杂事件处理等方面展现出了巨大的潜力和价值。《流式系统》一书不仅深入探讨了流式处理的理论和实践,更提供了一个全面而深入的视角来理解和应用流式计算技术。

阅读的乐趣从第一部分“Beam模型”(第1章到第4章)开始,Beam模型最初是为谷歌的Cloud Dataflow开发的,后来作为Apache Beam项目捐赠给了Apache软件基金会。当前Beam模型在行业的大多数系统中被全部或者部分集成。第一部分的重点是高层次地讨论批加流数据处理模型,由4章组成。

第1章涵盖流处理的基础,建立一些术语定义,讨论流式系统的能力,区分两个重要的时间域(处理时间和事件时间),最后研究一些常见的数据处理模式。

第2章详细介绍针对乱序数据进行健壮的流处理所涉及的核心概念,定义、位置、时机和方法中每部分都会在具体运行示例的上下文中进行详细分析,并用动图来突出时间的维度。

第3章(由Slava编写)对时间进展指标、指标创建的方法以及指标在流水线中传播的方法进行深入探讨。这—章的最后详细分析两种真实场景下水位的实现。

第4章从第2章话题中止的地方继续讨论,深入到高级开窗和触发概念,如处理时间窗口、会话和持续触发器。

在第一部分和第二部分之间插入包含重要细节的第5章(由Reuven编写)。在第5章中,Reuven列举提供端到端精确一次(或有效一次)处理语义所带来的挑战,并详细介绍3种不同的精确一次处理方法的实现细节:Apache Flink、Apache Spark和谷歌Cloud Dataflow。紧接着是第二部分(第6章到第9章),这一部分对概念进行深入探讨,并研究以底层"流和表”的方式思考流处理,该思想最近由Apache Kafka社区的爱好者传播,当然源头可以追溯到数十年前的数据库社区。这部分内容也由4章组成。

第6章介绍流和表的基本思想,通过流和表的角度分析经典的MapReduce方法,然后尝试构建足够通用的流表理论,覆盖全部Beam模型的内容(甚至更多)。

第7章讨论流式流水线引入持久状态的动机,研究两种常见的隐式状态,然后分析一个实际的使用场景(广告归因),最终引出通用状态管理机制的必要特征。

第8章研究在关系代数和SQL中有关流式的含义,对比当前Beam模型和经典SQL中表和流之间固有的设计偏好,并且提出一组可能的路线,将健壮的流式语义并入SQL中。

第9章研究各种不同的连接类型,分析它们在流式上下文中的行为,最后详细研究一个有用但仍未广泛支持的流式连接使用场景:时间有效性窗口。

最后,本书的结尾是第10章,这一章纵览MapReduce数据处理系统家族的重大历史,深入讨论推进流式系统发展到今天的一些重要贡献。