Kafka Streams 远程状态目录

Kafka Streams remote state dir

我知道我们可以在 kafka 流中配置一个 state.dir 以进行有状态操作。状态是实例本地的。这样我们就可以进行快速查找。

这种方法的一个问题是,如果您的应用程序在容器化环境中运行,一旦您 restart/redeploy 您的应用程序,状态就会丢失。一种解决方案是将 state.dir 配置到外部(网络附加)目录。缺点是键查找会变慢,但好处是状态在容器化环境之外持久存在,因此即使在容器重新启动后也能保持状态。

你们认为这是防止在容器化环境中重启时不必要的状态恢复的好方法吗(除了 kubernetes 中的有状态集,我们还没有使用 k8s)?

One problem with this approach is that if your application runs on containerized environment, the state is lost once you restart/redeploy your application

不一定。您可以将磁盘附加到您的容器并使用有状态集 (Kubernetes),您可以 re-attach 相同的磁盘并因此保留状态。

比照https://www.confluent.io/kafka-summit-sf18/deploying-kafka-streams-applications/

网络文件系统经常会导致问题。不建议使用它们。为了更快 fail-over,您可以改用备用任务。