Your SlideShare is downloading. ×
0
Bunin Iforum
Bunin Iforum
Bunin Iforum
Bunin Iforum
Bunin Iforum
Bunin Iforum
Bunin Iforum
Bunin Iforum
Bunin Iforum
Bunin Iforum
Bunin Iforum
Bunin Iforum
Bunin Iforum
Bunin Iforum
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

324

Published on

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

  • Be the first to like this

No Downloads
Views
Total Views
324
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]

×