Flink的流处理与批处理
Flink通过执行引擎,能够同时支持批处理与流处理任务。
在执行引擎这一层,流处理系统与批处理系统最大的不同在于节点的数据传输方式。
流处理系统
对于一个流处理系统,其节点间数据传输的标准模型是:当一条数据被处理完成后,序列化到缓存中,然后立刻通过网络传输到下一个节点,由下一个节点继续处理。
批处理系统
而对于一个批处理系统,其节点间数据传输的模型是:当一条数据被处理完成后,序列化到缓存中,并不会立刻 通过网络传输到下一个节点,当缓存写满,就持久化本地磁盘上。当所有数据都被处理完成后,才开始将处理后的数据通过网络传输传输到下一个节点。
总结:
这俩种数据传送模式是俩个极端,对应是流处理系统对低延迟的要求和批处理系统对高吞吐量的要求。
Flink执行引擎采用了一种十分灵活的方式,同时支持了这两种数据传输模型。Flink以固定的缓存块为单位进行网络数据传输,用户可以通过设置缓存块超时值指定缓存块的传输时机。
如果缓存块的超时值为0,则flink符数据传输方式类似上文所提到到流处理系统的标准模型,此时系统可以或得最低的处理延迟。
如果缓存块的超时值为无限大,则Flink的数据传输方式类似上文所提到批处理系统标准模型,此时系统可以或得最高的吞吐量
同时缓存块的超时值也可以设置为0到无限大之间的任意值,缓存块的超时阀值越小,则Flink流处理执行引擎的数据处理延迟越低,但吞吐量也会降低,反之亦然,通过整缓存的超时阀值,用户可以根据需求灵活地权衡系统延迟和吞吐量。