当不同的节点有不同的时间时,如何使用spring批处理来平衡作业?

时间:2014-11-24 08:53:48

标签: quartz-scheduler spring-batch

我们有很多批处理工作要处理 现在的问题是我们有7个不同的节点,它们部署了相同的应用程序(我们使用JBoss AS 7.1.1作为应用程序服务器),我们使用Spring批处理使用石英调度程序来安排作业。它工作得很好。
但是我们的节点中有一个是差异时间,然后是其他节点(例如假设我们有3个节点A,B,C,所以当C在那里时间为12:00:00时,A和B中的时间为11:58:00 )并且所有这些节点都由客户端维护。 因此,当任何触发器触发时(我们使用cron触发器)作业仅在单个节点上运行 现在特定的时间(从12:00开始)我们需要触发多个作业,然后所有这些作业都在一个节点上运行,因为所有这些作业都在其他节点之前超时(因为12:00时钟发生在A和B之前的C)。 我想知道我们是否有任何这样的机制,我们可以参考任何集中的时间来超时所有批处理过程(例如,当C上有12个O时钟但是在运行批处理作业时不要超时批处理在DB中有12个O时钟..? 在此先感谢:)。

2 个答案:

答案 0 :(得分:0)

要求您的客户使用NTP同步服务器。您的所有服务器都应具有相同的时间周期。如果您允许服务器彼此不同步,您将遇到许多其他问题。

答案 1 :(得分:0)

Spring Batch提供了通过spring-batch-integration模块中的消息启动作业的工具。我建议从中心点管理调度,并根据服务器运行作业的可用性将消息发送到要接收的服务器。这也将解决时间同步的问题,因为调度片将在中心点处理。