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

Содержание

Слайд 2

Что такое “большой” проект?

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

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

Слайд 3

Общее решение

Общее решение

Слайд 4

Горизонтальное масштабирование

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

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

Слайд 5

Вертикальное масштабирование

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

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

Слайд 6

Функциональное разбиение

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

В какой

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

Слайд 7

Шардинг

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

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

Слайд 8

Разбиение данных для шардинга

Статическое: по первой букве логина, хэширование идентификаторов или логинов.

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

Слайд 9

Как облегчить масштабирование?

Низкая степень связности данных и кода;
Разделение кода на

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

Слайд 10

Серебряная пуля

Серебряная пуля

Слайд 11

Отдельно о базах данных

База данных – типичное узкое место. Для базы данных

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

Слайд 12

Репликация

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

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

Слайд 13

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

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

Слайд 14

Специфика сообществ

Большое количество связей между объектами ? сложная программная архитектура.
Высокий hit ratio

Специфика сообществ Большое количество связей между объектами ? сложная программная архитектура. Высокий
? большое количество серверов.
Наличие сложных сервисов, реализуемых отдельными алгоритмами (поиск, сортировка, переписка, друзья друзей).
Имя файла: Разработка-высоконагруженных-проектов(например-–-сайтов-для-сообществ).pptx
Количество просмотров: 116
Количество скачиваний: 0