zookeeper presentation

Post on 25-Jun-2015

2.320 Views

Category:

Technology

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

Presentation from Dev Time

TRANSCRIPT

Координация в распределенных системах с помощью 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

Спасибо

@mairbek

mkhadikov@gmail.com

github.com/mairbek

top related