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

问题描述 投票:0回答:1

我正在研究一个用例,我在其中安排了一个cron作业(通过quartz),它从db读取某些条目并处理它们。现在,在每个计划中,我可以获得需要处理的数千条记录。处理每条记录需要时间(以秒/分钟为单位)。目前,所有这些记录都在单个节点上处理(由quartz选择的节点)。现在我的挑战是并行化这些记录处理。请帮我解决以下问题:

  1. 我如何将这些记录/任务分发到一组机器上
  2. 如果任何计算机在处理少量记录后失败,则剩余记录应由集群中的健康节点处理
  3. 获取所有记录处理完成的信号。
parallel-processing cron quartz-scheduler scheduler distributed-computing
1个回答
0
投票

创建cron作业,以便以所需频率在每台主机上单独运行。您需要在记录集上的每个记录或某种形式的范围锁定上使用某种形式的锁定,以确保服务器处理互斥的记录集。

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.