我使用Docker swarm模式运行多个Java(Spring Boot)应用程序实例,我想每天运行两次计划作业,但只需要一个应用程序实例触发它。
是否有任何机制可以配置Spring Boot应用程序和Docker swarm来运行该计划任务一次?
我在Jive的房产中见过:
<property name="allNodes" value="false"/>
现在我想知道我是否可以在我的基础设施上做类似的事情。
应用程序实例位于同一网络中,因此我认为网络发现不会成为问题。
答案 0 :(得分:1)
您是否可以将一个节点创建为主节点,并且预定作业将仅在主节点中运行。如果失败,其他节点将被提升并成为主节点,因此有资格运行该作业。
或者你可以创建一个分布式锁(Hazelcast支持分布式锁)。每个节点都会调用tryLock()。节胜将允许运行该作业。