Zk

Post on 13-Jul-2015

202 views 2 download

Tags:

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 г.