当前位置: 首页 > 知识库问答 >
问题:

如何避免多个计划任务并行运行

党星鹏
2023-03-14

我正在使用 Kubernetes 作为容器编排器构建一个微服务应用程序。该应用程序现已启动并运行,但我有其他问题。那是在我的服务中,我每天都有一个计划任务运行,当服务部署时,将运行多个服务实例(通过设置副本编号),创建多个同时运行的任务。我期望的是只有一个服务任务实例将运行,而不是多个实例。有什么技术可以处理这种情况吗?

  1. 库伯内特斯
  2. Asp.net核心构建微服务
  3. CI/CD的基岩实现
  4. Fabrikate
  5. Traefik作为负载均衡器

请帮我一下,谢谢!

共有1个答案

姬英武
2023-03-14

您有两种方法可以解决此问题:

1) 在应用程序中使用任务协调。就像有一个锁,只有拥有锁的应用程序才能运行任务。看看ZooKeeper的分布式锁逻辑。这是首选解决方案。

2) 使用每天运行的Kubernetes CronJob。

 类似资料:
  • > 我需要在执行前一个任务后以不同的延迟一个接一个地运行计划的任务。示例。有一个任务列表和延迟列表。 现在我需要运行task1通过100ms,task2在task1之后通过9ms,task3在task2之后通过22ms等等。 我正在使用javafx。任务可以使用一些UI更新方法,例如更改节点位置。这迫使我使用平台。runLater()方法,因为如果不这样做,则会出现异常“Not on FX app

  • 有一个Spring引导应用程序,通过它我可以创建一个cron并安排任务。但是,当应用程序的多个实例被部署时,cron会在所有实例中被触发并导致重复。是否有任何配置需要在Spring级别完成? 我们正在使用 redis 并使用可以在其他情况下控制的标志,但需要更好的方法来解决此问题。甚至尝试了雷迪森图书馆,没有多大帮助。 甚至需要在实例关闭时考虑故障转移情况。请帮助。 谢谢

  • 我正在尝试用ECS Fargate设置一个计划的任务,但我不知道为什么它没有运行。我可以使用确认任务正常工作,但当我试图按计划触发它时,得到的只是一堆没有任何解释的'failedinvocations'。 虽然我知道规则正在被触发,所以这是一个好的迹象。见下方截图: 但每次触发它时,只有一个“FailedInvocation”。安排规则如下: 谢谢 编辑:区域现在支持此操作。请参阅备注。

  • 我有一个批处理(*. bat)文件,触发一个Python脚本,这个脚本需要大约25分钟来完成交互式(通过命令提示符手动)。这个批处理文件需要每天早上运行。 当我尝试在Windows任务调度器上将其设置为计划任务并在那里运行时,所用的时间几乎是交互时的两倍。即使我在xml中将优先级设置从默认的7设置为4(更高的优先级),也没有任何区别。更改优先级设置仅适用于I/O优先级,但不适用于内存优先级,内存优

  • 我有一大堆Scalaz任务。创建方式如下: 我希望这些任务并行运行。以随机顺序打印数字,不要花5秒钟(每个任务有50个任务和100毫升睡眠)。 但是,很明显,每个任务需要100毫秒,所有任务都需要5秒钟,并且创建的列表是有序的。 如何并行运行它们?任务在哪里运行线程?

  • 问题内容: 是否可以在确切指定的时间仅安排一次Spring服务方法?例如,当前时间是下午2点,但是当我按下操作按钮时,我希望我的服务方法从晚上8点开始。我熟悉@Scheduled批注,但不确定如何编写cron表达式以使其不定期运行。这一次,每天晚上8点触发。 有什么建议? 问题答案: 您可以使用Spring的TaskScheduler的实现之一。我在下面提供了一个示例,该示例不需要太多配置(包装了