Учебник по построению высоконагруженных систем Олег Бунин.

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



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

Разработка высоконагруженных проектов Олег Бунин.
Разработка высоконагруженных проектов, Что нового? Олег Бунин.
Пошаговый алгоритм разработки высоконагруженной системы Олег Бунин
Организация распределенных прикладных систем. Попытаемся ответить на вопросы Как устроены распределенные прикладные системы? Каковы наиболее важные их.
Как увеличить скорость работы проекта путём оптимизации архитектуры БД
Администрирование информационных систем Лекция 4. Система управления базами данных.
Базы данных Лекция 01 Информационные технологии баз данных.
Владимир Костюков, АлтГТУ АлтГТУ им И. И. Ползунова Распределенная система мониторинга и диспетчерезации процессов гетерогенной среды.
Масштабируемость Интернет-ресурсов Игорь Лобанов Центр Финансовых Технологий.
Лекция 22 Лекция 22 Локальные, сетевые и распределенные базы данных. Архитектура «файл- сервер». Двух и трехуровневая архитектура «клиент-сервер». Модель.
Локальная сеть Типы локальных сетей Топология сетей.
Построение системного ландшафта для высоко нагруженного проекта ООО «Ленвендо-Софт» Гаврилов Виталий Технический директор тел.: +7 (812)
Мониторинг внедрения ИТ и ИС. Критерии эффективности ИР использование по времени; использование по мощности. В основе любой ИС лежит совокупность приложений,
Платформа разработки высоконагруженного веб-сервиса: инструменты отладки и возможности масштабирования Александр Демидов руководитель направления арендных.
АлтГТУ им И. И. Ползунова. АлтГТУ им. И. И. Ползунова Модель распределенной системы мониторинга.
Распределенная обработка информации Разработано: Е.Г. Лаврушиной.
АлтГТУ им И. И. Ползунова. АлтГТУ им. И. И. Ползунова Проблемы эксплуатации Текст.
Работу выполнила студентка гр. 9 Бд 111 Евженко Дарья.
Использование MySQL в сервисе дневников LiveInternet.ru Практика, практика, практика Гурьянов Андрей, программист Новиков Лев, системный администратор.
Транксрипт:

Учебник по построению высоконагруженных систем Олег Бунин

Цель доклада Представить набор инструментов, используемых в разработке архитектур высоконагруженных систем. Инструменты разные, правильные, не правильные, используйте на свой вкус

Монолитное приложение Приложение представляет из себя монолитный программный код. Плюсы: Отсутствие какого-либо оверхеда на интеркоммуникацию сервисов; Минусы: Высокая сложность разработки; В случае проблемы встает все; Невозможность вести распределенную разработку.

Сервис-ориентированная архитектура Каждый сервис решает строго определенную задачу. Основной минус этого подхода заключается в наличии оверхеда на интеркоммуникацию сервисов между собой и на обработку API взаимодействия между слоями.

Ремесленный подход Бизнес-логика проекта и инструменты для масштабирования разрабатываются одновременно, учитывая особенности бизнес-логики именно этого проекта.

Ремесленный подход Быстрая разработка любых новых решений; Высокие требования к квалификации разработчиков – низкая масштабируемость разработки; Максимально эффективное использование технологий и аппаратного обеспечения;

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

Промышленный подход Очень долгая разработка общих инструментов; Очень быстрая разработка приложений – происходит сборка страниц как в конструкторе Lego; Возможность использовать для разработки приложений программистов средней и низкой квалификации – высокая масштабируемость разработки; Повышенные требования к аппаратному обеспечению;

МАСШТАБИРОВАНИЕ АРХИТЕКТУРНОГО РЕШЕНИЯ

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

Горизонтальное масштабирование Увеличение производительности системы за счет подключения дополнительных cерверов

Масштабирование во времени Различные данные имеют различные требования к обновлению. Это позволяет нам отложить часть обработки данных до более удобного случая.

ТРЕХЗВЕННАЯ СТРУКТУРА

Трехзвенная структура

МАСШТАБИРОВАНИЕ ФРОНТЕНДА

Для чего нужен фронтенд? Отдача статического контента; Буферизация запросов; Масштабирование бекендов; Обслуживание медленных клиентов.

Дублирование фронтендов

Балансировка фронтендов

Балансировка бекендов

