Post on 13-Jul-2015
transcript
Андрей Степачев
Zookeeper, или как управлять зоопарком
пятница, 25 января 13 г.
Основные принципы
пятница, 25 января 13 г.
Файловая система
3
/
/app1
/app2
/app1/p1
name: /app1version: 10childs: [...]data: [...]
P1
/app1/p2 P2
/app1/p3P3
name: /app1/p3data: [...]session: P3
пятница, 25 января 13 г.
FIFO обработка сообщений и А-Линеаризация записи
4
TX W
RequestProcessor
ZUB
DB
ZK ClientFIFO
ZK ClientFIFO
RR
W W W
W
TX WDB
TX W
DB
TX W
пятница, 25 января 13 г.
Кворум и 2-х фазный коммит
5
ZK QuorumFollower
Client
2P CommitFollower
Follower
Leader
Client Client Client
пятница, 25 января 13 г.
Консистентность
6
ZK QuorumFollower
Client
2P CommitFollower
Leader
Client Client Client
1
2
1 1
1 1 11
пятница, 25 января 13 г.
Консистентность
7
ZK QuorumFollower
Client
2P CommitFollower
Leader
Client Client Client
1
1sync()read()
2
2 2 2
2
пятница, 25 января 13 г.
Консистентность
8
ZK QuorumFollower
Client
2P CommitFollower
Leader
Client Client Client
sync()read()
2
2 2 2
22
2
пятница, 25 января 13 г.
Рецепты
пятница, 25 января 13 г.
Рецепт: Управление конфигурацией
10
/app1
/app1/config
C1 C2 C3
пятница, 25 января 13 г.
Рецепт: Рандеву (1/2)
11
/app1
/app1/workers
W1
alive-w1
Leader
putData(ephemeral)
Listen w1-queueputData
пятница, 25 января 13 г.
Рецепт: Рандеву (2/2)
12
/app1
/app1/workers
W1
alive-w1
Leader
Listen w1-queue Listen
task1putData
getData
пятница, 25 января 13 г.
Рецепты: Блокировки (1/6)
13
/app1
/app1/my-lock
lock-0001
C1
пятница, 25 января 13 г.
Рецепты: Блокировки (2/6)
14
/app1
/app1/my-lock
lock-0001
C1 C2
lock-0002
пятница, 25 января 13 г.
Рецепты: Блокировки (3/6)
15
/app1
/app1/my-lock
lock-0001
C1 C2
lock-0002
C3
lock-0003
пятница, 25 января 13 г.
Рецепты: Блокировки (4/6)
16
/app1
/app1/my-lock
C2
lock-0002
C3
lock-0003 lock-0004
C1
пятница, 25 января 13 г.
Рецепты: Блокировки (5/6)
17
/app1
/app1/my-lock
C2
lock-0002
C3
lock-0003 lock-0004
C1
пятница, 25 января 13 г.
Рецепты: Блокировки (6/6)
18
/app1
/app1/my-lock
C2 C3
lock-0003 lock-0004
C1
пятница, 25 января 13 г.
Производительность
пятница, 25 января 13 г.
250 clients, 100 msg in-fly, 1kb
20
пятница, 25 января 13 г.
Масштабируемость
21
Servers 100% Reads 0% Reads
13 460k 8k
9 296k 12k
7 257k 14k
5 165k 18k
3 87k 21k
пятница, 25 января 13 г.
Реакция на сбои
22
• 1 - follower• 2 - different follower• 3 - leader
• 4a,b,c - followers• 5 - leader• 6 - leader recovery
пятница, 25 января 13 г.
Задержки (latency)
23
• 1kb• Синхронный create• Асинхронный delete• И так 50000 раз
servers workers 3 5 7 9
1
10
20
776 748 758 711
1831 1831 1572 1540
2740 2336 1934 1890
• средняя для 3 - 1.2ms• средняя для 9 - 1.4ms
пятница, 25 января 13 г.
+7 916 635-23-16
octo@yandex-team.ru
Спасибо
Андрей Степачев
По материалам Yahoo.Research
пятница, 25 января 13 г.