WebCamp:Back-end Developers Day. Петровский Анатолий "Как...

Preview:

Citation preview

Как построить hiload и не сойти с ума

Петровский Анатолий

• СТО ringostat.com

• СТО iftheycall.com

• Developer of New Products

• Co-founder bezpeca.com

• CTO bankua.net

• Web developer

Немного обо мне

hiload = СМО

Физический уровень

Бизнес логика

Хранение данных

Стек современной системы массового обслуживания

Виды масштабируемости

Вертикальное. Тупо покупаем железо пошире

Виды масштабируемости

Горизонтальное. Тупо покупаем еще железа

Физический уровень

Бизнес логика

Хранение данных

Стек современной системы массового обслуживания

Хранение данных

• Репликация (легко) • Read/Write splitting (сложно) • Оптимизация (сложно)

Хранение данныхРеликация и Read/Write splitting

Master Slave

Сохрани/измениДай

Хранение данныхРеликация

Master Master

Хранение данныхРеликация

Полезный совет:

Отказывайтесь всюду от auto increment key юзайте UUID для записей. Это уменьшит вашу боль при

включении master-master репликации

Хранение данныхСферическая система в вакууме

Master cluster Slave cluster

Сохрани/измениДай

Хранение данныхРеликация

Полезный совет:

Если планируете расти и размножатся, то лучше юзайте PostgreSQL с самого начала. В PostgreSQL всего один журнал запросов, репликация на физическом уровне

и все работает железобетонно.

Хранение данных

Вы никуда не денетесь от вертикальной масштабируемости

Хранение данныхОптимизация

• Простые индексы • Составные индексы • Кеширование • а еще партицирование, шардинг и многое другое

Хранение данныхПростые индексы

user_names

id name sex

1 Маша female

3 Антон male

2 Настя female

11 Глеб male

user_names

id name sex

1 Маша female

3 Антон male

2 Настя female

11 Глеб male

Хранение данныхПростые индексы

user_names_id_idx

id link

1 4x4462A

11 4x2345F

2 4x4424A

3 4x326A0

Хранение данныхПростые индексы

пусть есть такая таблица:

Хранение данныхПростые индексы

Хранение данныхПростые индексы

Хранение данныхСоставные индексы

Простой индекс

Составной индекс

Хранение данныхКеширование

Все SELECT запросы попадают в кеш по умолчанию

Хранение данныхКеширование

Все SELECT запросы попадают в кеш по умолчанию

ПЛОХО

ХОРОШО

Хранение данныхОптимизация

Полезный совет:

Денормализируйте. Если где то можно обойтись без дополнительной таблицы - обходитесь. Лишний join -

лишняя операция.

Физический уровень

Бизнес логика

Хранение данных

Стек современной системы массового обслуживания

Бизнес логика

• Расход памяти • Нерациональный i/o • Разделяй и властвуй • Расход ресурсов хранилища

Бизнес логикаПамять

1000 клиентов, которые запрашивают 1000 файлов, каждый из которых весит 1.5MB съедят 1.5GB оперативной памяти

Бизнес логикаi/o

Полезный совет:

Везде где вы делаете запись или чтение с диска/из сети - делайте это асинхронно. Не блокируйте

обработку такими тупыми операциями.

Бизнес логикаРазделяй и властвуй

Сбор и обработка статистикиСбор логов

Фронтэнд

Бизнес логикаРазделяй и властвуй

Полезный совет:

Разделяйте функциональные части системы в отдельные сервисы. Проще искать слабые системе и можно их отдельно друг от друга масштабировать

Бизнес логикаРазделяй и властвуй

Сбор и обработка статистикиСбор логов

Фронтэнд

Бизнес логикаРасход ресурсов хранилища

Бизнес логикаРасход ресурсов хранилища

Физический уровень

• Load average

Физический уровеньload average

Физический уровень

• “Занятость” CPU • “Занятость” RAM • “Занятость” диска • и многое другое

load average

Физический уровеньПроцессы и их переключение

Одни процесс - это совокупность состояний регистров, сопроцессоров и адрес следующей операции (контекст). Для переключения между процессами, достаточно только выгрузить контекст одного процесса и загрузить контекст

другого.

Физический уровеньПроцессы и их переключение

Заключение

Как не сойти с ума?

• Не забывайте умножать мелкие операции на количество потенциальных клиентов

• Разделяйте и властвуйте • Реплицируйте • Денормализируйте • Любите друг друга • Больше отдыхайте

http://facebook.com/toxa.01

С вами был Петровский Анатолий. Full stack developer at Readdle Inc.

Спасибо за внимание, вы хорошая публика ;)

Recommended