分配调度程序作业的记录处理

时间:2019-03-09 07:24:36

标签: parallel-processing cron quartz-scheduler scheduler distributed-computing

我正在处理一个用例,其中我计划了一个cron作业(通过石英),该作业从db中读取某些条目并进行处理。 现在,在每个日程表中,我可以获得需要处理的数千条记录。处理每条记录需要时间(以秒/分钟为单位)。当前,所有这些记录都在单个节点(石英选出的节点)上进行处理。现在,我面临的挑战是并行处理这些记录。请帮助我解决以下问题:

  1. 我如何将这些记录/任务分发到机器集群
  2. 如果任何计算机在处理了很少的记录后出现故障,则其余记录应由集群中的正常节点处理
  3. 收到所有记录处理已完成的信号。

1 个答案:

答案 0 :(得分:0)

创建cron作业以所需的频率分别在每个主机上运行。您将需要对每个记录进行某种形式的锁定,或者对记录集进行某种形式的范围锁定,以确保服务器处理相互排斥的记录集。

例如:您可以将以下新字段添加到所有记录:

由服务器锁定: 锁定持续时间(或锁定到期时间):

每次运行时,每个cron都会选择一组已过期或空锁的记录,然后通过放置这两个条目来获取少量记录的锁。然后继续处理它们。如果崩溃或卡住,则锁将过期,否则将在完成时释放。