我的部署扩展到多个pod。要求是,每当应用程序启动时,我想要执行一段代码。但我只需要一个pod来执行这些代码。如何才能做到这一点?
现在我有一种方法-我在我的DB中设置了一个标志,并让我的pod读取该标志,谁先读取并锁定该标志将必须处理该任务。
我的方法有什么缺点吗?有更好的方法吗?
我相信这是正确的方法。所有pod都需要有一种方法来了解其他人是否正在处理任务,通过DB执行是最好的选择。唯一的缺点是,如果当pod接收它时,不能更新标志状态。在这种情况下会发生什么?
我能想到的另一个选项可能是将消息发布到消息队列(在您的pod之外维护的队列,云平台?)这个想法是,每当一个pod激活时,它们就会检查队列并处理它。这与你使用的数据库方法类似。