Рим Зайдуллин "Эффективная маршрутизация в...
DESCRIPTION
В современном мире облачных платформ маршрутизация занимает особое место. Большинство провайдеров PaaS-решений предпочитают не раскрывать деталей работы своего роутинга, считая этот вопрос своим ноу-хау. Как эффективно обработать огромный поток запросов в облако? Как обеспечить надёжность доставки данных? Как поступить с масштабированием? Ответ на эти и другие вопросы и рассказ о нашем балансировщике — Cocaine Dealer.TRANSCRIPT
Code WizardРим Зайдуллин
Эффективнаямаршрутизация ввычислительном облаке (PG-13)
Я.Субботник в Санкт-Петербурге, 1 декабря 2012пятница, 30 ноября 12 г.
Настало время офигительных историй2
пятница, 30 ноября 12 г.
3 Дорога в облакапятница, 30 ноября 12 г.
Структура кокаинового облака
4
C
C
C
01010010
Облако
C
C
C
C
C
C
01010010
01010010
пятница, 30 ноября 12 г.
Структура кокаинового облака
5
Клиенты
Java Python
C++
PerlPHP
and more
пятница, 30 ноября 12 г.
Структура кокаинового облака
6
C
C
C
01010010
CocaineКлиенты
01010010
01010010
?Java
Python
C++
Perl
пятница, 30 ноября 12 г.
Как максимально быстро и надёжно доставлять
сообщения?
7
Задача
пятница, 30 ноября 12 г.
Cocaine Dealer — точка входа в облако.
8
О чём речь?
пятница, 30 ноября 12 г.
Структура кокаинового облака
9
C
C
C
CocaineКлиенты
?Java
Python
C++
Perl
01010010
01010010
01010010
пятница, 30 ноября 12 г.
Структура кокаинового облака
10
C
C
C
01010010
CocaineКлиенты
01010010
01010010
Java
Python
C++
Perl
Dealer
D
D
пятница, 30 ноября 12 г.
С чем мы имеем дело?
11
пятница, 30 ноября 12 г.
12 Она просто взорвалась или типа тогопятница, 30 ноября 12 г.
13
Как растёт инфраструктура?
Балансировщик
Серверы
пятница, 30 ноября 12 г.
14 ВЫЛЕЗАЙ, ПРИЕХАЛИпятница, 30 ноября 12 г.
15
Как растёт инфраструктура?
Балансировщик Серверы
пятница, 30 ноября 12 г.
16 Мелкие неприятности в ДЦпятница, 30 ноября 12 г.
17
Как растёт инфраструктура?
ДЦ 1 ДЦ 2
ДЦ 3
пятница, 30 ноября 12 г.
Как максимально быстро и надёжно доставлять
сообщения?
18
Задача
пятница, 30 ноября 12 г.
1. Производительность19
пятница, 30 ноября 12 г.
Cocaine Dealer — точка входа в облако.
20
О чём речь?
Это библиотеканаписанная на С++
пятница, 30 ноября 12 г.
Логическая структура облака
21
C
C
C
01010010
CocaineКлиенты
01010010
01010010
Java
Python
C++
Perl
Dealer
D
D
пятница, 30 ноября 12 г.
Физическая структура облака
22
C
C
C
01010010
CocaineКлиенты
01010010
01010010
Java
Dealer
D
C++ D
Python D
пятница, 30 ноября 12 г.
2. Мониторинг инфраструктуры23
пятница, 30 ноября 12 г.
Cloud awareness
24
App Dealer
Node 1
Node 2
пятница, 30 ноября 12 г.
Cloud awareness
25
App Dealer
Node 1
Node 2
пятница, 30 ноября 12 г.
Cloud awareness
26
App Dealer
Node 1
Node 2
пятница, 30 ноября 12 г.
3. Always ON27
пятница, 30 ноября 12 г.
Always ON
28
App Dealer Cloud
пятница, 30 ноября 12 г.
Always ON
29
App Dealer Cloud
пятница, 30 ноября 12 г.
4. Тонкие настройки30
пятница, 30 ноября 12 г.
Политики маршрутизации
• Deadline• Max retries• Priority• Persistence• etc.
31
пятница, 30 ноября 12 г.
5. Гарантированная доставка32
пятница, 30 ноября 12 г.
Persistent delivery
33
App Dealer Cloud
пятница, 30 ноября 12 г.
Persistent delivery
34
App Dealer Cloud
пятница, 30 ноября 12 г.
Persistent delivery
35
App Dealer Cloud
пятница, 30 ноября 12 г.
Persistent delivery
36
App Dealer Cloud
пятница, 30 ноября 12 г.
Persistent delivery
37
App Dealer Cloud
пятница, 30 ноября 12 г.
6. Умная балансировка38
пятница, 30 ноября 12 г.
Naive balancing
39
Dealer
пятница, 30 ноября 12 г.
Naive balancing
40
Dealer
w w w
пятница, 30 ноября 12 г.
Naive balancing
41
Dealer
w w w
пятница, 30 ноября 12 г.
Naive balancing
42
Dealer
w1 w2 w3
пятница, 30 ноября 12 г.
Smart balancing
43
Dealer
w1 w2 w3
пятница, 30 ноября 12 г.
7. Мониторинг приложений44
пятница, 30 ноября 12 г.
Health monitoring
45
App Dealer
Node
Node
пятница, 30 ноября 12 г.
Health monitoring
46
App Dealer
Node
!!!
пятница, 30 ноября 12 г.
Health monitoring
47
App Dealer
Node
!!!
пятница, 30 ноября 12 г.
Health monitoring
48
App Dealer
Node
!!!
пятница, 30 ноября 12 г.
Health monitoring
49
App Dealer
Node
Node
пятница, 30 ноября 12 г.
1. Производительность2. Мониторинг инфраструктуры3. Always ON4. Тонкие настройки5. Умная балансировка6. Гарантированная доставка7. Мониторинг приложений
50
пятница, 30 ноября 12 г.
Cocaine Dealer — точка входа в облако.
51
1. Балансировщик2. Маршрутизатор3. Очередь запросов
пятница, 30 ноября 12 г.
Пример использования
52
Приложение: "image_processor"Метод: "filter"
пятница, 30 ноября 12 г.
Простой API
53
dealer_t dealer("config.json");message_path_t path("image_processor", "filter");
dealer.send_message(image, path);
пятница, 30 ноября 12 г.
Простой 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 г.
Простой 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 г.
Простой 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 г.
Простой 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 г.
Простой 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 г.
59
HTTP?
пятница, 30 ноября 12 г.
Обработка HTTP-запросов
60
Dealer Cloud
пятница, 30 ноября 12 г.
Обработка HTTP-запросов
61
Dealer Cloud
пятница, 30 ноября 12 г.
Обработка HTTP-запросов
62
FastGCI module
Nginx, Lighttpd, etc.
FastGCI
HTTP
Dealer Cloud
пятница, 30 ноября 12 г.
Обработка HTTP-запросов
63
FastGCI module
Nginx, Lighttpd, etc.
FastGCI
HTTP
Dealer Cloud
пятница, 30 ноября 12 г.
Обработка HTTP-запросов
64
FastGCI module
Nginx, Lighttpd, etc.
FastGCI
HTTP
Dealer Cloud
пятница, 30 ноября 12 г.
Обработка HTTP-запросов
65
FastGCI module
Nginx, Lighttpd, etc.
FastGCI
HTTP
Dealer Cloud
пятница, 30 ноября 12 г.
Обработка HTTP-запросов
66
FastGCI module
Nginx, Lighttpd, etc.
FastGCI
HTTP
Dealer Cloud
пятница, 30 ноября 12 г.
Обработка HTTP-запросов
67
FastGCI module
Nginx, Lighttpd, etc.
FastGCI
HTTP
Dealer Cloud
пятница, 30 ноября 12 г.
Обработка HTTP-запросов
68
FastGCI module
Nginx, Lighttpd, etc.
FastGCI
HTTP
Dealer Cloud
пятница, 30 ноября 12 г.
Обработка HTTP-запросов
69
FastGCI module
Nginx, Lighttpd, etc.
FastGCI
HTTP
Dealer Cloud
пятница, 30 ноября 12 г.
Обработка HTTP-запросов
70
FastGCI module
Nginx, Lighttpd, etc.
FastGCI
HTTP
Dealer Cloud
пятница, 30 ноября 12 г.
Обработка HTTP-запросов
71
FastGCI module
Nginx, Lighttpd, etc.
FastGCI
HTTP
Dealer Cloud
пятница, 30 ноября 12 г.
Обработка HTTP-запросов
72
Nginx
HTTP Cloudmodule
Dealer
пятница, 30 ноября 12 г.
Code Wizard
Рим Зайдуллин
пятница, 30 ноября 12 г.