Digests d4n13l

Zookeeper Data 1

Чек-лист заданий

Полный список дайджестов

Задача - научиться ипользовать Apache Zookeeper для хранения настроек приложения

Какие задачи решены?

  • Сохранение настроек из строки
  • Получение настроек от zookeeper’a
  • Парсинг настроек из строки, а также их преобразование
  • Создание нескольких инстансов zookeeper’а для тестирования синхронизации между узлами

Что планирую сделать в дальнейшем?

  1. Хочу рассмотреть случаи конфликтной работы с zookeeper:
    • Одновременное создание node с одинаковыми ключами.
    • Одноврменное обновление node с одинаковыми ключами.
    • Попытка одноврменного получения ассоцированных данных и удаление node.
    • Обновление данных во время долгой транзацкции.
  2. Попытаться поднять несколько интсансов zookeeper и проверить происходит ли репликация данных автоматически.
  3. Написать механизм обновления настроек в zookeeper.

Что использовал?

Для решения этой задачи использовались следующие инструменты:

  1. Apache Curator Framework - высоко уровенвая API-библиотека, упрощаяющая работу с Apache Zookeeper.
  2. Typesafe Config - библиотка для прасинга конфигов из файла в форматах JSON, CONF, PROPERTIES

Структура.

  • ConfigLoader - наследуется от ZKClient, отвечает за выгрузку конфигов по указанным узлам
  • PropertiesConverter - преобразует конфиги с точечной нотацией в пространство имен zookeeper
  • PropertiesParser - парсер конфигов из строки
  • Runner - запуск площадки
  • SettingsReader - наследуется от ZKClient, отвечает за получение конфигов из указанных узлов
  • ZKClient - создает клиента curator framework для упрощенной работы с zookeeper

Весь код доступен в репозитории

Краткая памятка по найденному материалу.

При решении задачи изучил:

  1. Распределенный консенсус. Теорема CAP (consistency, availability, partition tolerance).
    1. Consistency - согласованность данных: данные на разных узлах не противоречат друг другу.
    2. Availability - доступность данных: корректный ответ на каждый запрос.
    3. Partition tolerance - устойчивость к разделению: разделение распредленной системы не приводит к отказу раздельных частей. В zookeeper это терема выполняется и происоходит жертвование доступностью.
  2. Пространство имен в zookeeper подобна файловой системе в UNIX-подобых ОС. Узлы назваются ZNode.
  3. Эфемерные узлы. Узлы, существующие в рамках одной сессии (соединения с узлом). Такие узлы не могут иметь потомков. Могут использоваться при подключении сервиса к распределенной системе.
  4. Максимальный размер данных на узле составляет 1 MB.
  5. Apache Curator создан Джорданом Циммерманом.