flink简介

spark本身是基于批处理模式的原因,并不能完美高效处理原生的数据流,因此对流式处理计算支持较弱。
有状态流计算架构,状态就是计算过程中产生的中间计算结果,每次计算新的数据进入流式系统中都是基于中间状态结果的基础上进行运算。基于有状态计算方式的最大优势是不需要将原始数据重新从外部存储中拿出来,从而进行全量计算。

flink支持高度容错的状态管理,防止状态在计算过程中因为系统异常而出现丢失,flink周期性通过分布式快照技术checkpoints实现状态的持久化维护,使得即使在系统停机或异常的情况下都能计算出正确的结果。

flink的优势

flink是唯一集高吞吐、低延迟、高性能。spark只能兼顾高吞吐和高性能,无法做到低延迟;storm只能支持低延迟和高性能。

大多数框架窗口计算采用的是系统时间,即事件传输到计算框架处理时,系统主机的时间。
flink能支持基于事件时间进行窗口计算,即使用事件产生的时间,这种基于事件驱动的机制使得事件即使乱序到达,流系统也能够计算出精确的结果,保持了事件原本产生时的时序性,尽可能避免网络传输的影响。

flink实现了状态管理,状态就是在流式计算过程中将算子的中间结果保存在内存或文件系统中,等下一个事件进入算子后可以从之前的状态中获取中间结果中计算当前的结果,从而无须每次都基于全部的原始数据来统计结果。

flink通过基于分布式快照技术的checkpoints,将执行过程中的状态信息进行持久化存储,一旦任务出现异常停止,就能从checkpoints中进行任务的自动回复,以确保在处理过程中的一致性。

flink通过序列化和反序列化将所有的数据对象转换成二进制在内存中存储,降低数据存储大小的同时,能更加有效地对内存空间进行利用,降低GC带来的性能下降或任务异常的风险。
通过savepoints将任务执行的快照保存在存储介质上,当任务重启的时候可直接从事先保存的savepoints恢复原有的计算状态,使任务继续照停机之前的状态运行。

你可能感兴趣的:(flink简介)