SlideShare uma empresa Scribd logo
1 de 27
Разработка
высоконагруженных проектов
         Олег Бунин
Что такое “большой” проект?
• Сотни тысяч, миллионы, десятки
  миллионов хитов;
• Бесперебойная работа;
• Сложная структура:
  серверный парк,
  большое количество
  кода;
• Большое количество
  данных.
В чем измерять нагрузку?
• Посетители;
• Хосты;
• Хиты.

 Технический отдел меряет посещаемость в
 хитах! Имея прогноз посещаемости можно
 сделать выводы о использовании
 процессора, памяти и жестких дисков.
Зависимость серверного парка от
            типа проекта
                     Отношение 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
                                 Это сравнительная таблица, количество серверов указано
                       относительное именно для сравнения , а не как абсолютные цифры.
Что такое рост нагрузки с
технической точки зрения?
Типы роста нагрузки
• Рост ресурсов, требуемых на обработку
  потока запросов;
• Рост ресурсов, требуемых для хранения
  пользовательских данных;
• Рост ресурсов, требуемых для передачи
  данных между пользователями и сервером.
Типичные узкие места проектов
                     Потенциальные проблемы производительности
Корпоративный сайт
СМИ                  База данных с большим количеством статей,
                     производительность базы данных
Интернет-магазин     Производительность серверов
Фотохостинг          Скорость и объемы жестких дисков
Блогосфера           Производительность серверов, скорость и объемы
                     жестких дисков
Социальная сеть      Производительность серверов
Видеохостинг         Скорость и объемы жестких дисков
Сайт знакомств       Производительность серверов
Онлайн-игра          Производительность серверов
Требуемые ресурсы при росте
            посещаемости
18
16
14
12
                                     СМИ
10
                                     Видеохостинг
8
                                     Сайт знакомств
6
                                     Онлайн-игра
4
2
0
     1   2   3   4   5   6   7   8
Общее решение
               Горизонтальное
              масштабирование
                 (scaling out)




             Масштабиро-           Вертикальное
Шардинг
                                 масштабирование
(sharding)
                вание               (scaling up)




              Функциональное
                 разделение
                (partitioning)
Горизонтальное масштабирование
Увеличение
производительности
системы за счет
подключения
дополнительных cерверов.

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

Что делать со связанными общими для нескольких
серверов данными?
Вертикальное масштабирование
                  Увеличение
                  производительности
                  системы за счет
                  увеличения мощности
                  сервера.

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

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

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

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




                               Слабосвязанная
 Асинхронные
  вычисления

                  Масштабируемая
                     архитектура
                                        Слоистая

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

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

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


                User images                    User images


                                                                Backend / 1     Database / 1
                    nginx                         nginx

                                                                PHP            MySQL




                                                                Backend / 2     Database / 2

                                                                              MySQL для
                                                                PHP
                                                                               блогов
                                      Frontend

                    nginx          memcached

                                                                Backend / 3

                                                                PHP
                Design images
DNS-Балансинг
DNS-Балансинг                                                  Демоны
Структура типичного веб-проекта
• Фронтенд – легкий быстрый
  сервер, отвечающий за отдачу статических
  картинок;
• Бекенд – тяжелый программный
  сервер, производящий вычисления и
  строящий веб-страницы;
• База данных, хранилище данных.
Узкие места
Узкое место            Характерно для…               Решается…
Производительность     Для всех типов сайтов,        Добавление новых серверов,
вычисляющих            особенно для социальных       изменением архитектуры
серверов (бекендов)    сетей и блогосфер             программного обеспечения
Данные не              Для некоторых конкретных      Покупка более подходящего
помещаются в           сервисов: поиск, поиск на     аппаратного обеспечения или
оперативную память     сайте знакомств, построение   изменение архитектуры
                       френдленты,                   программного обеспечения
                       коллаборативная
                       фильтрация.
Данные не влезают      Для фотохостингов,            Разбиение хранилища на части и
на диск                видеохостингов                написание специального алгоритма
                                                     маршрутизации файла (например,
                                                     по его имени). Разные части
                                                     разносятся на разные сервера
