Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

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

450 views

Published on

Published in: Education
  • Be the first to comment

  • Be the first to like this

Разработка веб-сервисов осень 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

×