Имеются 5 серверов, которые будут исполнять задачу, и один - который задачи выдаёт.
И есть тип задач, который должен выполняться одновременно на нескольких серверах. Он не может выполняться "по мере освобождения серверов", или "на одном сервере одна задача за другой". Только на всех одновременно.
Задачи ресурсоёмкие и сервер, раздающий задачи действует по принципу "проснулся - поставил задачи - уснул - проснулся через какое-то время - проверил, сделано ли - уснул"
Как организовать раздачу заданий? Делать ли это через какой-то сервер очередей (какой?) или проще написать свою систему с блокировками?
Что значит "одновременно"? 5 сервов должны начать делать 1 задачу в одинаковое время? Смахивает на задачу синхронизации стрелков, которую надо реализовать через очередь сообщений.
начать должны одновременно (плюс-минус полсекунды)
Как если бы раздающий сервер отправил курл-запросы ко всем исполнителям. Правда приведённый пример с курл-запросом не обеспечивает во-первых, очереди, во-вторых, даже приблизительной гарантии, что запустились все.