Данные нельзя          Для почтовых систем,          Покупка специальных дисковых
разбить, но они не     поисковых систем              хранилищ – дорогие устройства с
влезают на один диск                                 повышенной емкостью.
Узкие места - 2
Узкое место          Характерно для… Решается…
Объем отдаваемого    Характерно для      Покупка дополнительных серверов
трафика              видеохостингов,     (фронтендов), покупка специального
                     онлайн-игр и        маршрутизирующего аппаратного
                     любых крупных       обеспечения. Также возможна аренда более
                     проектов            мощного канала и изменение топологии
                                         серверного парка
Производительность   Крупные СМИ,        Покупка или аренда специализированных
базы данных          интернет-магазины   серверов для базы данных. Оптимизация и
                                         тюнинг базы данных.
Объем и              Для любого          В качестве первого шага возможна настройка
производительность   крупного сайта      кластера баз данных или репликации, когда
базы данных                              базу данных обслуживает несколько серверов.
                                         Более долгосрочное решение –
                                         переписывание программного кода так, чтобы
                                         он работал с несколькими базами данных или
                                         вообще без них.
Развитие проекта

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




                     Рост
               посещаемости
                    через
                оптимизацию
Быстрый рост нагрузки – что
         делать?
Быстрая помощь
• Программные решения наиболее эффективны, но требуют много
  времени;
• Требуемый уровень специалистов иногда запредельно высок;

• Хостинг;
• Более мощное аппаратное
  обеспечение;
• Покупка Oracle ;-)
• Редуцирование
  функциональности;
• Уменьшение качества;
• Оптимизация нагрузки;
Прогнозирование нагрузки
• Нагрузочное тестирование. Организация
  нагрузочного тестирования. Почему стоит
  заказывать нагрузочное тестирование на
  стороне?
• Формулы экстраполяции результатов
  тестирования на реальную работу. Пиковый
  характер http-трафика. “Тестирование
  сферического коня в вакууме”.
• Опытные оценки, примеры.
oleg.bunin@ontico.ru
LiveJournal: oleg_bunin

Mais conteúdo relacionado

Mais procurados

телемост эффективный цод 1
телемост   эффективный цод 1телемост   эффективный цод 1
телемост эффективный цод 1it.times.com.ua
 
презентация стратегич. план.Microsoft Office Power Point
презентация стратегич. план.Microsoft Office Power Pointпрезентация стратегич. план.Microsoft Office Power Point
презентация стратегич. план.Microsoft Office Power PointSheffing7
 
стратегический план презентация
стратегический план презентациястратегический план презентация
стратегический план презентацияdacenkoff
 
Аппаратные средства
Аппаратные средстваАппаратные средства
Аппаратные средстваtrenders
 
Стратегический план
Стратегический планСтратегический план
Стратегический планDarina14
 
маркетинговая стратегия слайд шоу
маркетинговая стратегия слайд шоумаркетинговая стратегия слайд шоу
маркетинговая стратегия слайд шоуakavnezna
 
Комплексные проекты для клиентов. Кейс AXE.
Комплексные проекты для клиентов. Кейс AXE.Комплексные проекты для клиентов. Кейс AXE.
Комплексные проекты для клиентов. Кейс AXE.HUNGRY BOYS Creative agency
 
Огляд судової практики Касаційного цивільного суду у складі Верховного Суду
Огляд судової практики Касаційного цивільного суду у складі Верховного СудуОгляд судової практики Касаційного цивільного суду у складі Верховного Суду
Огляд судової практики Касаційного цивільного суду у складі Верховного СудуPravotv
 
Изменения в 111 ФЗ и 75 ФЗ
Изменения в 111 ФЗ и 75 ФЗИзменения в 111 ФЗ и 75 ФЗ
Изменения в 111 ФЗ и 75 ФЗslon
 
Автоматизированная мобильная система Агент+
Автоматизированная мобильная система Агент+Автоматизированная мобильная система Агент+
Автоматизированная мобильная система Агент+Agent Plus
 
