Flink四大基石和流处理,批处理

之前介绍了FLink的一些基本原理,架构部署,那么Flink中的四大基石是什么?我们来研究研究这玩意

我们了解到FLink中有四大基石:Checkpoint stage Time Window这四部分

那么首先我们来看看

Checkpoint机制是Flink中最重要的一个特性,FLink基于chandy_Lamport算法实现了一个分布式的一致性的快照,从而提供了一致性的语义,提供了一致性的语义之后,Flink为了让用户编程更加轻松,更加容易的去管理状态,还提供了一套stage API (也就是状态管理,状态机制),这个stage API里面包括了ValueStage,ListStage,MapStage。近期添加了BroadcastStage,能够使得Stage API能够自动享受这种一致性的语义。
除此之外,Flink实现了Watermark机制,能够支持基于事件时间处理,或者也可以说是 基于系统时间的处理,能够容忍数据的延时,容忍数据的迟到,容忍乱序的数据。
另外流计算中一般会对流计算进行开窗,基于一个怎么样的窗口来做这个流计算,Flink提供开箱即用的各种窗口,比如:滑动窗口 ,滚动窗口 ,会话窗口,还有更加灵活的自定义的窗口

总而言之

	Checkpoint 是基于chandy_lamport算法实现分布式计算任务的一致性语义
	
	Stage 就是flink的状态机制,flink天生支持stage,stage可以认为程序的中间计算结果或者是历史计算结果;
	
	Time:Flink中支持基于事件的时间处理进行计算,spark streaming只能按照process time 进行处理。
	基于事件的计算我们能够解决数据迟到和乱序等问题
	
	Window Flink 提供了更多丰富的window,基于时间,基于数量,session,window同样支持滚动和滑动窗口的计算。

那么我们再来看看Flink的流处理批处理
众所周知,Flink通过执行引擎,能够同时支持批处理与流处理任务。
流处理系统与批处理系统最大不同在于节点间的数据传输方式

1.流处理系统

流处理系统,其节点间数据传输的标准模型是:当一条数据被处理完成后,序列化到缓存中,然后立刻通过网络传输到下一个节点,由下一个节点继续处理。

2 批处理系统

==批处理系统,其节点间数据传输的标准模型是:当一条数据被处理完成后,序列化到缓存中,并不会立刻通过网络传输到下一个节点,当缓存写满,就持久化到本地硬盘上,当所有数据都被处理完成后,才开始将处理后的数据通过网络传输到下一个节点。 ==

3.flink的流处理和批处理

Flink的执行引擎采用了一种十分灵活的方式,同时支持了这两种数据传输模型:
• Flink以固定的缓存块为单位进行网络数据传输,用户可以通过设置缓存块超时值指定缓存块的传输时机。如果缓存块的超时值为0,则Flink的数据传输方式类似上文所提到流处理系统的标准模型,此时系统可以获得最低的处理延迟
• 如果缓存块的超时值为无限大,则Flink的数据传输方式类似上文所提到批处理系统的标准模型,此时系统可以获得最高的吞吐量
• 同时缓存块的超时值也可以设置为0到无限大之间的任意值。缓存块的超时阈值越小,则Flink流处理执行引擎的数据处理延迟越低,但吞吐量也会降低,反之亦然。通过调整缓存块的超时阈值,用户可根据需求灵活地权衡系统延迟和吞吐量

你可能感兴趣的:(Flink,flink)