Рим Зайдуллин "Эффективная маршрутизация в...

74
Code Wizard Рим Зайдуллин Эффективная маршрутизация в вычислительном облаке (PG-13) Я.Субботник в Санкт-Петербурге, 1 декабря 2012 пятница, 30 ноября 12 г.

description

В современном мире облачных платформ маршрутизация занимает особое место. Большинство провайдеров PaaS-решений предпочитают не раскрывать деталей работы своего роутинга, считая этот вопрос своим ноу-хау. Как эффективно обработать огромный поток запросов в облако? Как обеспечить надёжность доставки данных? Как поступить с масштабированием? Ответ на эти и другие вопросы и рассказ о нашем балансировщике — Cocaine Dealer.

Transcript of Рим Зайдуллин "Эффективная маршрутизация в...

Page 1: Рим Зайдуллин "Эффективная маршрутизация в вычислительном облаке"

Code WizardРим Зайдуллин

Эффективнаямаршрутизация ввычислительном облаке (PG-13)

Я.Субботник в Санкт-Петербурге, 1 декабря 2012пятница, 30 ноября 12 г.

Page 2: Рим Зайдуллин "Эффективная маршрутизация в вычислительном облаке"

Настало время офигительных историй2

пятница, 30 ноября 12 г.

Page 3: Рим Зайдуллин "Эффективная маршрутизация в вычислительном облаке"

3 Дорога в облакапятница, 30 ноября 12 г.

Page 4: Рим Зайдуллин "Эффективная маршрутизация в вычислительном облаке"

Структура кокаинового облака

4

C

C

C

01010010

Облако

C

C

C

C

C

C

01010010

01010010

пятница, 30 ноября 12 г.

Page 5: Рим Зайдуллин "Эффективная маршрутизация в вычислительном облаке"

Структура кокаинового облака

5

Клиенты

Java Python

C++

PerlPHP

and more

пятница, 30 ноября 12 г.

Page 6: Рим Зайдуллин "Эффективная маршрутизация в вычислительном облаке"

Структура кокаинового облака

6

C

C

C

01010010

CocaineКлиенты

01010010

01010010

?Java

Python

C++

Perl

пятница, 30 ноября 12 г.

Page 7: Рим Зайдуллин "Эффективная маршрутизация в вычислительном облаке"

Как максимально быстро и надёжно доставлять

сообщения?

7

Задача

пятница, 30 ноября 12 г.

Page 8: Рим Зайдуллин "Эффективная маршрутизация в вычислительном облаке"

Cocaine Dealer — точка входа в облако.

8

О чём речь?

пятница, 30 ноября 12 г.

Page 9: Рим Зайдуллин "Эффективная маршрутизация в вычислительном облаке"

Структура кокаинового облака

9

C

C

C

CocaineКлиенты

?Java

Python

C++

Perl

01010010

01010010

01010010

пятница, 30 ноября 12 г.

Page 10: Рим Зайдуллин "Эффективная маршрутизация в вычислительном облаке"

Структура кокаинового облака

10

C

C

C

01010010

CocaineКлиенты

01010010

01010010

Java

Python

C++

Perl

Dealer

D

D

пятница, 30 ноября 12 г.

Page 11: Рим Зайдуллин "Эффективная маршрутизация в вычислительном облаке"

С чем мы имеем дело?

11

пятница, 30 ноября 12 г.

Page 12: Рим Зайдуллин "Эффективная маршрутизация в вычислительном облаке"

12 Она просто взорвалась или типа тогопятница, 30 ноября 12 г.

Page 13: Рим Зайдуллин "Эффективная маршрутизация в вычислительном облаке"

13

Как растёт инфраструктура?

Балансировщик

Серверы

пятница, 30 ноября 12 г.

Page 14: Рим Зайдуллин "Эффективная маршрутизация в вычислительном облаке"

14 ВЫЛЕЗАЙ, ПРИЕХАЛИпятница, 30 ноября 12 г.

Page 15: Рим Зайдуллин "Эффективная маршрутизация в вычислительном облаке"

15

Как растёт инфраструктура?

Балансировщик Серверы

пятница, 30 ноября 12 г.

Page 16: Рим Зайдуллин "Эффективная маршрутизация в вычислительном облаке"

16 Мелкие неприятности в ДЦпятница, 30 ноября 12 г.

Page 17: Рим Зайдуллин "Эффективная маршрутизация в вычислительном облаке"

