gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 22:35:24 26 4
gpt4 key购买 nike

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

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

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

最佳答案

您可以将quartz调度程序与JDBC存储结合使用。这将自动满足您的要求。

简而言之:“负载平衡会自动发生,集群中的每个节点都会尽快触发作业。当触发器的触发时间发生时,第一个获取它的节点(通过在其上放置锁)是将触发它的节点。”

详情请引用官方链接-http://www.quartz-scheduler.org/documentation/quartz-2.3.0/configuration/ConfigJDBCJobStoreClustering.html

关于java - 如果 Kubernetes 上存在多个 pod,则从单个 pod 运行 Spring 中的 Scheduled Cron 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58528489/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com