多节点环境中的计划作业

时间:2014-04-26 00:30:28

标签: java spring cron distributed

我正在通过Cron安排一定时间间隔(例如,每天下午1点)运行的预定工作。我正在使用Java和Spring。

编写预定作业很容易 - 它确实:抓住人员列表将来自db的某些条件,为每个人做一些计算并触发消息。

我正在本地和测试中处理单节点环境,但是当我们开始生产时,它将是多节点环境(带有负载平衡器等)。我担心的是多节点环境会如何影响预定作业?

我的猜测是我能够(或很可能会)最终触发重复的消息。

  • 机器1:抓住人员列表,进行计算
  • 机器2:抓住人员列表,进行计算
  • 机器1:触发消息
  • 机器2:触发消息

我的猜测是否正确?

避免上述问题的建议解决方案是什么?我是否需要创建主/从分布式系统解决方案来管理多节点环境?

1 个答案:

答案 0 :(得分:1)

如果您有三个Tomcat实例之类的东西,例如,每个负载在Apache后面均衡,并且在每个应用程序运行时,那么您将有三个不同的触发器,您的作业将运行三次。我不认为你将拥有一个带有分布式作业执行的多节点环境,除非有一种分配作业部分的机制。 如果您尚未查看此项目,请查看Spring XD。它处理Spring Batch Jobs,可以在distributed mode中运行。