Возможно, вы сможете использовать Amazon SWF, но это кажется излишним/сложным.
Существует также Amazon Pipeline. Вероятно, это правильный ответ, но для настройки требуется немного чтения.
Проще всего запланировать свою работу на всех ящиках, и база данных объявит победителя.
A) Вы можете «заблокировать» необработанные заказы в БД, а затем обработать их. Пока вы блокируете одну транзакцию, другие рабочие получат 0 заказов (или несколько новых заказов) для обработки.
Б) Вы можете создать специальную таблицу с одной строкой, которую задание заблокирует. Что-то вроде «обновить work_table set worker = 'mybox', work_start = now(), где worker = ''».
Если вы хотите быть устойчивым к смерти коробки рабочего, вам нужно создать более сложные правила: рабочие могут оставаться без дела, пока рабочий не отметит свою работу как выполненную. Если задание не завершается вовремя, они могут предположить, что первый работник умер, попытаться украсть у него блокировку и выполнить задание самостоятельно.
Если у вас нет базы данных, вы всегда можете использовать SDB (Simple DB) или DynamoDB. Попадание в БД несколько раз в день определенно подходит для бесплатного уровня.
Все это будет состоять всего из 20-50 строк кода, если вы все сделаете правильно.
person
Community
schedule
24.12.2013