flink 的用途
Flink为流处理器开辟了新的用武之地,它使流处理架构变得完整。它的一大优势便是,使应用程序的构建过程符合自然规律。为了了解Flink的用途及用法,我们来看一看令它具有多用途的几个核心特点,特别是它如何保障数据的正确性。
1 不同类型的正确性,Flink如何正确地进行流处理,以及保障正确性到底意味着什么。人们往往将正确性等同于准确性——以计数为例,计数结果是否“正确”?这个例子很好地诠释了正确性,但是正确性的影响因素很多,当思考计算怎样才能契合需要建模和分析的场景时,更是如此。换句话说,在处理数据时,需要解决这几个问题:“我需要什么?”“我期望什么?”“我在什么时候需要得到结果?”
2 符合产生数据的自然规律流处理器(尤其是Flink)的正确性体现在计算窗口的定义符合数据产生的自然规律。举个例子,通过点击流数据追踪某网站的3个访问者(图中的A、B和C)的活动。对于每个访问者来说,活动是不连续的。在访问时间段内,事件数据被收集起来;当访问者起身去喝茶或喝咖啡时,或者当他们因为老板从身边经过而切换回工作页面时,数据就产生了间隙。处理框架能够将访问者行为分析的计算窗口与实际的访问时间段吻合到什么程度?换句话说,计算窗口与会话窗口吻合吗?首先让我们来看看,当访问者行为分析通过微批处理方法或者固定的计算窗口来处理时,会发生什么情况,
如图所示:(采用微批处理方法时,很难使计算窗口(虚线所示)与会话窗口(长方形所示)吻合)
由微批处理方法得到的计算窗口是人为设置的,因此很难与会话窗口吻合。使用Flink的流处理API,可以更灵活地定义计算窗口,因此这个问题迎刃而解。举个例子,开发人员可以设置非活动阈值,若超过这个阈值(例如5分钟),就可以判断活动结束。下图展示了这种开窗方式。