0
Разработка
веб-сервисов

Беседа 11: Устойчивость архитектурного решения
План занятия
 Понятие высоких нагрузок
 Проблемы сервисов и способы их решения

 Подходы к масштабированию
 Поиск и ан...
Высокие нагрузки
Что такое высокие нагрузки?

 100

хитов в день?

 10 000

хитов?

 10 000 000

хитов?

3
Высокие нагрузки

Высокие нагрузки – предел пропускной способности
того или иного ресурса

4
Высокие нагрузки
Ресурсы, подверженные проблемам

 Сеть
 Диск

 Процессор
 Память

5
Высокие нагрузки
Способы решения проблем

 Аппаратные
 Программные

6
Нехватка ресурсов
Проблемы с сетью

Основная проблема — слишком большой объем
трафика

7
Нехватка ресурсов
Проблемы с сетью

Аппаратное решение:
увеличиваем пропускную способность
 Сетевая карта
 Более произво...
Нехватка ресурсов
Проблемы с сетью

Программное решение:
уменьшаем трафик, увеличиваем скорость отдачи
 gzip
 вынос стат...
Нехватка ресурсов
Проблемы с сетью. CDN

CDN — Content Delivery Network

10
Нехватка ресурсов
Проблемы с диском

Основная проблема — ограничение пропускной
способности на чтение или запись

11
Нехватка ресурсов
Проблемы с диском

Аппаратное решение:
 Увеличение емкости

 Увеличение мощности (SATA → SAS или SSD)
...
Нехватка ресурсов
Проблемы с диском

Программное решение:
 Партиционирование данных

 Вынос данных в память

13
Нехватка ресурсов
Дисковые массивы

RAID0 (stripe)
запись

— ненадежно, но быстро на чтение и

RAID1 (mirror) — надежно, н...
Нехватка ресурсов
Проблемы с процессором

Основная проблема — слишком большое число
вычислительных операций

15
Нехватка ресурсов
Проблемы с процессором

Аппаратное решение:
 Увеличение частоты

 Добавление ядер

16
Нехватка ресурсов
Проблемы с процессором

Программное решение:
 Оптимизация кода

 Распараллеливание задач по ядрам

17
Нехватка ресурсов
Проблемы с памятью

Основная проблема — нехватка памяти, медленный
отклик, энергозависимость

18
Нехватка ресурсов
Проблемы с памятью

Аппаратное решение:
 Добавление памяти

 Ускорение памяти

19
Нехватка ресурсов
Проблемы с процессором

Программное решение:
 Оптимизация кода

 Улучшение структур
 Ссылки вместо ко...
Масштабирование ресурсов
Масштабирование

 Вертикальное
— увеличение мощности
ресурса, оптимизация кода и работы с данным...
Масштабирование ресурсов
Техники масштабирования

 Партиционирование
разделение данных на логические части

 Реплицирова...
Масштабирование ресурсов
Преимущества партиционирования

 Разделение на дисковые ресурсы
 Разделение на оперативную и ар...
Масштабирование ресурсов
Принципы шардирования

 Индекс указателей на данные
 Программное распределение

24
Масштабирование ресурсов
Алгоритмы распределения данных между узлами

 Round Robin
 Хэширование

 Консистентное хэширов...
Кэширование ресурсов
Типы кэширования

 По времени
 По количеству хитов

26
Кэширование ресурсов
Типы кэширования по времени

 Никогда
 Всегда

 Определенный период (TTL)

27
Кэширование ресурсов
Типы кэширования по хитам

 1-click
 N-click

28
Кэширование ресурсов
Техники кэширования

 Данные vs html
 Генерация данных: статики, баз данных

 Отказ от онлайна и п...
Кэширование ресурсов
Инструменты кэширования

 Память
 память как она есть
 cпециальные движки РСУБД
 NoSql
 nginx

...
Кэширование ресурсов
Проблемы кэширования

 Холодный старт
 Перестроение кэша

 Инвалидация кэша

31
Поиск узких мест
Поиск и анализ узких мест

 Мониторинг
 Нагрузочное тестирование

 Анализ архитектуры и кода

