Вопрос по архитектуре.
Кто-нибудь решал задачу по репликации периодических задач, которые обычно исполняются по крону?
Практическая задача: есть endpoint devices - датчики/кассы/что угодно, с которыми надо периодически связываться.
Устройств много, 100500 штук, периоды у всех разные.
Решение в лоб: по крону запускается процесс, который по своей логике создает таски в очереди, тысяча воркеров эти таски разгребает.
Главная проблема этого подхода - когда ломается сервер или крон, который создает таски в очереди, все останавливается.
На втором сервере крон не включить - будет race condition (у девайсов бывает жесткое ограничение на периодичность запросов).
Как генерить уникальный UUID для периодических задач так, чтобы при их создании на 2 серверах не возникало race condition, я сходу придумать не могу.
Может быть, здесь нужно несколько нод с выбором лидера, как в kafka и блокчейне?
У кого есть мысли как это решать?
Кто-нибудь решал задачу по репликации периодических задач, которые обычно исполняются по крону?
Практическая задача: есть endpoint devices - датчики/кассы/что угодно, с которыми надо периодически связываться.
Устройств много, 100500 штук, периоды у всех разные.
Решение в лоб: по крону запускается процесс, который по своей логике создает таски в очереди, тысяча воркеров эти таски разгребает.
Главная проблема этого подхода - когда ломается сервер или крон, который создает таски в очереди, все останавливается.
На втором сервере крон не включить - будет race condition (у девайсов бывает жесткое ограничение на периодичность запросов).
Как генерить уникальный UUID для периодических задач так, чтобы при их создании на 2 серверах не возникало race condition, я сходу придумать не могу.
Может быть, здесь нужно несколько нод с выбором лидера, как в kafka и блокчейне?
У кого есть мысли как это решать?