17

Как растёт инфраструктура?

ДЦ 1 ДЦ 2

ДЦ 3

пятница, 30 ноября 12 г.

Page 18: Рим Зайдуллин "Эффективная маршрутизация в вычислительном облаке"

Как максимально быстро и надёжно доставлять

сообщения?

18

Задача

пятница, 30 ноября 12 г.

Page 19: Рим Зайдуллин "Эффективная маршрутизация в вычислительном облаке"

1. Производительность19

пятница, 30 ноября 12 г.

Page 20: Рим Зайдуллин "Эффективная маршрутизация в вычислительном облаке"

Cocaine Dealer — точка входа в облако.

20

О чём речь?

Это библиотеканаписанная на С++

пятница, 30 ноября 12 г.

Page 21: Рим Зайдуллин "Эффективная маршрутизация в вычислительном облаке"

Логическая структура облака

21

C

C

C

01010010

CocaineКлиенты

01010010

01010010

Java

Python

C++

Perl

Dealer

D

D

пятница, 30 ноября 12 г.

Page 22: Рим Зайдуллин "Эффективная маршрутизация в вычислительном облаке"

Физическая структура облака

22

C

C

C

01010010

CocaineКлиенты

01010010

01010010

Java

Dealer

D

C++ D

Python D

пятница, 30 ноября 12 г.

Page 23: Рим Зайдуллин "Эффективная маршрутизация в вычислительном облаке"

2. Мониторинг инфраструктуры23

пятница, 30 ноября 12 г.

Page 24: Рим Зайдуллин "Эффективная маршрутизация в вычислительном облаке"

Cloud awareness

24

App Dealer

Node 1

Node 2

пятница, 30 ноября 12 г.

Page 25: Рим Зайдуллин "Эффективная маршрутизация в вычислительном облаке"

Cloud awareness

25

App Dealer

Node 1

Node 2

пятница, 30 ноября 12 г.

Page 26: Рим Зайдуллин "Эффективная маршрутизация в вычислительном облаке"

Cloud awareness

26

App Dealer

Node 1

Node 2

пятница, 30 ноября 12 г.

Page 27: Рим Зайдуллин "Эффективная маршрутизация в вычислительном облаке"

3. Always ON27

пятница, 30 ноября 12 г.

Page 28: Рим Зайдуллин "Эффективная маршрутизация в вычислительном облаке"

Always ON

28

App Dealer Cloud

пятница, 30 ноября 12 г.

Page 29: Рим Зайдуллин "Эффективная маршрутизация в вычислительном облаке"

Always ON

29

App Dealer Cloud

пятница, 30 ноября 12 г.

Page 30: Рим Зайдуллин "Эффективная маршрутизация в вычислительном облаке"

4. Тонкие настройки30

пятница, 30 ноября 12 г.

Page 31: Рим Зайдуллин "Эффективная маршрутизация в вычислительном облаке"

Политики маршрутизации

• Deadline• Max retries• Priority• Persistence• etc.

31

пятница, 30 ноября 12 г.

Page 32: Рим Зайдуллин "Эффективная маршрутизация в вычислительном облаке"

5. Гарантированная доставка32

пятница, 30 ноября 12 г.

Page 33: Рим Зайдуллин "Эффективная маршрутизация в вычислительном облаке"

Persistent delivery

33

App Dealer Cloud

пятница, 30 ноября 12 г.

Page 34: Рим Зайдуллин "Эффективная маршрутизация в вычислительном облаке"

Persistent delivery

34

App Dealer Cloud

пятница, 30 ноября 12 г.

Page 35: Рим Зайдуллин "Эффективная маршрутизация в вычислительном облаке"

Persistent delivery

35

App Dealer Cloud

пятница, 30 ноября 12 г.

Page 36: Рим Зайдуллин "Эффективная маршрутизация в вычислительном облаке"

Persistent delivery

36

App Dealer Cloud

пятница, 30 ноября 12 г.

Page 37: Рим Зайдуллин "Эффективная маршрутизация в вычислительном облаке"

Persistent delivery

37

App Dealer Cloud

пятница, 30 ноября 12 г.

Page 38: Рим Зайдуллин "Эффективная маршрутизация в вычислительном облаке"

6. Умная балансировка38

пятница, 30 ноября 12 г.

Page 39: Рим Зайдуллин "Эффективная маршрутизация в вычислительном облаке"

