Apache zookeeper — это служба координации и настройки в больших распределенных системах, в которой распределенные процессы координируются друг с другом через нее. Он имеет высокую пропускную способность и низкую задержку, поскольку данные хранятся в памяти. Он отличается высокой доступностью, поскольку реплицирует свои данные в кластере хостов. Он отличается высокой надежностью, так как все операции записи/обновления записываются на диск для удобства восстановления.

Теперь давайте рассмотрим проблемы, для решения которых был разработан zookeeper.

1. Выбор лидера: -
Предположим, вы проектируете систему распределенной базы данных, которая имеет одного лидера и несколько последователей, где все записи должны проходить через лидера, а затем реплицироваться на всех последователей. Что делать, если ведущий узел умирает? Какой из узлов-ведомых следует избрать ведущим? Если несколько последователей возьмут на себя роль лидера, это приведет к повреждению данных. Zookeeper использует распределенные блокировки для выбора лидера. Если ведущий узел умирает, все подчиненные соревнуются за блокировку, и тот узел-последователь, который получает блокировку, становится лидером. Это гарантирует, что в кластере может быть только один лидер для бесперебойной работы.

2. Распределенное хранилище значений ключа:-
Zookeeper также действует как распределенное хранилище значений ключа в памяти. Но, пожалуйста, не начинайте размещать здесь все данные вашего приложения. Zookeeper предназначен для хранения только небольшого количества медленно движущихся (статических) данных, которые могут поместиться в память, хотя для надежности они записываются на диск. Zookeeper хранит информацию о состоянии, данные, связанные с конфигурацией, информацию о местоположении и т. д.

3. Обнаружение службы: -
Каждая служба в кластере регистрируется на сервере zookeeper. таким образом, zookeeper хранит централизованную информацию о том, какие службы работают на каких узлах в кластере, поэтому клиентам не нужно запоминать IP-адреса узлов, которые на самом деле не будут жизнеспособными, поскольку узлы когда-нибудь умирают и заменяются новыми узлами. Zookeeper скрывает все подобные сложности.

4. Сбой узла и обнаружение добавления узла: -
Как узнать, какие все узлы в системе исправны (запущены и работают), а какие мертвы, чтобы мы не перенаправляли какой-либо запрос в мертвый узел. Каждый узел в кластере обменивается сигналами пульса с zookeeper через определенные промежутки времени. если zookeeper не получает никакого пульса в течение этого интервала плюс некоторое дополнительное время ожидания, он объявляет узел мертвым. Впоследствии никакие запросы не будут переданы мертвому узлу. Когда новый узел заменяет мертвый узел, он регистрируется на сервере zookeeper и начинает уведомлять пульс.

Как разработчику приложения, вам очень маловероятно, что вам понадобится использовать zookeeper напрямую. Скорее, мы чаще всего используем его косвенно через некоторые другие приложения, такие как Kafka, Hadoop, HBase, Solr и т. д.

Apache Curator предоставляет API высокого уровня поверх zookeeper для простоты использования.

Ниже приведены некоторые конкуренты зоопарка:

  1. и т. д.
  2. "Консул"

Я ценю вас и время, которое вы потратили на чтение этого дня! Следите за новыми блогами о больших данных и других новейших технологиях. Здоровья!