在Flink有可能有多个工人的全球性国家吗?

ztyzrc3y  于 2021-06-25  发布在  Flink
关注(0)|答案(1)|浏览(205)

在flink文档的每一个地方,我都看到一个状态对于一个map函数和一个worker都是独立的。这在独立的方法中似乎很强大,但是如果flink在集群中运行呢?flink能处理一个全局状态吗?在这个全局状态下,所有工作人员都可以添加数据并查询数据?
来自Flink关于国家的文章:
为了在这种设置下获得高吞吐量和低延迟,任务之间的网络通信必须最小化。在flink中,流处理的网络通信只发生在作业的操作符图(垂直)的逻辑边上,因此流数据可以从上游操作符传输到下游操作符。
但是,操作符的并行示例之间没有通信(水平)。为了避免这种网络通信,数据局部性是flink的一个关键原则,它强烈地影响着状态的存储和访问方式。

xxb16uws

xxb16uws1#

我认为flink只支持操作符上的状态和键控流上的状态,如果需要某种全局状态,就必须将数据存储和恢复到某种数据库/文件系统/共享内存中,并将这些数据与流混合。
无论如何,以我的经验,通过良好的处理管道设计和以正确的方式对数据进行分区,在大多数情况下,您应该能够应用分治算法或mapreduce策略来存档您的需要
如果在系统中引入某种全局状态,那么这种全局状态可能是一个很大的瓶颈。所以要不惜一切代价避免。

相关问题