gpt4 book ai didi

java - 在多个 Pod 之间共享状态(变量)

转载 作者:行者123 更新时间:2023-12-02 05:52:34 24 4
gpt4 key购买 nike

我有两个 Pod,每个 Pod 运行一个 ServiceA 实例。 ServiceA 使用在单个单独的 pod 上运行的数据库。通过此设置,我能够流畅地进行部署,并且还可以获得后备服务。

现在我的 ServiceA 有一个常规任务 GatheringTask,它从外部服务收集信息,处理它们并将其存储到它的数据库中。我想防止的是运行 ServiceA 的两个 pod 同时执行此操作。

我想到的第一个解决方案相对简单。我在 db pod 中创建一个新表,在其中存储 GatheringTask 的状态,因此 ServiceA 的每个实例在启动其 GatheringTask 之前都会检查数据库中保存的状态。如果 on 已经在运行,则不再执行。这会产生相当大的开销,因为我必须一直更新和读取数据库。还有更多代码。

现在我想知道,是否有更直接的方法在 Pod 之间共享状态?有没有办法,我可以共享 env 属性,甚至在 pod 之间映射共享内存,这样我就不需要绕道第三个 pod 了?我的 Pod 使用 kuberenetes 进行管理。

最佳答案

解决此任务的正确方法是使用分布式锁管理器,例如 ZooKeeper。它可以作为 docker、Kubernetes 友好的镜像提供,并具有适当的配方,例如:https://curator.apache.org/curator-recipes/shared-reentrant-lock.html它可以提供可靠的锁定机制。

关于java - 在多个 Pod 之间共享状态(变量),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56037854/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com