Your SlideShare is downloading. ×
Bunin Iforum
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Bunin Iforum

322

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
322
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
1
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Разработка высоконагруженных проектов ( например – сайтов для сообществ) Олег Бунин
  • 2. Что такое “ большой ” проект?
    • Сотни тысяч, миллионы, десятки миллионов хитов ;
    • Бесперебойная работа ;
    • Сложная структура : серверный парк, большое количество кода ;
    • Большое количество данных.
  • 3. Общее решение
  • 4. Горизонтальное масштабирование
    • Увеличение производительности системы за счет подключения дополнительных c ерверов.
    • Отлично работает для вычисляющих серверов, а как быть с базой данных?
    • Что делать со связанными общими для нескольких серверов данными?
  • 5. Вертикальное масштабирование
    • Увеличение производительности системы за счет увеличения мощности сервера.
    • В какой-то момент мы все равно достигнем предела по процессору, памяти или жесткому диску.
  • 6. Функциональное разбиение
    • Разные функциональные части работают и хранятся на разных серверах системы.
    В какой то момент мы все равно упремся в физические возможности сервера.
  • 7. Шардинг
    • Разбиение данных на кусочки, которые раскладываются по серверам-шардам.
    • Как правильно разбить данные для шардинга? Как правильно идентифицировать данные?
    • У них просто нет выбора :
  • 8. Разбиение данных для шардинга
    • Статическое : по первой букве логина, хэширование идентификаторов или логинов. Единого центра нет, соответственно нет узкого места, зато есть сложности с разрешением заранее непредусмотренных ситуаций.
    • Динамическое : есть координирующий центр, который отвечает на вопрос “ где лежит ”? Он же является узким местом, зато добавление новых серверов происходит без изменения кода.
  • 9. Как облегчить масштабирование?
    • Низкая степень связности данных и кода ;
    • Разделение кода на слои (как минимум слой связи с базой данных и слой кэширования) ;
    • Рефакторинг, высокое качество кода , минимизация workaround’ ов ;
    • Контроль над системой, мониторинг ;
    • Минимизация академических решений (построение таблиц “ на лету ”, ORM).
  • 10. Серебряная пуля
  • 11. Отдельно о базах данных
    • База данных – типичное узкое место. Для базы данных актуальны все вышеперечисленные методы увеличения производительности : горизонтальное и вертикальное масштабирование, функциональное разбиение, шардинг.
    • Горизонтальное масштабирование в случае с БД достигается с помощью репликации .
  • 12. Репликация
    • Синхронизация нескольких копий объекта.
    • Наиболее эффективна при небольшом количестве слейвов, иначе усложняется схема распространения изменений, которое, в дальнейшем, становится узким местом.
    • Усложнение программной архитектуры – например, чтение данных с слейва, до которого не докатились изменения.
  • 13. Типичная архитектура : обычный сайт
  • 14. Специфика сообществ
    • Большое количество связей между объектами  сложная программная архитектура.
    • Высокий hit ratio  большое количество серверов.
    • Наличие сложных сервисов, реализуемых отдельными алгоритмами (поиск, сортировка, переписка, друзья друзей).
  • 15. [email_address]

×