Вот мое требование.
У меня в кластере куча машин (скажем, около 4 - A, B, C, D).
Задача A - опросить базу данных на предмет обновлений (поэтому A может искать новые заказы в таблице заказов).
Как только A получает обновление, оно проверяет, какой из B, C, D является относительно свободным (я думаю, балансировка нагрузки - правильное слово).Затем он приказывает одному из B, C, D начать обработку заказа.Следите за тем, какой заказ обрабатывается на B / C / D.
B, C, D подобны рабам - они получают обновления только от A и уведомляют A, когда они завершают обработку заказа.Если A выходит из строя (из-за проблем с сетью или чего-то в этом роде), один из B, C, D станет ведущим и выполнит обязанности метаданных А. о том, какие задания выполняются, также периодически резервируется на резервный узел E.B / C / D становится новым мастером, он будет читать метаданные из E.
Я знаю, это звучит немного как hadoop, но обработка заказа не может вписаться в модель сокращения карты, поэтому я ищу способыиспользовать другие фреймворки, такие как ZooKeeper, которые могут помочь в координации между A, B, C и D.
Подходит ли здесь ZooKeeper?