我正在处理一个用例,其中我计划了一个cron作业(通过石英),该作业从db中读取某些条目并进行处理。 现在,在每个日程表中,我可以获得需要处理的数千条记录。处理每条记录需要时间(以秒/分钟为单位)。当前,所有这些记录都在单个节点(石英选出的节点)上进行处理。现在,我面临的挑战是并行处理这些记录。请帮助我解决以下问题:
答案 0 :(得分:0)
创建cron作业以所需的频率分别在每个主机上运行。您将需要对每个记录进行某种形式的锁定,或者对记录集进行某种形式的范围锁定,以确保服务器处理相互排斥的记录集。
例如:您可以将以下新字段添加到所有记录:
由服务器锁定: 锁定持续时间(或锁定到期时间):
每次运行时,每个cron都会选择一组已过期或空锁的记录,然后通过放置这两个条目来获取少量记录的锁。然后继续处理它们。如果崩溃或卡住,则锁将过期,否则将在完成时释放。