第1章 为何选择Flink
人们对某件事的正确理解往往来自基于有效论据的结论。要获得这样的结论,最有效的方法就是沿着事件发生的轨迹进行分析。
许多系统都会产生连续的事件流,如行驶中的汽车发射出GPS信号,金融交易,移动通信基站与繁忙的智能手机进行信号交换,网络流量,机器日志,工业传感器和可穿戴设备的测量结果,等等。如果能够高效地分析大规模流数据,我们对上述系统的理解将会更清楚、更快速。简而言之,流数据更真实地反映了我们的生活方式。
因此,我们自然希望将数据用事件流的方式收集起来并加以处理。但直到目前,这并不是整个行业的标准做法。流处理并非全新的概念,但它确实是一项专业性强且极具挑战性的技术。实际上,企业常见的数据架构仍旧假设数据是有头有尾的有限集。这个假设存在的大部分原因在于,与有限集匹配的数据存储及处理系统建起来比较简单。但是,这样做无疑给那些天然的流式场景人为地加了限制。
我们渴望按照流的方式处理数据,但要做好很困难;随着大规模数据在各行各业中出现,难度越来越大。这是一个属于物理学范畴的难题:在大型分布式系统中,数据一致性和对事件发生顺序的理解必然都是有限的。伴随着方法和技术的演化,我们尽可能使这种局限性不危及商业目标和运营目标。
在这样的背景下,Apache Flink(以下简称Flink)应运而生。作为在公共社区中诞生的开源软件,Flink为大容量数据提供流处理,并用同一种技术实现批处理。
在Flink的开发过程中,开发人员着眼于避免其他流处理方法不得不在高效性或者易用性方面所做的妥协。
本书将讨论流处理的一些潜在好处,从而帮助你确定以流为基础的数据处理方法是否适合你自己的商业目标。流处理的一些数据来源以及适用场景可能会让你感到意外。此外,本书还将帮助你理解Flink的技术以及这些技术如何克服流处理面临的困难。
本章将介绍人们希望通过分析流数据获得什么,以及在大规模流数据分析过程中面临的困难。本章是关于Flink的入门介绍,你可以看到人们平常(包括在生产环境中)是怎么使用它的。