Разработка высоконагруженных проектов ( например – сайтов для сообществ) Олег Бунин
Что такое  “ большой ”  проект? <ul><li>Сотни тысяч, миллионы, десятки миллионов  хитов ; </li></ul><ul><li>Бесперебойная ...
Общее решение
Горизонтальное масштабирование <ul><li>Увеличение    производительности    системы за счет    подключения    дополнительны...
Вертикальное масштабирование <ul><li>Увеличение  производительности  системы за счет  увеличения мощности  сервера. </li><...
Функциональное разбиение <ul><li>Разные функциональные части работают и хранятся на разных серверах системы. </li></ul>В к...
Шардинг <ul><li>Разбиение данных на    кусочки, которые    раскладываются по    серверам-шардам. </li></ul><ul><li>Как пра...
Разбиение данных для шардинга <ul><li>Статическое :  по первой букве логина, хэширование идентификаторов или логинов. Един...
Как облегчить масштабирование? <ul><li>Низкая степень связности    данных и кода ; </li></ul><ul><li>Разделение кода на сл...
Серебряная пуля
Отдельно о базах данных <ul><li>База данных – типичное  узкое место.   Для базы данных  актуальны   все  вышеперечисленные...
Репликация <ul><li>Синхронизация    нескольких копий объекта. </li></ul><ul><li>Наиболее эффективна при    небольшом колич...
Типичная архитектура :  обычный сайт
Специфика сообществ <ul><li>Большое количество связей между объектами     сложная программная архитектура. </li></ul><ul>...
[email_address]
Upcoming SlideShare
Loading in …5
×

Bunin Iforum

381
-1

Published on

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

  • Be the first to like this

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

No notes for slide

Bunin Iforum

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

    Clipping is a handy way to collect important slides you want to go back to later.

×