Организация навигации в интерфейсах веб-сайтов: 5 принципов
Организация навигации в интерфейсах веб-сайтов: 5 принциповОрганизация навигации в интерфейсах веб-сайтов: 5 принципов
Организация навигации в интерфейсах веб-сайтов: 5 принциповDenis Beskov
 
морской карнавал для фм логистик
морской карнавал для фм логистикморской карнавал для фм логистик
морской карнавал для фм логистикguestd9525b
 
Брендинг в CRE. Сеть отелей "Азимут"
Брендинг в CRE. Сеть отелей "Азимут"Брендинг в CRE. Сеть отелей "Азимут"
Брендинг в CRE. Сеть отелей "Азимут"Elena Shuvalova
 

Mais procurados (20)

телемост эффективный цод 1
телемост   эффективный цод 1телемост   эффективный цод 1
телемост эффективный цод 1
 
презентация стратегич. план.Microsoft Office Power Point
презентация стратегич. план.Microsoft Office Power Pointпрезентация стратегич. план.Microsoft Office Power Point
презентация стратегич. план.Microsoft Office Power Point
 
стратегический план презентация
стратегический план презентациястратегический план презентация
стратегический план презентация
 
Аппаратные средства
Аппаратные средстваАппаратные средства
Аппаратные средства
 
Стратегический план
Стратегический планСтратегический план
Стратегический план
 
маркетинговая стратегия слайд шоу
маркетинговая стратегия слайд шоумаркетинговая стратегия слайд шоу
маркетинговая стратегия слайд шоу
 
Комплексные проекты для клиентов. Кейс AXE.
Комплексные проекты для клиентов. Кейс AXE.Комплексные проекты для клиентов. Кейс AXE.
Комплексные проекты для клиентов. Кейс AXE.
 
Огляд судової практики Касаційного цивільного суду у складі Верховного Суду
Огляд судової практики Касаційного цивільного суду у складі Верховного СудуОгляд судової практики Касаційного цивільного суду у складі Верховного Суду
Огляд судової практики Касаційного цивільного суду у складі Верховного Суду
 
концепт
концептконцепт
концепт
 
Metrika Razuvaev
Metrika RazuvaevMetrika Razuvaev
Metrika Razuvaev
 
1
11
1
 
Изменения в 111 ФЗ и 75 ФЗ
Изменения в 111 ФЗ и 75 ФЗИзменения в 111 ФЗ и 75 ФЗ
Изменения в 111 ФЗ и 75 ФЗ
 
Автоматизированная мобильная система Агент+
Автоматизированная мобильная система Агент+Автоматизированная мобильная система Агент+
Автоматизированная мобильная система Агент+
 
Организация навигации в интерфейсах веб-сайтов: 5 принципов
Организация навигации в интерфейсах веб-сайтов: 5 принциповОрганизация навигации в интерфейсах веб-сайтов: 5 принципов
Организация навигации в интерфейсах веб-сайтов: 5 принципов
 
синюшкин
синюшкинсинюшкин
синюшкин
 
777
777777
777
 
Avch Manipul
Avch ManipulAvch Manipul
Avch Manipul
 
морской карнавал для фм логистик
морской карнавал для фм логистикморской карнавал для фм логистик
морской карнавал для фм логистик
 
Брендинг в CRE. Сеть отелей "Азимут"
Брендинг в CRE. Сеть отелей "Азимут"Брендинг в CRE. Сеть отелей "Азимут"
Брендинг в CRE. Сеть отелей "Азимут"
 
IMU_Uamaster
IMU_UamasterIMU_Uamaster
IMU_Uamaster
 

Destaque

I Safety 1c Bitrix
I Safety 1c BitrixI Safety 1c Bitrix
I Safety 1c BitrixOntico
 
Gmr Highload Presentation Revised
Gmr Highload Presentation RevisedGmr Highload Presentation Revised
Gmr Highload Presentation RevisedOntico
 
Innodb Scalability And New Features Hl2008 Rus
Innodb Scalability And New Features Hl2008 RusInnodb Scalability And New Features Hl2008 Rus
Innodb Scalability And New Features Hl2008 RusOntico
 
