流式数据处理在大数据时代中占据了举足轻重的地位,理由非常充分,包括以下几点。
● 企业渴望更加及时地洞察自己的数据,从使用批处理转变为使用流式处理是实现低延时的好方式。
● 使用一套专为处理无界数据而设计的数据处理系统显然更容易驾驭现代企业中越来越常见的大量无界数据集。
● 在数据到达时进行数据处理的机制使系统的负载在时间维度分配更加均衡,从而产生更加一致且可预测的资源消耗。
尽管业务驱动激发了人们对流式的浓厚兴趣,但是与批处理系统相比,流式系统长期以来仍然处于相对不成熟的状态。直到最近,流式系统才呈现出向成熟转变的势头。我曾经傲慢地认为,我之前的“Streaming 101”和“Streaming 102”两篇博客文章对流式处理发展方向的变化是有些许贡献的(这两篇博客实际上是本书前几章的基础)。但实际上,有大量业内人士非常乐于看到一套流式系统趋于成熟,也有一大批聪明且能干的朋友热衷于构建一套这样的系统。
以我的观点来看,即使对流式的总体宣传已经取得了实质性的成功,我仍然会在本书中或多或少地引用我在“Streaming 101”中的一些论点。原因有二:其一,尽管众多行业已经开始注意到这场争辩的呼声,但是“Streaming 101”中的诸多论点在今天看来仍然非常适用;其二,有很多人还不了解“Streaming 101”中的论点,本书是我阐释这些论点的进一步尝试。
进入正题之前,我会介绍一些重要的背景信息,这些信息有助于对后续将要探讨的主题构建知识框架。我会从以下3个方面进行介绍。
要精确地谈论复杂的主题,通常需要精确的术语定义。对于一些当前正在使用且被过多解释的术语,我会尽量准确地表述我在使用这些术语时希望传递的信息。
我会指出当前流式系统的各类常见的缺陷,还会提出一些我认为为了今后能够满足现代数据消费者的需求,数据处理系统的构建者需要采用的思维方式。
我会介绍数据处理中相关联的两个基本的时间域,展示它们的关联方式,并指出这两个域给数据处理系统带来的一些难题。