Масштабируемость Интернет

advertisement
Масштабируемость Интернет-ресурсов
Игорь Лобанов
Центр Финансовых Технологий
Некоторые определения
• Атрибут качества – описание реакции
системы на некоторый вид стумулов
▫ производительность
▫ масштабируемость
▫ безопасность
• Архитектура – сумма ограничений
реализации, призванная обеспечить
выполнение атрибутов качества
• Архитектор – ответственный за установку и
соблюдение ограничений
Slashdot-эффект
• Сотни новых посетителей в
минуту в течение 20 часов
• Мгновенный рост нагрузки
на два порядка
• Уникальная возможность и
большая опасность
Атрибуты качества
• Масштабируемость
▫ рост числа клиентов – нет деградации качества
• Производительность
▫ любой запрос клиента – время отклика
• Отказоустойчивость
▫ выход из строя узла – сохранение доступности
Звенья информационной системы
Информационная система
Ввод-вывод
Apache, lighhtp
Сеть
Прикладная логика
PHP, Perl, Ruby, Java
CPU
Доступ к данным
mysql, oracle
Дисковый ввод-вывод
Профилирование
Кривые масштабирования
CPU/число клиентов
IOWait/число клиентов
Риски нагрузочного тестирования
• Неадекватный профиль нагрузки
▫ берём исторические данные
• Искажение результатов эксперимента
▫ контролируем способ измерения
• Неадекватный инструмент
▫ контролируем реальный профиль нагрузки
Повышение масштабируемости
• Оптимизация
▫ в идеале – избавление от работы вообще
• Вертикальное масштабирование
▫ более производительное оборудование
• Горизонтальное масштабирование
▫ кластеризация – распределение нагрузки
Content Delivery Network
Оптимизация прикладной логики
• Алгоритмические оптимизации
• Прикладное кэширование
▫ что?
 страницы
 фрагменты страниц
 результаты запросов к базе данных
▫ hit ratio
▫ инвалидация
• Асинхронная обработка запросов
Оптимизация доступа к данным
•
•
•
•
Постоянные соединения
Индексирование
Денормализация схемы данных
Преагрегация данных
Денормализация схемы данных
Преагрегация данных
Оптимизация СУБД
• Тюнинг
▫ обмениваем скорость на потребление памяти
• Блочный кэш
▫ уменьшение физических дисковых чтений
• Кэш запросов
▫ результаты часто повторяющихся запросов
Вертикальное масштабирование
За
Против
• Код и архитектура не
требуют доработки
• Оборудование со временем
становится быстрее и
дешевле
• Цена на старшие модели
растёт быстрее, чем их
относительная
производительность
▫ бюджет кончится раньше!
Масштабирование кластера
Распределение нагрузки
Общее состояние: каждый за себя
• Локальные сессионные
данные в узле
• Локальный кэш в узле
• Инвалидация кэша?
Общее состояние: на клиенте
• Все сессионные данные
присутствуют в каждом
запросе
• Кэш?
• Требования безопасности?
Общее состояние: в базе данных
• Вся сессионная информация
в базе данных, узлы в
кластере прикладной логики
«обезличены»
• Дополнительная нагрузка на
базу данных
• Кэш?
Общее состояние: кластерный кэш
• «Общая память» подходит и
для сессионных данных, и
для кэша
• Нет проблем с
инвалидацией кэша
• Требуется переработка
системы
Репликация данных
• Синхронная
▫ изменения во всех узлах кластера БД
• Асинхронная
▫ мастер-ведомый
▫ мультимастер
Шардинг данных
Fresh meat
• Cloud computing
▫ Amazon Elastic Compute Cloud (EC2)
• Infrastructure as a Service (IaaS)
▫
▫
▫
▫
▫
Amazon Simple Storage Service (S3)
Amazon SimpleDB
Google AppEngine
Google BigTable
EngineYard
Download