25 октября состоится Hadoop Day в рамках Dev Time, где я буду выступать с докладом о Apache Zookeeper
Showing posts with label zookeeper. Show all posts
Showing posts with label zookeeper. Show all posts
Monday, October 24, 2011
Wednesday, May 11, 2011
ZooKeeper Intro
Любое распределенное приложение не может обойтись без центрального сервиса, который координирует процессы в нем. Реализовывать координацию можно, однако разработка отказоустйчивой системы координации без deadlock'ов и race conditions -- задача не из тревиальных. Проект Apache ZooKeeper призван избавить нас от решения этой проблемы.
ZooKeeper -- это распределенный, open-source сервис координнации для расспределенных приложений. Он предоставляет низкоуровневый API, с помощью которого приложения могут реализовать высокоуровневые сервисы для координации и синхронизации процессов в расспредеелнной системе.
API ZooKeeper'a черезвычайно прост. Распределенные процессы могут координироваться между собой с помощью расшаренной на всех клиентов иерархии znode'ов, организация которых по структуре похожа на файловую систему. Как и в файловой системе каждый znode идентифицируется своим уникальным путем, вида /node1/stuff/logs. В отличии от привычной файловой системы, каждый znode может быть корневым узлом для других znode'ов. Если говорить в терминах файловой системы: файл может выступать в роли директории. Znode'ы версионируются и ZooKeeper позволяет "смотреть"(watch) за изменениями в ноде. Как только znode'a изменяется, клиент, смотрящий за нодой, получает пакет, который говорит что в ноде произошло измение.
ZooKeeper реплицируемый и обрабатывает команды в строгой последовательности. Первое намного повышает его надежность, второе дает возможность пользователям разрабатывать примитивы синхронизации для распределенных систем. Все данные ZooKeeper держит в памяти, что позволяет ему работать черезвычайно быстро. Разработчики дауют нам следующие гарантии:
- Sequential Consistency - Обновления от клиента будут применены в порядке в котором они были отправены
- Atomicity - Изменения от клиента атомарны, они либо исполняются либо нет
- Single System Image - Клиент получет одинаковый набор znode'ов вне зависимости от того к какому серверу он подключен
- Reliability - Как только измение было применено, состояние будет неизменно до тех пор пока клиент не перетрет его
- Timeliness - Состояние системы для клиент гарантированно up-to-date с некоторой погрешностью по времени
Subscribe to:
Posts (Atom)