Naive balancing

39

Dealer

пятница, 30 ноября 12 г.

Page 40: Рим Зайдуллин "Эффективная маршрутизация в вычислительном облаке"

Naive balancing

40

Dealer

w w w

пятница, 30 ноября 12 г.

Page 41: Рим Зайдуллин "Эффективная маршрутизация в вычислительном облаке"

Naive balancing

41

Dealer

w w w

пятница, 30 ноября 12 г.

Page 42: Рим Зайдуллин "Эффективная маршрутизация в вычислительном облаке"

Naive balancing

42

Dealer

w1 w2 w3

пятница, 30 ноября 12 г.

Page 43: Рим Зайдуллин "Эффективная маршрутизация в вычислительном облаке"

Smart balancing

43

Dealer

w1 w2 w3

пятница, 30 ноября 12 г.

Page 44: Рим Зайдуллин "Эффективная маршрутизация в вычислительном облаке"

7. Мониторинг приложений44

пятница, 30 ноября 12 г.

Page 45: Рим Зайдуллин "Эффективная маршрутизация в вычислительном облаке"

Health monitoring

45

App Dealer

Node

Node

пятница, 30 ноября 12 г.

Page 46: Рим Зайдуллин "Эффективная маршрутизация в вычислительном облаке"

Health monitoring

46

App Dealer

Node

!!!

пятница, 30 ноября 12 г.

Page 47: Рим Зайдуллин "Эффективная маршрутизация в вычислительном облаке"

Health monitoring

47

App Dealer

Node

!!!

пятница, 30 ноября 12 г.

Page 48: Рим Зайдуллин "Эффективная маршрутизация в вычислительном облаке"

Health monitoring

48

App Dealer

Node

!!!

пятница, 30 ноября 12 г.

Page 49: Рим Зайдуллин "Эффективная маршрутизация в вычислительном облаке"

Health monitoring

49

App Dealer

Node

Node

пятница, 30 ноября 12 г.

Page 50: Рим Зайдуллин "Эффективная маршрутизация в вычислительном облаке"

1. Производительность2. Мониторинг инфраструктуры3. Always ON4. Тонкие настройки5. Умная балансировка6. Гарантированная доставка7. Мониторинг приложений

50

пятница, 30 ноября 12 г.

Page 51: Рим Зайдуллин "Эффективная маршрутизация в вычислительном облаке"

Cocaine Dealer — точка входа в облако.

51

1. Балансировщик2. Маршрутизатор3. Очередь запросов

пятница, 30 ноября 12 г.

Page 52: Рим Зайдуллин "Эффективная маршрутизация в вычислительном облаке"

Пример использования

52

Приложение: "image_processor"Метод: "filter"

пятница, 30 ноября 12 г.

Page 53: Рим Зайдуллин "Эффективная маршрутизация в вычислительном облаке"

Простой API

53

dealer_t dealer("config.json");message_path_t path("image_processor", "filter");

dealer.send_message(image, path);

пятница, 30 ноября 12 г.

Page 54: Рим Зайдуллин "Эффективная маршрутизация в вычислительном облаке"

Простой API

54

dealer_t dealer("config.json");message_path_t path("image_processor", "filter");

response_t resp;resp = dealer.send_message(image, path);

пятница, 30 ноября 12 г.

Page 55: Рим Зайдуллин "Эффективная маршрутизация в вычислительном облаке"

Простой API

55

dealer_t dealer("config.json");message_path_t path("image_processor", "filter");

response_t resp;resp = dealer.send_message(image, path);

data_container_t chunk;resp.get(&chunk); // blocking!

пятница, 30 ноября 12 г.

Page 56: Рим Зайдуллин "Эффективная маршрутизация в вычислительном облаке"

Простой API

56

dealer_t dealer("config.json");message_path_t path("image_processor", "filter");

response_t resp;resp = dealer.send_message(image, path);

data_container_t chunk;if (resp.get(&chunk)) {

std::string result(chunk.data(), chunk.size());std::cout << result << std::endl;

}пятница, 30 ноября 12 г.

Page 57: Рим Зайдуллин "Эффективная маршрутизация в вычислительном облаке"

Простой API

57

dealer_t dealer("config.json");message_path_t path("image_processor", "filter");

response_t resp;resp = dealer.send_message(image, path);

data_container_t chunk;while (resp.get(&chunk)) {

std::string result(chunk.data(), chunk.size());std::cout << result << std::endl;

}пятница, 30 ноября 12 г.