Как разработать социальную сеть, Олег Бунин
Как разработать социальную сеть, Олег БунинКак разработать социальную сеть, Олег Бунин
Как разработать социальную сеть, Олег БунинOntico
 
I Safety 1c Bitrix
I Safety 1c BitrixI Safety 1c Bitrix
I Safety 1c BitrixOntico
 
HighLoad Sites, Oleg Bunin
HighLoad Sites, Oleg BuninHighLoad Sites, Oleg Bunin
HighLoad Sites, Oleg BuninOntico
 
Встреча докладчиков HL++ 2015
Встреча докладчиков HL++ 2015Встреча докладчиков HL++ 2015
Встреча докладчиков HL++ 2015Ontico
 

Destaque (7)

I Safety 1c Bitrix
I Safety 1c BitrixI Safety 1c Bitrix
I Safety 1c Bitrix
 
Gmr Highload Presentation Revised
Gmr Highload Presentation RevisedGmr Highload Presentation Revised
Gmr Highload Presentation Revised
 
Innodb Scalability And New Features Hl2008 Rus
Innodb Scalability And New Features Hl2008 RusInnodb Scalability And New Features Hl2008 Rus
Innodb Scalability And New Features Hl2008 Rus
 
Как разработать социальную сеть, Олег Бунин
Как разработать социальную сеть, Олег БунинКак разработать социальную сеть, Олег Бунин
Как разработать социальную сеть, Олег Бунин
 
I Safety 1c Bitrix
I Safety 1c BitrixI Safety 1c Bitrix
I Safety 1c Bitrix
 
HighLoad Sites, Oleg Bunin
HighLoad Sites, Oleg BuninHighLoad Sites, Oleg Bunin
HighLoad Sites, Oleg Bunin
 
Встреча докладчиков HL++ 2015
Встреча докладчиков HL++ 2015Встреча докладчиков HL++ 2015
Встреча докладчиков HL++ 2015
 

Mais de Ontico

Риски, которые необходимо учесть при разработке сложного проекта (Олег Бунин)
Риски, которые необходимо учесть при разработке сложного проекта (Олег Бунин)Риски, которые необходимо учесть при разработке сложного проекта (Олег Бунин)
Риски, которые необходимо учесть при разработке сложного проекта (Олег Бунин)Ontico
 
Вебинар о конференции HighLoad++
Вебинар о конференции HighLoad++Вебинар о конференции HighLoad++
Вебинар о конференции HighLoad++Ontico
 
Call for papers (2014) ru
Call for papers (2014) ruCall for papers (2014) ru
Call for papers (2014) ruOntico
 
Учебный день конференции HighLoad++ 2013
Учебный день конференции HighLoad++ 2013Учебный день конференции HighLoad++ 2013
Учебный день конференции HighLoad++ 2013Ontico
 
Конференции Онтико (2011)
Конференции Онтико (2011)Конференции Онтико (2011)
Конференции Онтико (2011)Ontico
 
Программный комитет HighLoad++, 6 октября
Программный комитет HighLoad++, 6 октябряПрограммный комитет HighLoad++, 6 октября
Программный комитет HighLoad++, 6 октябряOntico
 
Конференции 2010 / описание
Конференции 2010 / описаниеКонференции 2010 / описание
Конференции 2010 / описаниеOntico
 
Онтико, 2009
Онтико, 2009Онтико, 2009
Онтико, 2009Ontico
 
Конференции 2010
Конференции 2010Конференции 2010
Конференции 2010Ontico
 
Ok2009 Пленарка
Ok2009 ПленаркаOk2009 Пленарка
Ok2009 ПленаркаOntico
 
Wonderful World Of Mysql Storage Engines Hl2008 Rus
Wonderful World Of Mysql Storage Engines Hl2008 RusWonderful World Of Mysql Storage Engines Hl2008 Rus
Wonderful World Of Mysql Storage Engines Hl2008 RusOntico
 
Scaling Web Sites By Sharding And Replication Hl2008 Rus
Scaling Web Sites By Sharding And Replication Hl2008 RusScaling Web Sites By Sharding And Replication Hl2008 Rus
Scaling Web Sites By Sharding And Replication Hl2008 RusOntico
 