32
Поиск узких мест
Примеры анализа архитектуры

 Треды СУБД в ДМР
 Конфиги магазинов в ДМР

 Картинки и реестры на диске
...
Поиск узких мест
Нюансы оптимизации

 Привычные решения могут не работать
 Появляются костыли, сложный для понимания код...
Примеры решений
Оптимизация отдачи баланса

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

35
Примеры решений
Треды в ДМР

Проблема:
чрезмерное шардирование и безопасность привели к
большому количеству соединений с С...
Примеры решений
Конфиги магазинов в ДМР

Проблема:
рост числа данных в конфигах при неоптимальном
хранении структур в Perl...
Примеры решений
Картинки и реестры в файловой системе

Проблема:
большое число файлов в папке приводит к тормозам
файловой...
Примеры решений
Отдача главной страницы на Ответах

Проблема:
большое количество хитов и множество объектов

39
Примеры решений
Отдача главной страницы на Ответах

40
Примеры решений
Отправка большого числа писем

Проблема:
большие потребности в дисках

41
Примеры решений
Сбор статистики

Проблема:
обсчет большого числа параметрических данных на
сотнях узлов

42
Резюме
 Высокие нагрузки — это нехватка ресурсов
 Способов борьбы два: ставим железо, включаем
голову
 Техники масштаби...
Вопросы?
Максим Бабич
tpark@maxbabich.ru
+7 916 9415275
Upcoming SlideShare
Loading in...5
×

Разработка веб-сервисов осень 2013 лекция 11

133

Published on

