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

Preview:

Citation preview

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

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

ultralisc@gmail.com

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

2

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

3

Задача

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

4

Crawlers

5

Crawlers

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

6

Crawlers

7

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

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

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

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

8

MsSQL

9

MsSQL

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

10

MsSQL Cluster

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

11

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

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

12

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

13

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

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

Решение: Message Queue

14

Message Queue

15

Message Queue

16

Message Queue

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

17

Message Queue

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

VM Replica

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

18

WEB

19

WEB

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

20

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

21

WEB Static

22

WEB Static

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

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

23

WEB Static

24

WEB Static

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

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

25

WEB Static

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

26

WEB Static

Получилось NLB

27

WEB CDN

28

WEB CDN

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

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

29

WEB Balancer

30

WEB Balancer

31

WEB Balancer

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

32

WEB Balancer

33

WEB Balancer

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

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

34

MongoDB

35

CAP Теорема

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

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

Выберите два

36

MongoDB

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

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

37

MongoDB Cluster

38

MongoDB проблемы

• Backups• Upgrades• BUGS

39

Backups

40

Backups

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

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

41

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

42

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

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

43

Заливка

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

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

44

Заливка

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

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

45

Monitoring

46

Monitoring

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

47

Monitoring

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

48

Monitoring

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

49

Заключение

2012 2014

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

10 000 150 000

50

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

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

ultralisc@gmail.com http://vk.com/ultral

Recommended