Разработка высоконагруженных проектов Олег Бунин.

Презентация:



Advertisements
Похожие презентации
Разработка высоконагруженных проектов (например – сайтов для сообществ) Олег Бунин.
Advertisements

Учебник по построению высоконагруженных систем Олег Бунин.
Нагрузочное тестирование Применение при разработке высоконагруженных веб- проектов Михаил Токовинин, генеральный директор компании QSOFT +7 (495)
Касьянов А.А. 1 ПРОЕКТ:. Общая характеристика проекта Цель проекта: повышение количества одновременно обслуживаемых интернет-пользователей, в условиях.
Аспекты увеличения быстродействия «1С-Битрикс: Управление сайтом» на виртуальном хостинге Артём Рябинков 1С-Битрикс.
1С-Битрикс: Управление сайтом 10.0 Веб-кластер.
Администрирование информационных систем Лекция 4. Система управления базами данных.
Масштабируемость Интернет-ресурсов Игорь Лобанов Центр Финансовых Технологий.
Построение системного ландшафта для высоко нагруженного проекта ООО «Ленвендо-Софт» Гаврилов Виталий Технический директор тел.: +7 (812)
Платформа разработки высоконагруженного веб-сервиса: инструменты отладки и возможности масштабирования Александр Демидов руководитель направления арендных.
Эволюция архитектур систем статистики Максим Зотов, Герман Клименко. Компания LiveInternet.ru РИФ 2006, 22 марта.
Использование MySQL в сервисе дневников LiveInternet.ru Практика, практика, практика Гурьянов Андрей, программист Новиков Лев, системный администратор.
Пошаговый алгоритм разработки высоконагруженной системы Олег Бунин
Организация распределенных прикладных систем. Попытаемся ответить на вопросы Как устроены распределенные прикладные системы? Каковы наиболее важные их.
Masterhost.ru Выбор хостинг-платформы для размещения сайта.
Распределенные и параллельные вычисления на MS SQL (always on). Адаптация для 1С 8 Сердюк Владимир Баркетов Павел.
Что такое ЦОД? ЦОД специализированное здание для размещения (хостинга) серверного и коммуникационного оборудования и подключения к каналам сети Интернет.
БАЗЫ ДАННЫХ часть II Параллельные архитектуры баз данных.
ОЦЕНКА ХАРАКТЕРИСТИК РАБОТЫ ПОРТАЛА ЕСИМО А.А. Федорцов А.В. Кобелев научн. рук. д.т.н Е.Д. Вязилов.
BigData изнутри: технологии и алгоритмы Александр Сербул руководитель направления, разработчик Партнерская конференция «1С-Битрикс»
Транксрипт:

Разработка высоконагруженных проектов Олег Бунин

Что такое большой проект? Сотни тысяч, миллионы, десятки миллионов хитов; Бесперебойная работа; Сложная структура: серверный парк, большое количество кода; Большое количество данных.

В чем измерять нагрузку? Посетители; Хосты; Хиты. Технический отдел меряет посещаемость в хитах! Имея прогноз посещаемости можно сделать выводы о использовании процессора, памяти и жестких дисков.

Зависимость серверного парка от типа проекта Это сравнительная таблица, количество серверов указано относительное именно для сравнения, а не как абсолютные цифры.

Что такое рост нагрузки с технической точки зрения?

Типы роста нагрузки Рост ресурсов, требуемых на обработку потока запросов; Рост ресурсов, требуемых для хранения пользовательских данных; Рост ресурсов, требуемых для передачи данных между пользователями и сервером.

Типичные узкие места проектов

Требуемые ресурсы при росте посещаемости

Масштабиро- вание Горизонтальное масштабирование (scaling out) Вертикальное масштабирование (scaling up) Функциональное разделение (partitioning) Шардинг (sharding) Общее решение

Горизонтальное масштабирование Увеличение производительности системы за счет подключения дополнительных cерверов. Отлично работает для вычисляющих серверов, а как быть с базой данных? Что делать со связанными общими для нескольких серверов данными?

Вертикальное масштабирование Увеличение производительности системы за счет увеличения мощности сервера. В какой-то момент мы все равно достигнем предела по процессору, памяти или жесткому диску.

Функциональное разбиение Разные функциональные части работают и хранятся на разных серверах системы. В какой то момент мы все равно упремся в физические возможности сервера.

Шардинг Разбиение данных на кусочки, которые раскладываются по серверам-шардам. Как правильно разбить данные для шардинга? Как правильно идентифицировать данные? У них просто нет выбора:

Разбиение данных для шардинга Статическое: по первой букве логина, хэширование идентификаторов или логинов. Единого центра нет, соответственно нет узкого места, зато есть сложности с разрешением заранее непредусмотренных ситуаций. Динамическое: есть координирующий центр, который отвечает на вопрос где лежит? Он же является узким местом, зато добавление новых серверов происходит без изменения кода.

Как облегчить масштабирование? Низкая степень связности данных и кода; Разделение кода на слои (как минимум слой связи с базой данных и слой кэширования); Рефакторинг, высокое качество кода, минимизация workaroundов; Контроль над системой, мониторинг; Минимизация академических решений (построение таблиц на лету, ORM).

Масштабируемая архитектура Слабосвязанная Слоистая Горизонтальное масштабирование Асинхронные вычисления Серебряная пуля

Отдельно о базах данных База данных – типичное узкое место. Для базы данных актуальны все вышеперечисленные методы увеличения производительности: горизонтальное и вертикальное масштабирование, функциональное разбиение, шардинг. Горизонтальное масштабирование в случае с БД достигается с помощью репликации.

Репликация Синхронизация нескольких копий объекта. Наиболее эффективна при небольшом количестве слейвов, иначе усложняется схема распространения изменений, которое, в дальнейшем, становится узким местом. Усложнение программной архитектуры – например, чтение данных с слейва, до которого не докатились изменения.

Типичная архитектура: обычный сайт

Структура типичного веб-проекта Фронтенд – легкий быстрый сервер, отвечающий за отдачу статических картинок; Бекенд – тяжелый программный сервер, производящий вычисления и строящий веб- страницы; База данных, хранилище данных.

Узкие места

Узкие места - 2

Развитие проекта Рефакторинг, изменение архитектуры Рост посещаемости через оптимизацию Невозможность дальнейшего роста посещаемости, технологическое ограничение

Быстрый рост нагрузки – что делать?

Быстрая помощь Программные решения наиболее эффективны, но требуют много времени; Требуемый уровень специалистов иногда запредельно высок; Хостинг; Более мощное аппаратное обеспечение; Покупка Oracle ;-) Редуцирование функциональности; Уменьшение качества; Оптимизация нагрузки;

Прогнозирование нагрузки Нагрузочное тестирование. Организация нагрузочного тестирования. Почему стоит заказывать нагрузочное тестирование на стороне? Формулы экстраполяции результатов тестирования на реальную работу. Пиковый характер http-трафика. Тестирование сферического коня в вакууме. Опытные оценки, примеры.

LiveJournal: oleg_bunin