особенности построения собственной полнофункциональной Im сети
особенности построения собственной полнофункциональной Im сетиособенности построения собственной полнофункциональной Im сети
особенности построения собственной полнофункциональной Im сетиOntico
 
использование смс технологий в высоконагруженных Web проектах дмитрий булыч...
использование смс технологий в высоконагруженных Web проектах   дмитрий булыч...использование смс технологий в высоконагруженных Web проектах   дмитрий булыч...
использование смс технологий в высоконагруженных Web проектах дмитрий булыч...Ontico
 
архитектурные приемы онлайн игры
архитектурные приемы онлайн игрыархитектурные приемы онлайн игры
архитектурные приемы онлайн игрыOntico
 
Tupitsyn High Load
Tupitsyn High LoadTupitsyn High Load
Tupitsyn High LoadOntico
 
Spread Zaytsev3
Spread Zaytsev3Spread Zaytsev3
Spread Zaytsev3Ontico
 
Smirnov Memcached High Load 2008
Smirnov Memcached High Load 2008Smirnov Memcached High Load 2008
Smirnov Memcached High Load 2008Ontico
 
Moskva Architecture Highload
Moskva Architecture HighloadMoskva Architecture Highload
Moskva Architecture HighloadOntico
 
Hl++ ребров федоровских
Hl++ ребров федоровскихHl++ ребров федоровских
Hl++ ребров федоровскихOntico
 

Mais de Ontico (20)

Риски, которые необходимо учесть при разработке сложного проекта (Олег Бунин)
Риски, которые необходимо учесть при разработке сложного проекта (Олег Бунин)Риски, которые необходимо учесть при разработке сложного проекта (Олег Бунин)
Риски, которые необходимо учесть при разработке сложного проекта (Олег Бунин)
 
Вебинар о конференции HighLoad++
Вебинар о конференции HighLoad++Вебинар о конференции HighLoad++
Вебинар о конференции HighLoad++
 
Call for papers (2014) ru
Call for papers (2014) ruCall for papers (2014) ru
Call for papers (2014) ru
 
Учебный день конференции HighLoad++ 2013
Учебный день конференции HighLoad++ 2013Учебный день конференции HighLoad++ 2013
Учебный день конференции HighLoad++ 2013
 
Конференции Онтико (2011)
Конференции Онтико (2011)Конференции Онтико (2011)
Конференции Онтико (2011)
 
Программный комитет HighLoad++, 6 октября
Программный комитет HighLoad++, 6 октябряПрограммный комитет HighLoad++, 6 октября
Программный комитет HighLoad++, 6 октября
 
Конференции 2010 / описание
Конференции 2010 / описаниеКонференции 2010 / описание
Конференции 2010 / описание
 
Онтико, 2009
Онтико, 2009Онтико, 2009
Онтико, 2009
 
Конференции 2010
Конференции 2010Конференции 2010
Конференции 2010
 
Ok2009 Пленарка
Ok2009 ПленаркаOk2009 Пленарка
Ok2009 Пленарка
 
Wonderful World Of Mysql Storage Engines Hl2008 Rus
Wonderful World Of Mysql Storage Engines Hl2008 RusWonderful World Of Mysql Storage Engines Hl2008 Rus
Wonderful World Of Mysql Storage Engines Hl2008 Rus
 
Scaling Web Sites By Sharding And Replication Hl2008 Rus
Scaling Web Sites By Sharding And Replication Hl2008 RusScaling Web Sites By Sharding And Replication Hl2008 Rus
Scaling Web Sites By Sharding And Replication Hl2008 Rus
 
особенности построения собственной полнофункциональной Im сети
особенности построения собственной полнофункциональной Im сетиособенности построения собственной полнофункциональной Im сети
особенности построения собственной полнофункциональной Im сети
 
использование смс технологий в высоконагруженных Web проектах дмитрий булыч...
использование смс технологий в высоконагруженных Web проектах   дмитрий булыч...использование смс технологий в высоконагруженных Web проектах   дмитрий булыч...
использование смс технологий в высоконагруженных Web проектах дмитрий булыч...
 
