Flink的流处理与批处理


Flink通过执行引擎,能够同时支持批处理与流处理任务。

在执行引擎这一层,流处理系统与批处理系统最大的不同在于节点的数据传输方式。


流处理系统


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


批处理系统


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


总结:


这俩种数据传送模式是俩个极端,对应是流处理系统对低延迟的要求和批处理系统对高吞吐量的要求。

Flink执行引擎采用了一种十分灵活的方式,同时支持了这两种数据传输模型。Flink以固定的缓存块为单位进行网络数据传输,用户可以通过设置缓存块超时值指定缓存块的传输时机。

如果缓存块的超时值为0,则flink符数据传输方式类似上文所提到到流处理系统的标准模型,此时系统可以或得最低的处理延迟。

如果缓存块的超时值为无限大,则Flink的数据传输方式类似上文所提到批处理系统标准模型,此时系统可以或得最高的吞吐量

同时缓存块的超时值也可以设置为0到无限大之间的任意值,缓存块的超时阀值越小,则Flink流处理执行引擎的数据处理延迟越低,但吞吐量也会降低,反之亦然,通过整缓存的超时阀值,用户可以根据需求灵活地权衡系统延迟和吞吐量。