Date post: | 25-Jun-2015 |
Category: |
Technology |
Upload: | mairbek-khadikov |
View: | 2,320 times |
Download: | 0 times |
Координация в распределенных системах с помощью Apache
Zookeeper
Маирбек Хадиков
Координация
В распределенных системах не обойтись без
координации
Координация
Система координации должна быть
отказоустойчивой
Координация
Реализовать
синхронизацию в распределенных системах
сложно
Zookeeper
Маштабируемый
Open Source
Fault Tolerant
Распределенный
Задачи
Synchronization ConfigurationMaintenance
Groups Naming
Структура
ZNodeFile
DirectoryWatches
Atomic Operations
OptimisticLocking
Флаги
Sequential
Ephemeral
Sequentialsome-znode-00000001
some-znode-00000002
some-znode-00000003
...
Ephemeral
Время жизни ограниченно временем сессии
ГарантииSequential Consistency
AtomicitySingle System Image
Timelines Reliability
API
create get data
delete
set data
get children
sync
Cluster mode
Cluster mode
Данные сохраняются в памяти на всех серверах
Cluster mode
Лидер выбирается при старте
Cluster mode
Клиенты подключенны к follower'ам
Cluster mode
Все изменения проходят через лидера
Cluster modeCommit после обновления данных на большинстве
серверов
Group Membership
Group MembershipГруппе соответствует определенный
znode
/
...
group
Group MembershipЧлены группы создают ephemeral
znode внутри группы/
...
member
group
Group MembershipЕсли клиент недоступен znode
автоматически удалится/
...
member
group
Barier
BarierКлиент вызывает exists+watcher
/
...
barier
BarierЕсли znode отсутствует барьер
отпущен
/
...
barier
BarierЕсли znode существует, то ожидаем
оповещение о его удалении
/
...
barier
Leader Election
Leader Election
/
...
election
Leader ElectionКаждый желающий создает ephemeral|sequential znode
election
node_00000001
node_00000002
node_00000003
Leader ElectionКлиент у которого znode с наименьшим
номером -- leader
election
node_00000001
node_00000002
node_00000003
Leader ElectionОстальные клиенты ставят watch и следят за
leader
election
node_00000001
node_00000002
node_00000003
Leader ElectionЕсли leader недоступен -- следующий
доступный клиент избирается лидером
election
node_00000001
node_00000004
node_00000007
Lock
LockДля общего ресурса создается znode
/
...
resource
LockКаждый процесс создает
ephemeral|sequential znode
resource
lock_00000001
lock_00000003
lock_00000002
LockПроцесс с наименьшим znode удерживает
lock
lock_00000001
lock_00000003
lock_00000002
resource
LockОстальные процессы ждут удаления
предыдущей znode
lock_00000001
lock_00000003
lock_00000002
resource
LockДля освобождения lock процессом удаляется
znode
lock_00000001
lock_00000003
lock_00000002
resource