от авгиевых конюшен к звездам

50
От авгиевых конюшен к звездам Гончаров Лев ByndyuSoft [email protected] 9-я конференция .NET разработчиков 12 октября 2014 dotnetconf.ru

Upload: lev-goncharov

Post on 08-Aug-2015

502 views

Category:

Internet


6 download

TRANSCRIPT

Page 1: от авгиевых конюшен к звездам

От авгиевых конюшен к звездам

Гончаров ЛевByndyuSoft

[email protected]

9-я конференция .NET разработчиков12 октября 2014dotnetconf.ru

Page 2: от авгиевых конюшен к звездам

2

Описание проекта

Page 3: от авгиевых конюшен к звездам

3

Задача

Максимальная отказоустойчивость при минимальном бюджете

Page 4: от авгиевых конюшен к звездам

4

Crawlers

Page 5: от авгиевых конюшен к звездам

5

Crawlers

• Скачать• Обработать• Сохранить

Page 6: от авгиевых конюшен к звездам

6

Crawlers

Page 7: от авгиевых конюшен к звездам

7

Crawlers. Их много, ты один

• Упростить развертывание• Ввести метрики эффективности

работы• Сбор ошибок• Необработанные исключения тоже

надо собирать

Page 8: от авгиевых конюшен к звездам

8

MsSQL

Page 9: от авгиевых конюшен к звездам

9

MsSQL

Описание:• Хранит данные за пол года• БД до 1ТБ

Page 10: от авгиевых конюшен к звездам

10

MsSQL Cluster

• Общее хранилище• Transactions logs• Log shipping• AlwaysOn• Mirroring

Page 11: от авгиевых конюшен к звездам

11

MsSQL медленно работает

• Проверить CPU/RAM/ DISK queue• Посмотреть статистику запросов• Посмотреть профайлером• Оптимизировать запросы

Page 12: от авгиевых конюшен к звездам

12

Найди затык по графику

Page 13: от авгиевых конюшен к звездам

13

База стала узким местом

Временное решение: SSD

Решение: Message Queue

Page 14: от авгиевых конюшен к звездам

14

Message Queue

Page 15: от авгиевых конюшен к звездам

15

Message Queue

Page 16: от авгиевых конюшен к звездам

16

Message Queue

• В БД пишется только результат• Снижение нагрузки на БД • Масштабируемость

Page 17: от авгиевых конюшен к звездам

17

Message Queue

Варианты резервирования:• Холодный резерв

VM Replica

• Горячий резервCluster

Page 18: от авгиевых конюшен к звездам

18

WEB

Page 19: от авгиевых конюшен к звездам

19

WEB

• Генерирует контент• Отдает статику

Page 20: от авгиевых конюшен к звездам

20

WEB перестал справляться

Page 21: от авгиевых конюшен к звездам

21

WEB Static

Page 22: от авгиевых конюшен к звездам

22

WEB Static

Описание:• Хранит изображения из статей• Конвертирует• При необходимости скачивает с

источника• Будет до 2ТБ изображений

Page 23: от авгиевых конюшен к звездам

23

WEB Static

Page 24: от авгиевых конюшен к звездам

24

WEB Static

Варианты синхронизации файлов:• На уровне железа (СХД)• На уровне ОС (DFS)• На уровне приложения (Сохранять

краулером на все сервера)

Page 25: от авгиевых конюшен к звездам

25

WEB Static

Планировали DNS Round Robin

Page 26: от авгиевых конюшен к звездам

26

WEB Static

Получилось NLB

Page 27: от авгиевых конюшен к звездам

27

WEB CDN

Page 28: от авгиевых конюшен к звездам

28

WEB CDN

• Уменьшает нагрузку на наши сервера

• Может иметь странности• Можно положить на тестах

Page 29: от авгиевых конюшен к звездам

29

WEB Balancer

Page 30: от авгиевых конюшен к звездам

30

WEB Balancer

Page 31: от авгиевых конюшен к звездам

31

WEB Balancer

Варианты реализаций:• Аппаратный балансировщик• IIS + ARR• Nginx• Haproxy

Page 32: от авгиевых конюшен к звездам

32

WEB Balancer

Page 33: от авгиевых конюшен к звездам

33

WEB Balancer

Проблема: Пользователь должен попадать на тот сервер где был раньше

Решение: приложение выставляет Cookie

Page 34: от авгиевых конюшен к звездам

34

MongoDB

Page 35: от авгиевых конюшен к звездам

35

CAP Теорема

• Consistency (Согласованность)• Availability (Доступность)• Partition tolerance (Устойчивать

к разделению)

Выберите два

Page 36: от авгиевых конюшен к звездам

36

MongoDB

Проблема: SQL не справляется на запись

Решение: NoSQL, т.к данные поддаются разделению

Page 37: от авгиевых конюшен к звездам

37

MongoDB Cluster

Page 38: от авгиевых конюшен к звездам

38

MongoDB проблемы

• Backups• Upgrades• BUGS

Page 39: от авгиевых конюшен к звездам

39

Backups

Page 40: от авгиевых конюшен к звездам

40

Backups

Админы делятся на тех, кто:• Делает бэкапы• Делает бэкапы в географически

разные места(правило 3-2-1)• Проверяет бэкапы

Page 41: от авгиевых конюшен к звездам

41

Как это заливать Все?

Page 42: от авгиевых конюшен к звездам

42

Обычная заливка

• Миграции• Сайты• Краулеры

Page 43: от авгиевых конюшен к звездам

43

Заливка

Проблема: сложный и неочевидный процесс заливки, правя конфиги

Решение: трансформации, скрипты заливки

Page 44: от авгиевых конюшен к звездам

44

Заливка

Проблема: монстрообразные скрипты

Решение: переход к объектам – можно выбирать что залить

Page 45: от авгиевых конюшен к звездам

45

Monitoring

Page 46: от авгиевых конюшен к звездам

46

Monitoring

• Отрицание• Гнев• Смирение

Page 47: от авгиевых конюшен к звездам

47

Monitoring

Система лучше или хуже работает после заливки?

Page 48: от авгиевых конюшен к звездам

48

Monitoring

А всем ли удобно читать письма?

Page 49: от авгиевых конюшен к звездам

49

Заключение

2012 2014

Серверов 3 60RAM GB 72 800SSD GB 200 10 000MsSQL GB 150 700MongoDB GB 0 700Статей за сутки

10 000 150 000

Page 50: от авгиевых конюшен к звездам

50

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

Гончаров ЛевByndyuSoft

[email protected] http://vk.com/ultral