Подходит ли Zookeeper для этого сценария?
Вот мое требование.
У меня в кластере куча машин (скажем, около 4 - A,B,C,D).
Работа А заключается в опросе базы данных на предмет обновлений (поэтому А может искать новые заказы в таблице заказов).
Как только 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 подходит здесь?
2 ответа
Zookeeper - естественный выбор для проблем координации.
Следующие рецепты могут быть использованы для ваших случаев использования.
Работа А заключается в опросе базы данных на предмет обновлений (поэтому А может искать новые заказы в таблице заказов). Как только A получает обновление, оно проверяет, какой из B,C,D является относительно свободным (я думаю, балансировки нагрузки - правильное слово). Затем он приказывает одному из B,C,D начать обработку заказа. Следите за тем, какой заказ обрабатывается на B/C/D.
Распределенная очередь может использоваться для планирования задач.
B,C,D подобны рабам - они получают обновления только от A и уведомляют A, когда они завершают обработку заказа. Если A выходит из строя (из-за проблем с сетью или чего-то еще), один из B,C,D станет мастером и будет выполнять обязанности A.
Похоже, проблема выбора лидера
Метаданные A о том, какие задания выполняются, также периодически копируются на резервный узел E.
Вы можете использовать zookeeper для хранения метаданных.
Zookeeper хорошо подходит для кластерной синхронизации (например, выбор мастера). Еще один связанный (подпроект Zookeeper), который может помочь вам, является бухгалтером
Обратите внимание, что hadoop не использует zookeeper (версия 0.23 использует, но еще не выпущена) - HBase использует его даже в текущей и предыдущих версиях