Page 58: Рим Зайдуллин "Эффективная маршрутизация в вычислительном облаке"

Простой API

58

dealer_t dealer("config.json");message_path_t path("image_processor", "filter");

response_t resp;resp = dealer.send_message(image, path);

data_container_t data;size_t timeout = 1.0;resp.get(&data, timeout);

пятница, 30 ноября 12 г.

Page 59: Рим Зайдуллин "Эффективная маршрутизация в вычислительном облаке"

59

HTTP?

пятница, 30 ноября 12 г.

Page 60: Рим Зайдуллин "Эффективная маршрутизация в вычислительном облаке"

Обработка HTTP-запросов

60

Dealer Cloud

пятница, 30 ноября 12 г.

Page 61: Рим Зайдуллин "Эффективная маршрутизация в вычислительном облаке"

Обработка HTTP-запросов

61

Dealer Cloud

пятница, 30 ноября 12 г.

Page 62: Рим Зайдуллин "Эффективная маршрутизация в вычислительном облаке"

Обработка HTTP-запросов

62

FastGCI module

Nginx, Lighttpd, etc.

FastGCI

HTTP

Dealer Cloud

пятница, 30 ноября 12 г.

Page 63: Рим Зайдуллин "Эффективная маршрутизация в вычислительном облаке"

Обработка HTTP-запросов

63

FastGCI module

Nginx, Lighttpd, etc.

FastGCI

HTTP

Dealer Cloud

пятница, 30 ноября 12 г.

Page 64: Рим Зайдуллин "Эффективная маршрутизация в вычислительном облаке"

Обработка HTTP-запросов

64

FastGCI module

Nginx, Lighttpd, etc.

FastGCI

HTTP

Dealer Cloud

пятница, 30 ноября 12 г.

Page 65: Рим Зайдуллин "Эффективная маршрутизация в вычислительном облаке"

Обработка HTTP-запросов

65

FastGCI module

Nginx, Lighttpd, etc.

FastGCI

HTTP

Dealer Cloud

пятница, 30 ноября 12 г.

Page 66: Рим Зайдуллин "Эффективная маршрутизация в вычислительном облаке"

Обработка HTTP-запросов

66

FastGCI module

Nginx, Lighttpd, etc.

FastGCI

HTTP

Dealer Cloud

пятница, 30 ноября 12 г.

Page 67: Рим Зайдуллин "Эффективная маршрутизация в вычислительном облаке"

Обработка HTTP-запросов

67

FastGCI module

Nginx, Lighttpd, etc.

FastGCI

HTTP

Dealer Cloud

пятница, 30 ноября 12 г.

Page 68: Рим Зайдуллин "Эффективная маршрутизация в вычислительном облаке"

Обработка HTTP-запросов

68

FastGCI module

Nginx, Lighttpd, etc.

FastGCI

HTTP

Dealer Cloud

пятница, 30 ноября 12 г.

Page 69: Рим Зайдуллин "Эффективная маршрутизация в вычислительном облаке"

Обработка HTTP-запросов

69

FastGCI module

Nginx, Lighttpd, etc.

FastGCI

HTTP

Dealer Cloud

пятница, 30 ноября 12 г.

Page 70: Рим Зайдуллин "Эффективная маршрутизация в вычислительном облаке"

Обработка HTTP-запросов

70

FastGCI module

Nginx, Lighttpd, etc.

FastGCI

HTTP

Dealer Cloud

пятница, 30 ноября 12 г.

Page 71: Рим Зайдуллин "Эффективная маршрутизация в вычислительном облаке"

Обработка HTTP-запросов

71

FastGCI module

Nginx, Lighttpd, etc.

FastGCI

HTTP

Dealer Cloud

пятница, 30 ноября 12 г.

Page 72: Рим Зайдуллин "Эффективная маршрутизация в вычислительном облаке"

Обработка HTTP-запросов

72

Nginx

HTTP Cloudmodule

Dealer

пятница, 30 ноября 12 г.

Page 73: Рим Зайдуллин "Эффективная маршрутизация в вычислительном облаке"

bit.ly/iwantcoke

пятница, 30 ноября 12 г.

Page 74: Рим Зайдуллин "Эффективная маршрутизация в вычислительном облаке"

Code Wizard

[email protected]

Рим Зайдуллин

пятница, 30 ноября 12 г.