在Docker集群上安排应用程序Spring

问题描述 投票:0回答:1

我需要在具有不同节点的Docker集群中批处理我的应用程序Spring。我在docker-compose上找到了set replicas = 1的解决方案,但在我看来,这不是最好的解决方案,因为它最大限度地降低了Docker的潜力。

一些帮助或建议?谢谢。

spring docker kubernetes batch-processing schedule
1个回答
0
投票

如果我理解你正确,你想运行一个spring应用程序的几个副本(如果这是由docker,k8s管理,它是独立的,等等)。然后,您希望仅在一个实例上启动后台作业。对?在这种情况下,我可能会建议你看看ShedLock

ShedLock只做一件事。它确保您的计划任务最多同时执行一次。如果正在一个节点上执行任务,它将获取一个锁,该锁可防止从另一个节点(或线程)执行相同的任务。请注意,如果一个任务已经在一个节点上执行,则其他节点上的执行不会等待,只是跳过它。

它在Spring中顺利集成。例如,计划的批处理作业可能如下所示:

@Scheduled(cron = ...)
@SchedulerLock(name = "scheduledTaskName")
public void scheduledTask() {
   // do something
}

可以在引擎盖下使用各种选项来实现分布式锁定,例如, MySQL,Redis,Zookeeper等。

© www.soinside.com 2019 - 2024. All rights reserved.