МАСШТАБИРОВАНИЕ БЕКЕНДА

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

Классическое горизонтальное масштабирование Низкая степень связности кода; Share-nothing для горизонтального масштабирования; Слоистость кода; Минимизация использования сложных запросов сразу к нескольким таблицам;

Кеширование Единый кеш для всех бекендов; Проблема инвалидации кеша; Проблема старта с непрогретым кешем;

Проблема инвалидации кеша Обновление по запросу (проблема race condition для нагруженных страниц); Фоновое обновление;

МАСШТАБИРОВАНИЕ ВО ВРЕМЕНИ

Очереди Структура данных с дисциплиной доступа к элементам FIFO (First In First Out). Применения: 1.Отложенная обработка (рассылки, обновления лент новостей); 2.Межсервисная коммуникация;

Очереди: модерация

ИНТЕРКОММУНИКАЦИЯ

Антишквал Ряд бекендов, выполняющих однотипные задачи. Запрос приходит на первый бекенд, начинает выполняться, но не успевает за время таймаута. Фронт перебрасывает запрос на новый бекенд, тот тоже не успевает. Таким образом очень быстро вся сеть бекендов будет положена.

Антишквал: решение с очередью Промежуточное звено с очередью, бекенды сами забирают из него задачи. Проблемы этого варианта: – Смешение подходов - синхронную задачу решают асинхронными методами; – Не решает проблему с тем, если фронт отключился, то запрос остался; – Те задачи, которые попали на тормозящий бекенд - пропадают. Это решается перестартом очереди.

Антишквал: умные запросы Умные запросы от фронтенда: – Первый запрос к первому бекенду идет с таймаутом 1 секунду. Второй запрос идет с таймаутом 2 секунды, третий - 3 секунды, а четвертого уже нет. То есть ограничиваем количество запросов; – Бекенд может принимать решение о том, что он перегружен (раз в секунду спрашивать LA и кэшировать его). При начале обработке запроса происходит проверка и если LA слишком высокий - отдаем фронту Gone Away (штатная ситуация - перейди к другому бекенду).

Интеркоммуникация сервисов Задача: необходимо уведомлять одни части системы о событиях, которые происходят в других частях: размещение информации в пользовательских лентах (feeds) о событиях, произошедних в сообществах; лайки; комментарии; рассылка писем;

Интеркоммуникация: решение с очередью

МАСШТАБИРОВАНИЕ БАЗ ДАННЫХ

Типы баз данных Реляционная модель: данные в базе данных представляют собой набор отношений; Иерархическая модель: база данных состоит из объектов с указанием отношений родитель ребенок; Сетевая модель: база данных со структурой в виде графа; Объектно-ориентированная модель: база данных, в которой данные представлены в виде моделей объектов.

Шардинг Базовый принцип: те данные, которые в дальнейшем потребуются вместе, так же должны храниться вместе. Примеры: 1.Пользователи; 2.Посты в сообществах; 3.Блоги; Принципы разбиения данных на шарды: 1.Центральный диспетчер, знающий, что где лежит; 2.Хэш-функция, по ключу вычисляющая шард; 3.Хэш-функция, по ключу вычисляющая виртуальный шард + таблица соответствий виртуальных шардов реальным.

Виртуальные шарды

Партиционирование Функциональное разделение базы данных. Разные данные хранятся в разных таблицах. или Разные данные хранятся в разных СУБД. или Разные данные хранятся в разных типах СУБД.

Кластеризация

Репликация

Денормализация данных Денормализация намеренное приведение структуры базы данных в состояние, не соответствующее критериям нормализации, обычно проводимое с целью ускорения операций чтения из базы за счет добавления избыточных данных.

НАДЕЖНОСТЬ

Принципы надежности Взаимозаменяемость серверов; Избыточность данных, дублирование узлов: – Фронтенд: DNS-балансировка, CARP, heartbeat; – Бекенд: гомогенные взаимозаменяемые бекенды; – База данных: дублирование данных, репликации, кластера;

ЭКСПЛУАТАЦИЯ

Мониторинг Вы должны с абсолютной точностью знать, что происходит в системе. Мониторинг бизнес-показателей.

Мониторинг: pinba

Деплоймент Регулярный быстрый автоматический деплоймент с возможностью сплит- тестирования и возможностью быстрого отката.

facebook.com/oleg.bunin