Программа тренинга "Как научиться управлять проектами за 1 день в MS Project" "картах ума"
WebCamp:Back-end Developers Day. Петровский Анатолий "Как построить...
Transcript of WebCamp:Back-end Developers Day. Петровский Анатолий "Как построить...
Как построить 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.
Спасибо за внимание, вы хорошая публика ;)