Мне нужно создать распределенную систему, планировщик отправляет задачи рабочим в нескольких узлах. Каждой задаче присваивается идентификатор, и он может выполняться более одного раза, запланированный планировщиком (обычно один раз в час).Распределенные рабочие, обеспечивающие запуск одного экземпляра задачи
Мое единственное требование заключается в том, что задача с конкретным идентификатором не должна выполняться дважды в кластере. Я могу подумать о дизайне, где планировщик имеет блокировку для каждого идентификатора задачи и отправляет задачу соответствующему работнику. Как только рабочий закончил, блокировка должна быть освобождена, и планировщик может запланировать ее снова.
Что должен включать мой дизайн для обеспечения этого. Меня беспокоят случаи, когда задача отправляется работнику, который запускает задачу, но затем не сообщает об этом планировщику.
Какова была бы лучшая практика в этом сценарии, чтобы гарантировать, что только один экземпляр задания всегда выполняется одновременно?