Flink核心概念

一、Flink的定义

Flnk是一个分布式处理引擎,用于在无边界和有边界数据流上进行有状态的计算。Flink能在常见集群环境中运行,并能以内存速度和任意规模进行计算。

二、有界流和无界流

Flink的核心是流处理,当然也支持批处理。Flink的本质是流处理,它将批处理看作是流处理的特殊情况,即有界流数据。而Spark恰恰相反,Spark是将流处理看做是批处理的特殊情况,将数据进行小的拆分,即微批处理。

有界流:定义了流的开始,也有定义流的结束。有界流在摄取从开始到结束这一阶段的所有数据后再进行计算,有界流处理通常被称为批处理。

无界流:定义了流的开始,但是没有定义流的结束,数据会源源不断的产生。无界流的数据必须持续处理,即数据被摄取后需要立刻进行处理,不能等到所有数据到达再处理,因为等不到结束。

三、有状态的计算架构

有状态计算是什么:可以把中间计算结果拿出来,新的数据进来时,可以基于这个中间结果进行计算。

Flink有状态计算的优势

1.当有新的数据进来时,不需要把之前产生的数据拿出来进行全量计算,节约计算资源,提升性能。

2.Flink维护了这个中间结果,不需要开发者去处理,如把中间结果存在redis啊,mysql,省心效率还高。

四、Flink的优势和特点

1.高吞吐、低延迟、高性能

高吞吐:分布式架构,多台机器一起工作,一次可以处理很多数据。

低延迟:真正的流处理,来一条处理一条,无需等待。

高性能:内存计算,加上Flink内部的优化,计算快。

2.支持事件时间(Event Time)

事件时间:数据产生的时间。

处理时间:数据到达计算框架的时间。

在流计算中,经常会用到窗口计算,Spark窗口计算只支持处理时间,Flink可以既支持处理时间也支持事件时间。在分布式系统中,难免会出现乱序数据的情况。先产生的数据后到达流计算框架,如果还是采用处理时间计算数据的话,会影响计算结果的正确性,而使用事件时间就能够计算出精确的结果,避免了网络传输或硬件系统的影响。

五、Flink常用场景

实时风控

实时报表

实时数仓

实时推荐系统

原文地址:https://www.cnblogs.com/yangyh11/p/13752547.html