Published in: Education
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
133
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
6
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Transcript of "Разработка веб-сервисов осень 2013 лекция 11"

  1. 1. Разработка веб-сервисов Беседа 11: Устойчивость архитектурного решения
  2. 2. План занятия  Понятие высоких нагрузок  Проблемы сервисов и способы их решения  Подходы к масштабированию  Поиск и анализ узких мест  Примеры проблем и способов борьбы с ними 2
  3. 3. Высокие нагрузки Что такое высокие нагрузки?  100 хитов в день?  10 000 хитов?  10 000 000 хитов? 3
  4. 4. Высокие нагрузки Высокие нагрузки – предел пропускной способности того или иного ресурса 4
  5. 5. Высокие нагрузки Ресурсы, подверженные проблемам  Сеть  Диск  Процессор  Память 5
  6. 6. Высокие нагрузки Способы решения проблем  Аппаратные  Программные 6
  7. 7. Нехватка ресурсов Проблемы с сетью Основная проблема — слишком большой объем трафика 7
  8. 8. Нехватка ресурсов Проблемы с сетью Аппаратное решение: увеличиваем пропускную способность  Сетевая карта  Более производительный маршрутизатор  Дополнительные каналы 8
  9. 9. Нехватка ресурсов Проблемы с сетью Программное решение: уменьшаем трафик, увеличиваем скорость отдачи  gzip  вынос статики на отдельный домен  CDN 9
  10. 10. Нехватка ресурсов Проблемы с сетью. CDN CDN — Content Delivery Network 10
  11. 11. Нехватка ресурсов Проблемы с диском Основная проблема — ограничение пропускной способности на чтение или запись 11
  12. 12. Нехватка ресурсов Проблемы с диском Аппаратное решение:  Увеличение емкости  Увеличение мощности (SATA → SAS или SSD)  Объединение в дисковые массивы  RAM-диски 12
  13. 13. Нехватка ресурсов Проблемы с диском Программное решение:  Партиционирование данных  Вынос данных в память 13
  14. 14. Нехватка ресурсов Дисковые массивы RAID0 (stripe) запись — ненадежно, но быстро на чтение и RAID1 (mirror) — надежно, но быстро читаем и медленно пишем 14
  15. 15. Нехватка ресурсов Проблемы с процессором Основная проблема — слишком большое число вычислительных операций 15
  16. 16. Нехватка ресурсов Проблемы с процессором Аппаратное решение:  Увеличение частоты  Добавление ядер 16
  17. 17. Нехватка ресурсов Проблемы с процессором Программное решение:  Оптимизация кода  Распараллеливание задач по ядрам 17
  18. 18. Нехватка ресурсов Проблемы с памятью Основная проблема — нехватка памяти, медленный отклик, энергозависимость 18
  19. 19. Нехватка ресурсов Проблемы с памятью Аппаратное решение:  Добавление памяти  Ускорение памяти 19
  20. 20. Нехватка ресурсов Проблемы с процессором Программное решение:  Оптимизация кода  Улучшение структур  Ссылки вместо копирования  Поиск утечек 20
  21. 21. Масштабирование ресурсов Масштабирование  Вертикальное — увеличение мощности ресурса, оптимизация кода и работы с данными  Горизонтальное узлов системы — увеличение количества 21
  22. 22. Масштабирование ресурсов Техники масштабирования  Партиционирование разделение данных на логические части  Реплицирование копирование данных  Шардирование распределение данных по нескольким узлам  Кэширование сохранение объекта в неизменном состоянии между запросами 22
  23. 23. Масштабирование ресурсов Преимущества партиционирования  Разделение на дисковые ресурсы  Разделение на оперативную и архивную части 23
  24. 24. Масштабирование ресурсов Принципы шардирования  Индекс указателей на данные  Программное распределение 24
  25. 25. Масштабирование ресурсов Алгоритмы распределения данных между узлами  Round Robin  Хэширование  Консистентное хэширование  Весовое распределение 25
  26. 26. Кэширование ресурсов Типы кэширования  По времени  По количеству хитов 26
  27. 27. Кэширование ресурсов Типы кэширования по времени  Никогда  Всегда  Определенный период (TTL) 27
  28. 28. Кэширование ресурсов Типы кэширования по хитам  1-click  N-click 28
  29. 29. Кэширование ресурсов Техники кэширования  Данные vs html  Генерация данных: статики, баз данных  Отказ от онлайна и псевдослучайные счетчики 29
  30. 30. Кэширование ресурсов Инструменты кэширования  Память  память как она есть  cпециальные движки РСУБД  NoSql  nginx  Файловая система 30
  31. 31. Кэширование ресурсов Проблемы кэширования  Холодный старт  Перестроение кэша  Инвалидация кэша 31
  32. 32. Поиск узких мест Поиск и анализ узких мест  Мониторинг  Нагрузочное тестирование  Анализ архитектуры и кода 32
  33. 33. Поиск узких мест Примеры анализа архитектуры  Треды СУБД в ДМР  Конфиги магазинов в ДМР  Картинки и реестры на диске  Категории вопросов на Ответах  Отправка писем на Рассылках 33
  34. 34. Поиск узких мест Нюансы оптимизации  Привычные решения могут не работать  Появляются костыли, сложный для понимания код 34
  35. 35. Примеры решений Оптимизация отдачи баланса Проблема: нужно отдавать тысячи запросов баланса в секунду 35
  36. 36. Примеры решений Треды в ДМР Проблема: чрезмерное шардирование и безопасность привели к большому количеству соединений с СУБД 36
  37. 37. Примеры решений Конфиги магазинов в ДМР Проблема: рост числа данных в конфигах при неоптимальном хранении структур в Perl 37
  38. 38. Примеры решений Картинки и реестры в файловой системе Проблема: большое число файлов в папке приводит к тормозам файловой системы 38
  39. 39. Примеры решений Отдача главной страницы на Ответах Проблема: большое количество хитов и множество объектов 39
  40. 40. Примеры решений Отдача главной страницы на Ответах 40
  41. 41. Примеры решений Отправка большого числа писем Проблема: большие потребности в дисках 41
  42. 42. Примеры решений Сбор статистики Проблема: обсчет большого числа параметрических данных на сотнях узлов 42
  43. 43. Резюме  Высокие нагрузки — это нехватка ресурсов  Способов борьбы два: ставим железо, включаем голову  Техники масштабирования разные, выбираем в зависимости от потребностей 43
  44. 44. Вопросы? Максим Бабич tpark@maxbabich.ru +7 916 9415275
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×