(1 часть) 1С-Битрикс. Как настроить двухуровневую конфигурацию веб-приложения...
Highload: проблемы и решения
1. Highload: проблемы и решения
Что нужно знать, приступая к новому проекту?
Ufa Developer Community. Олег Шерыхалин, o.sherykhalin@gmail.com
2. Что такое highload?
10 запросов в секунду — это highload?
20 запросов?..
100?!
Highload — это когда система
не справляется с нагрузкой :)
Признаки проблемы:
увеличение времени обслуживания
отказ обслуживания
3. Кривая деградации сервиса
обслуженные
запросы
зона Highload
«падение»
сервиса
штатная
работа
поступившие запросы
4. Highload приходит внезапно…
Нагрузка растёт неравномерно. Возможные причины:
суточная и календарная цикличность посещаемости
внешние события (breaking news)
эффект от рекламной кампании
распродажи и акции, привлекающие посетителей
зона Highload Прогноз
посещаемость
посещаемости
Фактическая
посещаемость
время
5. Узкие места
Процессор
Оперативная память
Дисковая подсистема
Сеть
6. Масштабируемость
Вертикальная Горизонтальная
Улучшение Наращивание количества
характеристик, «расширение» компонентов системы,
«узкого места», добавление оборудования
апгрейд оборудования
7. Процессор: что внутри? Потоки.
Синхронная модель
Каждый запрос запускается в отдельном потоке
Количество потоков ограничено (пул потоков)
Ожидающие ресурс потоки могут заполнить весь пул
Пример: Apache, IIS
Асинхронная модель
Один поток (на каждое ядро процессора)
Диспетчер следит за событиями и вызывает обработчики
Количество обработчиков зависит от производительности
Пример: NginX, node.js
8. Кэширование данных
Задача: разгрузить дисковую подсистему и процессор
Решение: переместить данные в оперативную память
Что кэшировать?
частые выборки из базы
динамические фрагменты html
Как кэшировать?
memcached
Дополнительные решения:
использование Content Delivery Network (CDN)
кэширование данных на клиенте
9. Сборка HTML на клиенте
база шаблоны база шаблоны
данных страниц данных страниц
Обработка Подготовка Обработка
данных HTML данных
сервер сервер
клиент клиент
Отображе- Отображе- Подготовка
ние ние HTML
10. Оптимизация баз данных
Грамотное проектирование схемы
Использование индексов
Оптимизация SQL–запросов
Настройка параметров СУБД
11. NoSQL — нереляционная модель
Денормализация — это не баг, а фича
Key–value хранилища:
Redis, Cassandra
Документо–ориентированные СУБД:
MongoDB, CouchDB
Главные преимущества:
быстрый доступ к данным
простота горизонтального масштабирования
Нельзя просто взять и заменить SQL на NoSQL!
12. Кластеризация web–серверов
Распараллеливание, балансировка нагрузки
Балансировщи
к нагрузки
web- web- web-
сервер сервер сервер
Проблема: поддержка сессий клиентов
Решения: sessionless, хранение сессий в
БД, интеллектуальный балансировщик
13. Кластеризация баз данных
Репликация master-slave Репликация master-master
write
read only read read read
only only write write
replication replication
Шардинг — разделение данных на независимые объекты
read read read
write write write
Object A Object B Object C
14. «Облачные» решения
Ресурсы по требованию: подключаем дополнительные
мощности только на время пиковой нагрузки
Пример: Amazon Web Services (AWS)
Elastic Load Balancing — балансировка
CloudWatch — мониторинг
Auto Scaling — добавление серверов
Иллюстрация из статьи
«Архитектура Битрикс24
— взгляд изнутри»
, habrahabr.ru, 26.04.2012
15. Отказоустойчивость
Риски отказов
отказы серверов
отказы каналов связи
аварии датацентров
Управляемая деградация
«урезание» функционала ради сохранения
доступности системы для пользователей
Восстановление
План восстановления в случае аварии
Регулярные «учения» по восстановлению
Контроль доступности резервных копий
16. Сетевые атаки
Виды атак:
ICMP/UDP/SYN/ACK-флуд
Атаки на прикладном уровне
Цели атак:
Просто «положить» сайт на некоторое время
Получить доступ к конфиденциальным данным
Внедрить бота
Способы защиты:
Грамотная настройка ОС, серверов
Использование fierewall, специальных модулей
Услуги специализированных провайдеров
17. И это ещё не всё…
Мониторинг
Деплоймент
Нагрузочное тестирование