Подходит ли Zookeeper для этого сценария? - PullRequest
3 голосов
/ 16 декабря 2011

Вот мое требование.

У меня в кластере куча машин (скажем, около 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?

Ответы [ 2 ]

11 голосов
/ 16 декабря 2011

Zookeeper - естественный выбор для проблем координации.

Следующие рецепты могут быть использованы для ваших случаев использования.

Задача A - опросить базу данных на предмет обновлений (поэтому A может искать новые заказы в таблице заказов).Как только A получает обновление, оно проверяет, какой из B, C, D является относительно свободным (я думаю, балансировка нагрузки - правильное слово).Затем он приказывает одному из B, C, D начать обработку заказа.Отслеживание того, какой заказ обрабатывается в B / C / D.

Распределенная очередь может использоваться для планирования задач.

B, C, D подобны рабам - они получают обновления только от A и уведомляют A, когда они завершают обработку заказа.Если A выходит из строя (из-за проблем с сетью или чего-то еще), один из B, C, D станет мастером и будет выполнять обязанности A.

Похоже на выборы лидера проблема

Метаданные A о том, какие задания выполняются, также периодически копируются на резервный узел E.

Вы можете использовать zookeeper для хранения метаданных.

3 голосов
/ 16 декабря 2011

Zookeeper хорошо подходит для кластерной синхронизации (например, выбор мастера). Еще один связанный (подпроект Zookeeper), который может вам помочь, это бухгалтер

Обратите внимание, что hadoop не использует zookeeper (версия 0.23 использует, но еще не выпущена) - HBase использует его даже в текущей и предыдущих версиях

...