Highload sites, master-class, OK-2009

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

TAGS:

description

 

Transcript of Highload sites, master-class, OK-2009

Page 1: Highload sites, master-class, OK-2009

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

Олег Бунин

Page 2: Highload sites, master-class, OK-2009

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

• Сотни тысяч, миллионы, десятки миллионов хитов;

• Бесперебойная работа;• Сложная структура: серверный

парк, большое количество кода;

• Большое количество данных.

Page 3: Highload sites, master-class, OK-2009

В чем измерять нагрузку?• Посетители;• Хосты;• Хиты.

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

Page 4: Highload sites, master-class, OK-2009

Зависимость серверного парка от типа проекта

Отношение hit ratio Количество серверов при одинаковой посещаемости

Корпоративный сайт 1:3 1

СМИ 1:4 1

Интернет-магазин 1:5 1

Фотохостинг 1:10 3

Блогосфера 1:100 5

Социальная сеть 1:50 5

Видеохостинг 1:10 5

Сайт знакомств 1:50 5

Онлайн-игра 30

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

Page 5: Highload sites, master-class, OK-2009

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

Page 6: Highload sites, master-class, OK-2009

Типы роста нагрузки

• Рост ресурсов, требуемых на обработку потока запросов;

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

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

Page 7: Highload sites, master-class, OK-2009

Типичные узкие места проектовПотенциальные проблемы производительности

Корпоративный сайт

СМИ База данных с большим количеством статей, производительность базы данных

Интернет-магазин Производительность серверов

Фотохостинг Скорость и объемы жестких дисков

Блогосфера Производительность серверов, скорость и объемы жестких дисков

Социальная сеть Производительность серверов

Видеохостинг Скорость и объемы жестких дисков

Сайт знакомств Производительность серверов

Онлайн-игра Производительность серверов

Page 8: Highload sites, master-class, OK-2009

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

1 2 3 4 5 6 7 80

2

4

6

8

10

12

14

16

18

СМИВидеохостингСайт знакомствОнлайн-игра

Page 9: Highload sites, master-class, OK-2009

Масштабиро-вание

Горизонтальное

масштабирование (scaling

out)

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

up)

Функциональное

разделение (partitioning)

Шардинг (sharding

)

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

Page 10: Highload sites, master-class, OK-2009

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

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

Отлично работает для вычисляющих серверов, а как быть с базой данных?

Что делать со связанными общими для нескольких серверов данными?

Page 11: Highload sites, master-class, OK-2009

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

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

В какой-то момент мы все равно достигнем предела по процессору, памяти или жесткому диску.

Page 12: Highload sites, master-class, OK-2009

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

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

В какой то момент мы все равно упремся в физические возможности сервера.

Page 13: Highload sites, master-class, OK-2009

Шардинг

Разбиение данных на кусочки, которые раскладываются по

серверам-шардам.Как правильно разбить данные для шардинга? Как правильно идентифицировать данные?

У них просто нет выбора:

Page 14: Highload sites, master-class, OK-2009

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

Динамическое: есть координирующий центр, который отвечает на вопрос “где лежит”? Он

же является узким местом, зато добавление новых серверов происходит без

изменения кода.

Page 15: Highload sites, master-class, OK-2009

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

Page 16: Highload sites, master-class, OK-2009

Масштабируем

аяархитек

тура

Слабосвязанная

Слоистая

Горизонтальное

масштабирование

Асинхронные

вычисления

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

Page 17: Highload sites, master-class, OK-2009

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

данных актуальны все вышеперечисленные

методы увеличения производительности:

горизонтальное и вертикальное масштабирование, функциональное разбиение, шардинг.

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

Page 18: Highload sites, master-class, OK-2009

РепликацияСинхронизация нескольких копий объекта.

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

Page 19: Highload sites, master-class, OK-2009

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

Frontend

Design images

nginx memcached

DNS-БалансингDNS-Балансинг

Image Server / 2

User images

nginx Backend / 1

PHP

Backend / 2

PHP

Backend / 3

PHP

Демоны

Database / 1

MySQL

Database / 2

MySQL для блогов

Image Server / 1

User images

nginx

Page 20: Highload sites, master-class, OK-2009

Структура типичного веб-проекта• Фронтенд – легкий быстрый сервер,

отвечающий за отдачу статических картинок;

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

• База данных, хранилище данных.

Page 21: Highload sites, master-class, OK-2009

Узкие местаУзкое место Характерно для… Решается…

Производительность вычисляющих серверов (бекендов)

Для всех типов сайтов, особенно для социальных сетей и блогосфер

Добавление новых серверов, изменением архитектуры программного обеспечения

Данные не помещаются в оперативную память

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

Покупка более подходящего аппаратного обеспечения или изменение архитектуры программного обеспечения

Данные не влезают на диск

Для фотохостингов, видеохостингов

Разбиение хранилища на части и написание специального алгоритма маршрутизации файла (например, по его имени). Разные части разносятся на разные сервера

Данные нельзя разбить, но они не влезают на один диск

Для почтовых систем, поисковых систем

Покупка специальных дисковых хранилищ – дорогие устройства с повышенной емкостью.

Page 22: Highload sites, master-class, OK-2009

Узкие места - 2Узкое место Характерно для… Решается…

Объем отдаваемого трафика

Характерно для видеохостингов, онлайн-игр и любых крупных проектов

Покупка дополнительных серверов (фронтендов), покупка специального маршрутизирующего аппаратного обеспечения. Также возможна аренда более мощного канала и изменение топологии серверного парка

Производительность базы данных

Крупные СМИ, интернет-магазины

Покупка или аренда специализированных серверов для базы данных. Оптимизация и тюнинг базы данных.

Объем и производительность базы данных

Для любого крупного сайта

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

Page 23: Highload sites, master-class, OK-2009

Развитие проекта

Рефакторинг, изменение

архитектуры

Рост посещаемости

через оптимизацию

Невозможность дальнейшего

роста посещаемости,

технологическое ограничение

Page 24: Highload sites, master-class, OK-2009

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

Page 25: Highload sites, master-class, OK-2009

Быстрая помощь• Программные решения наиболее эффективны, но требуют много

времени;

• Требуемый уровень специалистов иногда запредельно высок;

• Хостинг;

• Более мощное аппаратное обеспечение;

• Покупка Oracle ;-)

• Редуцирование функциональности;

• Уменьшение качества;

• Оптимизация нагрузки;

Page 26: Highload sites, master-class, OK-2009

Прогнозирование нагрузки• Нагрузочное тестирование. Организация

нагрузочного тестирования. Почему стоит заказывать нагрузочное тестирование на стороне?

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

• Опытные оценки, примеры.

Page 27: Highload sites, master-class, OK-2009

[email protected]: oleg_bunin