Zookeeper для назначения шардовых индексов - PullRequest
3 голосов
/ 15 марта 2012

Я видел некоторые посты в Интернете об использовании Zookeeper для назначения номеров шардов серверам при их подключении к сети (при условии, что вы разделяете данные в кластере) - но я не могу найти пример кода Java, как это сделатьэтот.У кого-нибудь это уже работает?Спасибо.

1 Ответ

3 голосов
/ 16 марта 2012

Существует много деталей для разделения данных в кластере, таких как репликация и восстановление после сбоя.Подразумевая, что я имею в виду, вы имеете в виду, что у вас есть N узлов, и каждый узел должен обрабатывать 1 / N -й запросов, и что клиенты могут обнаружить, какие серверы работают.

Сначала вы создаете постоянный узел /service.Каждый сервер при запуске создает эфемерный дочерний элемент /service, что-то вроде /service/hostname:port.Клиенты поддерживают часы на /service и получают уведомления о добавлении и удалении детей (клиенты должны обновлять свои часы после каждого уведомления).Таким образом, клиент знает, какие серверы обслуживают запросы, и может распределять запросы соответствующим образом (циклически, произвольно).Когда сервер отключается, его эфемерный узел исчезает, и клиенты могут прекратить отправлять ему запросы.

Если вы ищете библиотеку zookeeper, куратор , вероятно, является лучшим.Клиенты будут использовать Path-Cache , в то время как сервер просто создает эфемерный узел.

...