javascript - 如何在多个 Docker 副本中仅运行一次计划代码?

标签 javascript docker concurrency docker-swarm

我在 Docker 中有一个容器。它具有三个副本。我还有一个调度程序(库),它每分钟运行一次并调用我的代码中的函数。由于我还有两个副本,因此它调用了三次:(

我想要实现的是:

当调度程序调用代码时,第一个副本应执行该任务,其他两个副本应检测到并跳过执行该任务。

我怎样才能实现这个目标?

最佳答案

您应该将这两者分解为各自的服务。

服务 1 将使应用程序运行副本=3

服务 2 将仅运行带有replicas=1 的调度程序

例如,如果您在 Laravel 中,您可以将所有代码放在一个镜像中,只需更改服务命令以在调度程序服务中运行。

如果应用程序还启动了调度程序,并且您不能自己启动调度程序,那么上述方法仍然有效,您只是不会向第二个服务发送任何连接,因为第一个服务正在执行那工作。

关于javascript - 如何在多个 Docker 副本中仅运行一次计划代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50708371/

相关文章:

javascript - Angular 谷歌地图 api key 未通过

javascript - 在创建新实例之前对值进行 react 过滤器

django - 如何修复此错误 django.db.utils.OperationalError : could not translate host name "db" to address . Docker

java - 优化线程池大小

database - 具有并发写入功能的 SQLite 替代方案(Delphi)

javascript - 如何访问端点中的 sveltekit session ?

javascript - 未终止的字符串 literal.ts(1002)

docker - 在 Docker 中运行简单的 Java Gradle 应用程序

php - 在 Docker Swarm 模式下链接应用程序

Java:通过从另一个线程以某种方式发出信号来从主线程调用方法