Zookeeper Data 1
Чек-лист заданий
Полный список дайджестов
Задача - научиться ипользовать Apache Zookeeper для хранения настроек приложения
Какие задачи решены?
- Сохранение настроек из строки
- Получение настроек от zookeeper’a
- Парсинг настроек из строки, а также их преобразование
- Создание нескольких инстансов zookeeper’а для тестирования синхронизации между узлами
Что планирую сделать в дальнейшем?
- Хочу рассмотреть случаи конфликтной работы с zookeeper:
- Одновременное создание node с одинаковыми ключами.
- Одноврменное обновление node с одинаковыми ключами.
- Попытка одноврменного получения ассоцированных данных и удаление node.
- Обновление данных во время долгой транзацкции.
- Попытаться поднять несколько интсансов zookeeper и проверить происходит ли репликация данных автоматически.
- Написать механизм обновления настроек в zookeeper.
Что использовал?
Для решения этой задачи использовались следующие инструменты:
Apache Curator Framework- высоко уровенвая API-библиотека, упрощаяющая работу с Apache Zookeeper.Typesafe Config- библиотка для прасинга конфигов из файла в форматах JSON, CONF, PROPERTIES
Структура.
ConfigLoader- наследуется от ZKClient, отвечает за выгрузку конфигов по указанным узламPropertiesConverter- преобразует конфиги с точечной нотацией в пространство имен zookeeperPropertiesParser- парсер конфигов из строкиRunner- запуск площадкиSettingsReader- наследуется от ZKClient, отвечает за получение конфигов из указанных узловZKClient- создает клиента curator framework для упрощенной работы с zookeeper
Весь код доступен в репозитории
Краткая памятка по найденному материалу.
При решении задачи изучил:
- Распределенный консенсус. Теорема CAP (consistency, availability, partition tolerance).
- Consistency - согласованность данных: данные на разных узлах не противоречат друг другу.
- Availability - доступность данных: корректный ответ на каждый запрос.
- Partition tolerance - устойчивость к разделению: разделение распредленной системы не приводит к отказу раздельных частей. В zookeeper это терема выполняется и происоходит жертвование доступностью.
- Пространство имен в zookeeper подобна файловой системе в UNIX-подобых ОС. Узлы назваются ZNode.
- Эфемерные узлы. Узлы, существующие в рамках одной сессии (соединения с узлом). Такие узлы не могут иметь потомков. Могут использоваться при подключении сервиса к распределенной системе.
- Максимальный размер данных на узле составляет 1 MB.
- Apache Curator создан Джорданом Циммерманом.