apache-flink - 为什么flink中的stateful source需要同步锁

标签 apache-flink stateful

我正在阅读这里的 flink 示例 https://ci.apache.org/projects/flink/flink-docs-release-1.8/dev/stream/state/state.html , 也搞不清楚synchronized block 存在的意义。

我在 google 上搜索了很多但找不到有用的答案,从 flink 的文档中,对于每个并行度都会有一个状态实例,并且在 CounterSource< 的一个实例中还有 run 方法/strong> 不会被不同的线程调用,所以下面的代码有什么意义

val lock = ctx.getCheckpointLock

while (isRunning) {
  // output and state update are atomic
  lock.synchronized({
    ctx.collect(offset)

    offset += 1
  })
}

最佳答案

检查点发生在另一个线程中。此锁的目的是防止源在检查点拍摄状态快照时修改其状态。

关于apache-flink - 为什么flink中的stateful source需要同步锁,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57391309/

相关文章:

flutter - 如何完全处理我的 Stateful Widget?

extjs - 在 ExtJS 中使用重新配置创建有状态网格

filter - 我可以在 kafka 流应用程序的 peek 或过滤器或分支中执行一些状态操作吗?

java - 在 Apache Flink Broadcast 流中应用基于窗口的规则

scala - 如何从sbt/apache flink项目中的资源文件夹中打开文件

apache-flink - Apache Flink 创建了错误的计划

api - 如何将动态值传递给 flink 中的 timeWindow(<dynamic_Time>)

jsf - 为什么我不应该将 JSF SessionScoped bean 用于逻辑?

redis - 从 Redis 读取数据到 Flink