'

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

Понравилась презентация – покажи это...





Слайд 0

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


Слайд 1

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


Слайд 2

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


Слайд 3

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


Слайд 4

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


Слайд 5

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


Слайд 6

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


Слайд 7

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


Слайд 8

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


Слайд 9

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


Слайд 10

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


Слайд 11

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


Слайд 12

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


Слайд 13

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


Слайд 14

oleg.bunin@ontico.ru


×

HTML:





Ссылка: