如果 Kubernetes 上存在多个 pod,则从单个 pod 运行 Spring 中的 Scheduled Cron 方法

Man*_*tra 6 java spring quartz-scheduler spring-boot kubernetes

我正在将 Kubernetes 上的 Spring 应用程序从单个 pod(docker 映像)迁移到多个 pod,以进行负载处理。但我面临一个问题,因为我的应用程序中有一个 cron 调度程序方法,该方法每天在特定时间运行。如果我部署多个 Pod,它们都会同时运行,因此多个条目会保存到我的数据库中,但我只需要一个 Pod 来执行该功能。

我想过生成 java uuid 并将其保存在数据库中,因为该函数开始在每个 pod 上执行。然后在同一个函数中,设置一个睡眠计时器(比如说 5 秒),并比较每个 pod 中数据库中的 uuid。最新更新数据库中值的 pod 将匹配该值并执行前面的方法。

这是一个好方法吗?如果没有,请提供解决此问题的建议。

cpe*_*z08 0

此外,您可以将工作负载转移到一个独立的进程,这将很有帮助且更干净,请查看https://kubernetes.io/docs/concepts/workloads/controllers/cron-jobs/这会给您一个想法。