архитектурные приемы онлайн игры
архитектурные приемы онлайн игрыархитектурные приемы онлайн игры
архитектурные приемы онлайн игры
 
Tupitsyn High Load
Tupitsyn High LoadTupitsyn High Load
Tupitsyn High Load
 
Spread Zaytsev3
Spread Zaytsev3Spread Zaytsev3
Spread Zaytsev3
 
Smirnov Memcached High Load 2008
Smirnov Memcached High Load 2008Smirnov Memcached High Load 2008
Smirnov Memcached High Load 2008
 
Moskva Architecture Highload
Moskva Architecture HighloadMoskva Architecture Highload
Moskva Architecture Highload
 
Hl++ ребров федоровских
Hl++ ребров федоровскихHl++ ребров федоровских
Hl++ ребров федоровских
 

Highload sites, master-class, OK-2009

  • 2. Что такое “большой” проект? • Сотни тысяч, миллионы, десятки миллионов хитов; • Бесперебойная работа; • Сложная структура: серверный парк, большое количество кода; • Большое количество данных.
  • 3. В чем измерять нагрузку? • Посетители; • Хосты; • Хиты. Технический отдел меряет посещаемость в хитах! Имея прогноз посещаемости можно сделать выводы о использовании процессора, памяти и жестких дисков.
  • 4. Зависимость серверного парка от типа проекта Отношение 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 Это сравнительная таблица, количество серверов указано относительное именно для сравнения , а не как абсолютные цифры.
  • 5. Что такое рост нагрузки с технической точки зрения?
  • 6. Типы роста нагрузки • Рост ресурсов, требуемых на обработку потока запросов; • Рост ресурсов, требуемых для хранения пользовательских данных; • Рост ресурсов, требуемых для передачи данных между пользователями и сервером.
  • 7. Типичные узкие места проектов Потенциальные проблемы производительности Корпоративный сайт СМИ База данных с большим количеством статей, производительность базы данных Интернет-магазин Производительность серверов Фотохостинг Скорость и объемы жестких дисков Блогосфера Производительность серверов, скорость и объемы жестких дисков Социальная сеть Производительность серверов Видеохостинг Скорость и объемы жестких дисков Сайт знакомств Производительность серверов Онлайн-игра Производительность серверов
  • 8. Требуемые ресурсы при росте посещаемости 18 16 14 12 СМИ 10 Видеохостинг 8 Сайт знакомств 6 Онлайн-игра 4 2 0 1 2 3 4 5 6 7 8
  • 9. Общее решение Горизонтальное масштабирование (scaling out) Масштабиро- Вертикальное Шардинг масштабирование (sharding) вание (scaling up) Функциональное разделение (partitioning)
  • 10. Горизонтальное масштабирование Увеличение производительности системы за счет подключения дополнительных cерверов. Отлично работает для вычисляющих серверов, а как быть с базой данных? Что делать со связанными общими для нескольких серверов данными?
  • 11. Вертикальное масштабирование Увеличение производительности системы за счет увеличения мощности сервера. В какой-то момент мы все равно достигнем предела по процессору, памяти или жесткому диску.
  • 12. Функциональное разбиение Разные функциональные части работают и хранятся на разных серверах системы. В какой то момент мы все равно упремся в физические возможности сервера.
  • 13. Шардинг Разбиение данных на кусочки, которые раскладываются по серверам-шардам. Как правильно разбить данные для шардинга? Как правильно идентифицировать данные? У них просто нет выбора:
  • 14. Разбиение данных для шардинга Статическое: по первой букве логина, хэширование идентификаторов или логинов. Единого центра нет, соответственно нет узкого места, зато есть сложности с разрешением заранее непредусмотренных ситуаций. Динамическое: есть координирующий центр, который отвечает на вопрос “где лежит”? Он же является узким местом, зато добавление новых серверов происходит без изменения кода.
  • 15. Как облегчить масштабирование? • Низкая степень связности данных и кода; • Разделение кода на слои (как минимум слой связи с базой данных и слой кэширования); • Рефакторинг, высокое качество кода, минимизация workaround’ов; • Контроль над системой, мониторинг; • Минимизация академических решений (построение таблиц “на лету”, ORM).
  • 16. Серебряная пуля Слабосвязанная Асинхронные вычисления Масштабируемая архитектура Слоистая Горизонтальное масштабирование
  • 17. Отдельно о базах данных База данных – типичное узкое место. Для базы данных актуальны все вышеперечисленные методы увеличения производительности: горизонтальное и вертикальное масштабирование, функциональное разбиение, шардинг. Горизонтальное масштабирование в случае с БД достигается с помощью репликации.
  • 18. Репликация Синхронизация нескольких копий объекта. Наиболее эффективна при небольшом количестве слейвов, иначе усложняется схема распространения изменений, которое, в дальнейшем, становится узким местом. Усложнение программной архитектуры – например, чтение данных с слейва, до которого не докатились изменения.
  • 19. Типичная архитектура: обычный сайт Image Server / 1 Image Server / 2 User images User images Backend / 1 Database / 1 nginx nginx PHP MySQL Backend / 2 Database / 2 MySQL для PHP блогов Frontend nginx memcached Backend / 3 PHP Design images DNS-Балансинг DNS-Балансинг Демоны
  • 20. Структура типичного веб-проекта • Фронтенд – легкий быстрый сервер, отвечающий за отдачу статических картинок; • Бекенд – тяжелый программный сервер, производящий вычисления и строящий веб-страницы; • База данных, хранилище данных.
  • 21. Узкие места Узкое место Характерно для… Решается… Производительность Для всех типов сайтов, Добавление новых серверов, вычисляющих особенно для социальных изменением архитектуры серверов (бекендов) сетей и блогосфер программного обеспечения Данные не Для некоторых конкретных Покупка более подходящего помещаются в сервисов: поиск, поиск на аппаратного обеспечения или оперативную память сайте знакомств, построение изменение архитектуры френдленты, программного обеспечения коллаборативная фильтрация. Данные не влезают Для фотохостингов, Разбиение хранилища на части и на диск видеохостингов написание специального алгоритма маршрутизации файла (например, по его имени). Разные части разносятся на разные сервера Данные нельзя Для почтовых систем, Покупка специальных дисковых разбить, но они не поисковых систем хранилищ – дорогие устройства с влезают на один диск повышенной емкостью.
  • 22. Узкие места - 2 Узкое место Характерно для… Решается… Объем отдаваемого Характерно для Покупка дополнительных серверов трафика видеохостингов, (фронтендов), покупка специального онлайн-игр и маршрутизирующего аппаратного любых крупных обеспечения. Также возможна аренда более проектов мощного канала и изменение топологии серверного парка Производительность Крупные СМИ, Покупка или аренда специализированных базы данных интернет-магазины серверов для базы данных. Оптимизация и тюнинг базы данных. Объем и Для любого В качестве первого шага возможна настройка производительность крупного сайта кластера баз данных или репликации, когда базы данных базу данных обслуживает несколько серверов. Более долгосрочное решение – переписывание программного кода так, чтобы он работал с несколькими базами данных или вообще без них.
  • 23. Развитие проекта Невозможность Рефакторинг, дальнейшего роста изменение посещаемости, техн ологическое архитектуры ограничение Рост посещаемости через оптимизацию
  • 24. Быстрый рост нагрузки – что делать?
  • 25. Быстрая помощь • Программные решения наиболее эффективны, но требуют много времени; • Требуемый уровень специалистов иногда запредельно высок; • Хостинг; • Более мощное аппаратное обеспечение; • Покупка Oracle ;-) • Редуцирование функциональности; • Уменьшение качества; • Оптимизация нагрузки;
  • 26. Прогнозирование нагрузки • Нагрузочное тестирование. Организация нагрузочного тестирования. Почему стоит заказывать нагрузочное тестирование на стороне? • Формулы экстраполяции результатов тестирования на реальную работу. Пиковый характер http-трафика. “Тестирование сферического коня в вакууме”. • Опытные оценки, примеры.