我在Docker中有一个容器。它有三个副本。我还有一个调度程序(库),它每分钟运行一次并在我的代码中调用一个函数。由于我有两个副本,它会调用三次:(
我想要实现的目标是:
当调度程序调用代码时,第一个副本应该执行该任务,另外两个应该检测到该任务并跳过执行该任务。
我怎样才能做到这一点?
答案 0 :(得分:1)
你应该把这两个分解为他们自己的服务。
服务1将使应用程序运行replicas = 3
服务2只运行replicas = 1
的调度程序例如,如果您在Laravel中,则可以将所有代码放在一个映像中,只需将服务命令更改为在调度程序服务中运行即可。
如果应用程序也启动了一个调度程序并且您不能单独启动调度程序,那么上面的代码仍可正常工作,您将不会发送任何连接到第二个服务,因为第一个服务正在执行那工作。