72
Нетривиальное о репликации Как добиться высокой доступности Александр Казаков Ведущий инженер-программист

Александр Казаков

Embed Size (px)

Citation preview

Page 1: Александр Казаков

Нетривиальное о репликации Как добиться высокой доступности

Александр Казаков

Ведущий инженер-программист

Page 2: Александр Казаков
Page 3: Александр Казаков

2000 компонентов,

взаимодействующих по сети

Page 4: Александр Казаков
Page 5: Александр Казаков
Page 6: Александр Казаков

Подход с балансировщиком

balancer

Page 7: Александр Казаков

Подход с service discovery

service discovery

Page 8: Александр Казаков
Page 9: Александр Казаков

Чем плох подход с балансировщиком

timeout = 30

Page 10: Александр Казаков

Чем плох подход с балансировщиком

balancertimeout = 30

Page 11: Александр Казаков

Чем плох подход с балансировщиком. Пример 1

balancerТ = 30

Т = 60

Page 12: Александр Казаков

Чем плох подход с балансировщиком. Пример 1

balancerТ = 30

Т = 60

Page 13: Александр Казаков

Чем плох подход с балансировщиком. Пример 1

balancerТ = 30

Т = 60

timeout

Page 14: Александр Казаков

Чем плох подход с балансировщиком. Пример 2

balancerТ = 30

Т = 10

Page 15: Александр Казаков

Чем плох подход с балансировщиком. Пример 2

balancerТ = 30 Т = 10

Page 16: Александр Казаков

Чем плох подход с балансировщиком. Пример 2

balancerТ = 30

Т = 10

Page 17: Александр Казаков

Чем плох подход с балансировщиком. Пример 2

balancerТ = 30 Т = 10

Page 18: Александр Казаков

Чем плох подход с балансировщиком. Пример 2

balancerТ = 30

Т = 10

Page 19: Александр Казаков

Не получили ответ за 30 секунд,

хотя могли получить за 12 !!!

balancertimeout

Page 20: Александр Казаков

Чем плох подход с service discovery. Пример 1

service discovery

Т = 30

Page 21: Александр Казаков

Чем плох подход с service discovery. Пример 2

service discovery

Т = 10

Page 22: Александр Казаков

Чем плох подход с service discovery. Пример 2

service discovery

Т = 10

Page 23: Александр Казаков

Не получили ответ за 30 секунд,

хотя могли получить за 12 !!!

timeout

Page 24: Александр Казаков
Page 25: Александр Казаков
Page 26: Александр Казаков

?

Page 27: Александр Казаков

WE HAVE A PROBLEM

HOUSTON

Page 28: Александр Казаков

Три базовые концепции

Page 29: Александр Казаков

Три базовые концепции

1. Параллельные стратегии отправки запроса.

2. Использование клиентского таймаута на сервере.

3. Серые списки.

Page 30: Александр Казаков

Три базовые концепции

1. Параллельные стратегии отправки запроса.

2. Использование клиентского таймаута на сервере.

3. Серые списки.

Page 31: Александр Казаков

Параллельная стратегия

balancer

Т = 30

Т = 30

Т = 30Т = 30

Page 32: Александр Казаков

Адаптивная параллельность

Page 33: Александр Казаков

Адаптивная параллельность

t0 T2/3T1/3T

R1

R2

R3

Page 34: Александр Казаков

Адаптивная параллельность

t0 T2/3T1/3T

R1

R2

R3

timeout=T

мы тут

Page 35: Александр Казаков

Адаптивная параллельность

t0 T2/3T1/3T

R1

R2

R3

мы тут

OK

Page 36: Александр Казаков

Адаптивная параллельность

t0 T2/3T1/3T

R1

R2

R3

timeout=T

timeout=2/3T

мы тут

Page 37: Александр Казаков

Адаптивная параллельность

t0 T2/3T1/3T

R1

R2

R3

timeout=T

timeout=2/3T

timeout=1/3T

мы тут

Page 38: Александр Казаков

Адаптивная параллельность

t0 T2/3T1/3T

R1

R2

R3

timeout=T

timeout=2/3T

timeout=1/3T

мы тут

OK

Page 39: Александр Казаков

Адаптивная параллельность

t0 30

R1

R2

R3

R4

1 5 15

Page 40: Александр Казаков

Адаптивная параллельность

t0 T4

R1

R2

R3

R4

T1 T2 T3

требует индивидуального подхода

Page 41: Александр Казаков

Написал сервис — напиши клиента

Page 42: Александр Казаков

Адаптивная параллельность

Page 43: Александр Казаков

Адаптивная параллельность

индивидуальные параметры для каждого запроса

Page 44: Александр Казаков

Адаптивная параллельность

индивидуальные параметры для каждого запроса

написал сервис — напиши клиента

Page 45: Александр Казаков

Три базовые концепции

1. Параллельные стратегии отправки запроса.

2. Использование клиентского таймаута на сервере.

3. Серые списки.

Page 46: Александр Казаков

B

Page 47: Александр Казаков

B D

C

E

T1

T2

T3

Page 48: Александр Казаков

B D

C

E

T0

T1

T2

T3

Page 49: Александр Казаков

B

B

B

C

C

C

Page 50: Александр Казаков

B

B

B

C

C

C

10

30

Page 51: Александр Казаков

B

B

B

C

C

C

Page 52: Александр Казаков

B

B

B

C

C

C

10

30

Page 53: Александр Казаков

B

B

B

C

C

C

Page 54: Александр Казаков

B

B

B

C

C

C

Page 55: Александр Казаков

B

B

B

C

C

C

10

10

5

Page 56: Александр Казаков

Используйте на серверезнание о клиентском таймаутедля конфигурации внешних вызовов

Bt0

B С

B С

t1

t2С

Page 57: Александр Казаков

TimeBudget timeBudget = request.GetTimeBudget();

await client.Call(timeBudget.Remaining()); // 10 sec

. . .

await client.Call(timeBudget.Remaining()); // 5 sec

Page 58: Александр Казаков

Три базовые концепции

1. Параллельные стратегии отправки запроса.

2. Использование клиентского таймаута на сервере.

3. Серые списки.

Page 59: Александр Казаков

B

B

B

C

C

C

10

10

5

Page 60: Александр Казаков

high availabilitylow latency

Page 61: Александр Казаков

B

B

B

C

C

C

10 10

Page 62: Александр Казаков

BAD NEWS EVERYONE

Серые списки не очень

Page 63: Александр Казаков

Возможные реализации:

• Наивная

Серые списки не очень

Page 64: Александр Казаков

Возможные реализации:

• Наивная

• Наивная + попытки

Серые списки не очень

Page 65: Александр Казаков

Возможные реализации:

• Наивная

• Наивная + попытки

• Наивная + heart beat

Серые списки не очень

Page 66: Александр Казаков

Возможные реализации:

• Наивная

• Наивная + попытки

• Наивная + heart beat

•…

Серые списки не очень

Page 67: Александр Казаков
Page 68: Александр Казаков

health = 1

health = 1

health = 1

health ∈ [0.001, 1]

Page 69: Александр Казаков

health = 0.03

health = 1

health = 1

health ∈ [0.001, 1]

Page 70: Александр Казаков

health = 0.7

health = 1

health = 1

health ∈ [0.001, 1]

Page 71: Александр Казаков

Три базовые концепции

1. Параллельные стратегии отправки запроса.

2. Использование клиентского таймаута на сервере.

3. Серые списки. Здоровье и статистика.

Page 72: Александр Казаков

@a_kazakov

Спасибо за внимание!

[email protected]

Александр Казаков

Ведущий инженер-программист