webcamp:back-end developers day. Петровский Анатолий "Как...
TRANSCRIPT
![Page 1: WebCamp:Back-end Developers Day. Петровский Анатолий "Как построить хайлоад и не сойти с ума"](https://reader033.vdocuments.us/reader033/viewer/2022042701/55ca56c7bb61ebcd518b4578/html5/thumbnails/1.jpg)
Как построить hiload и не сойти с ума
Петровский Анатолий
![Page 2: WebCamp:Back-end Developers Day. Петровский Анатолий "Как построить хайлоад и не сойти с ума"](https://reader033.vdocuments.us/reader033/viewer/2022042701/55ca56c7bb61ebcd518b4578/html5/thumbnails/2.jpg)
• СТО ringostat.com
• СТО iftheycall.com
• Developer of New Products
• Co-founder bezpeca.com
• CTO bankua.net
• Web developer
Немного обо мне
![Page 3: WebCamp:Back-end Developers Day. Петровский Анатолий "Как построить хайлоад и не сойти с ума"](https://reader033.vdocuments.us/reader033/viewer/2022042701/55ca56c7bb61ebcd518b4578/html5/thumbnails/3.jpg)
![Page 4: WebCamp:Back-end Developers Day. Петровский Анатолий "Как построить хайлоад и не сойти с ума"](https://reader033.vdocuments.us/reader033/viewer/2022042701/55ca56c7bb61ebcd518b4578/html5/thumbnails/4.jpg)
hiload = СМО
![Page 5: WebCamp:Back-end Developers Day. Петровский Анатолий "Как построить хайлоад и не сойти с ума"](https://reader033.vdocuments.us/reader033/viewer/2022042701/55ca56c7bb61ebcd518b4578/html5/thumbnails/5.jpg)
Физический уровень
Бизнес логика
Хранение данных
Стек современной системы массового обслуживания
![Page 6: WebCamp:Back-end Developers Day. Петровский Анатолий "Как построить хайлоад и не сойти с ума"](https://reader033.vdocuments.us/reader033/viewer/2022042701/55ca56c7bb61ebcd518b4578/html5/thumbnails/6.jpg)
Виды масштабируемости
Вертикальное. Тупо покупаем железо пошире
![Page 7: WebCamp:Back-end Developers Day. Петровский Анатолий "Как построить хайлоад и не сойти с ума"](https://reader033.vdocuments.us/reader033/viewer/2022042701/55ca56c7bb61ebcd518b4578/html5/thumbnails/7.jpg)
Виды масштабируемости
Горизонтальное. Тупо покупаем еще железа
![Page 8: WebCamp:Back-end Developers Day. Петровский Анатолий "Как построить хайлоад и не сойти с ума"](https://reader033.vdocuments.us/reader033/viewer/2022042701/55ca56c7bb61ebcd518b4578/html5/thumbnails/8.jpg)
Физический уровень
Бизнес логика
Хранение данных
Стек современной системы массового обслуживания
![Page 9: WebCamp:Back-end Developers Day. Петровский Анатолий "Как построить хайлоад и не сойти с ума"](https://reader033.vdocuments.us/reader033/viewer/2022042701/55ca56c7bb61ebcd518b4578/html5/thumbnails/9.jpg)
Хранение данных
• Репликация (легко) • Read/Write splitting (сложно) • Оптимизация (сложно)
![Page 10: WebCamp:Back-end Developers Day. Петровский Анатолий "Как построить хайлоад и не сойти с ума"](https://reader033.vdocuments.us/reader033/viewer/2022042701/55ca56c7bb61ebcd518b4578/html5/thumbnails/10.jpg)
Хранение данныхРеликация и Read/Write splitting
Master Slave
Сохрани/измениДай
![Page 11: WebCamp:Back-end Developers Day. Петровский Анатолий "Как построить хайлоад и не сойти с ума"](https://reader033.vdocuments.us/reader033/viewer/2022042701/55ca56c7bb61ebcd518b4578/html5/thumbnails/11.jpg)
Хранение данныхРеликация
Master Master
![Page 12: WebCamp:Back-end Developers Day. Петровский Анатолий "Как построить хайлоад и не сойти с ума"](https://reader033.vdocuments.us/reader033/viewer/2022042701/55ca56c7bb61ebcd518b4578/html5/thumbnails/12.jpg)
Хранение данныхРеликация
Полезный совет:
Отказывайтесь всюду от auto increment key юзайте UUID для записей. Это уменьшит вашу боль при
включении master-master репликации
![Page 13: WebCamp:Back-end Developers Day. Петровский Анатолий "Как построить хайлоад и не сойти с ума"](https://reader033.vdocuments.us/reader033/viewer/2022042701/55ca56c7bb61ebcd518b4578/html5/thumbnails/13.jpg)
Хранение данныхСферическая система в вакууме
Master cluster Slave cluster
Сохрани/измениДай
![Page 14: WebCamp:Back-end Developers Day. Петровский Анатолий "Как построить хайлоад и не сойти с ума"](https://reader033.vdocuments.us/reader033/viewer/2022042701/55ca56c7bb61ebcd518b4578/html5/thumbnails/14.jpg)
Хранение данныхРеликация
Полезный совет:
Если планируете расти и размножатся, то лучше юзайте PostgreSQL с самого начала. В PostgreSQL всего один журнал запросов, репликация на физическом уровне
и все работает железобетонно.
![Page 15: WebCamp:Back-end Developers Day. Петровский Анатолий "Как построить хайлоад и не сойти с ума"](https://reader033.vdocuments.us/reader033/viewer/2022042701/55ca56c7bb61ebcd518b4578/html5/thumbnails/15.jpg)
Хранение данных
Вы никуда не денетесь от вертикальной масштабируемости
![Page 16: WebCamp:Back-end Developers Day. Петровский Анатолий "Как построить хайлоад и не сойти с ума"](https://reader033.vdocuments.us/reader033/viewer/2022042701/55ca56c7bb61ebcd518b4578/html5/thumbnails/16.jpg)
Хранение данныхОптимизация
• Простые индексы • Составные индексы • Кеширование • а еще партицирование, шардинг и многое другое
![Page 17: WebCamp:Back-end Developers Day. Петровский Анатолий "Как построить хайлоад и не сойти с ума"](https://reader033.vdocuments.us/reader033/viewer/2022042701/55ca56c7bb61ebcd518b4578/html5/thumbnails/17.jpg)
Хранение данныхПростые индексы
user_names
id name sex
1 Маша female
3 Антон male
2 Настя female
11 Глеб male
![Page 18: WebCamp:Back-end Developers Day. Петровский Анатолий "Как построить хайлоад и не сойти с ума"](https://reader033.vdocuments.us/reader033/viewer/2022042701/55ca56c7bb61ebcd518b4578/html5/thumbnails/18.jpg)
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
![Page 19: WebCamp:Back-end Developers Day. Петровский Анатолий "Как построить хайлоад и не сойти с ума"](https://reader033.vdocuments.us/reader033/viewer/2022042701/55ca56c7bb61ebcd518b4578/html5/thumbnails/19.jpg)
Хранение данныхПростые индексы
пусть есть такая таблица:
![Page 20: WebCamp:Back-end Developers Day. Петровский Анатолий "Как построить хайлоад и не сойти с ума"](https://reader033.vdocuments.us/reader033/viewer/2022042701/55ca56c7bb61ebcd518b4578/html5/thumbnails/20.jpg)
Хранение данныхПростые индексы
![Page 21: WebCamp:Back-end Developers Day. Петровский Анатолий "Как построить хайлоад и не сойти с ума"](https://reader033.vdocuments.us/reader033/viewer/2022042701/55ca56c7bb61ebcd518b4578/html5/thumbnails/21.jpg)
Хранение данныхПростые индексы
![Page 22: WebCamp:Back-end Developers Day. Петровский Анатолий "Как построить хайлоад и не сойти с ума"](https://reader033.vdocuments.us/reader033/viewer/2022042701/55ca56c7bb61ebcd518b4578/html5/thumbnails/22.jpg)
Хранение данныхСоставные индексы
Простой индекс
Составной индекс
![Page 23: WebCamp:Back-end Developers Day. Петровский Анатолий "Как построить хайлоад и не сойти с ума"](https://reader033.vdocuments.us/reader033/viewer/2022042701/55ca56c7bb61ebcd518b4578/html5/thumbnails/23.jpg)
Хранение данныхКеширование
Все SELECT запросы попадают в кеш по умолчанию
![Page 24: WebCamp:Back-end Developers Day. Петровский Анатолий "Как построить хайлоад и не сойти с ума"](https://reader033.vdocuments.us/reader033/viewer/2022042701/55ca56c7bb61ebcd518b4578/html5/thumbnails/24.jpg)
Хранение данныхКеширование
Все SELECT запросы попадают в кеш по умолчанию
ПЛОХО
ХОРОШО
![Page 25: WebCamp:Back-end Developers Day. Петровский Анатолий "Как построить хайлоад и не сойти с ума"](https://reader033.vdocuments.us/reader033/viewer/2022042701/55ca56c7bb61ebcd518b4578/html5/thumbnails/25.jpg)
Хранение данныхОптимизация
Полезный совет:
Денормализируйте. Если где то можно обойтись без дополнительной таблицы - обходитесь. Лишний join -
лишняя операция.
![Page 26: WebCamp:Back-end Developers Day. Петровский Анатолий "Как построить хайлоад и не сойти с ума"](https://reader033.vdocuments.us/reader033/viewer/2022042701/55ca56c7bb61ebcd518b4578/html5/thumbnails/26.jpg)
Физический уровень
Бизнес логика
Хранение данных
Стек современной системы массового обслуживания
![Page 27: WebCamp:Back-end Developers Day. Петровский Анатолий "Как построить хайлоад и не сойти с ума"](https://reader033.vdocuments.us/reader033/viewer/2022042701/55ca56c7bb61ebcd518b4578/html5/thumbnails/27.jpg)
Бизнес логика
• Расход памяти • Нерациональный i/o • Разделяй и властвуй • Расход ресурсов хранилища
![Page 28: WebCamp:Back-end Developers Day. Петровский Анатолий "Как построить хайлоад и не сойти с ума"](https://reader033.vdocuments.us/reader033/viewer/2022042701/55ca56c7bb61ebcd518b4578/html5/thumbnails/28.jpg)
Бизнес логикаПамять
1000 клиентов, которые запрашивают 1000 файлов, каждый из которых весит 1.5MB съедят 1.5GB оперативной памяти
![Page 29: WebCamp:Back-end Developers Day. Петровский Анатолий "Как построить хайлоад и не сойти с ума"](https://reader033.vdocuments.us/reader033/viewer/2022042701/55ca56c7bb61ebcd518b4578/html5/thumbnails/29.jpg)
Бизнес логикаi/o
Полезный совет:
Везде где вы делаете запись или чтение с диска/из сети - делайте это асинхронно. Не блокируйте
обработку такими тупыми операциями.
![Page 30: WebCamp:Back-end Developers Day. Петровский Анатолий "Как построить хайлоад и не сойти с ума"](https://reader033.vdocuments.us/reader033/viewer/2022042701/55ca56c7bb61ebcd518b4578/html5/thumbnails/30.jpg)
Бизнес логикаРазделяй и властвуй
Сбор и обработка статистикиСбор логов
Фронтэнд
![Page 31: WebCamp:Back-end Developers Day. Петровский Анатолий "Как построить хайлоад и не сойти с ума"](https://reader033.vdocuments.us/reader033/viewer/2022042701/55ca56c7bb61ebcd518b4578/html5/thumbnails/31.jpg)
Бизнес логикаРазделяй и властвуй
Полезный совет:
Разделяйте функциональные части системы в отдельные сервисы. Проще искать слабые системе и можно их отдельно друг от друга масштабировать
![Page 32: WebCamp:Back-end Developers Day. Петровский Анатолий "Как построить хайлоад и не сойти с ума"](https://reader033.vdocuments.us/reader033/viewer/2022042701/55ca56c7bb61ebcd518b4578/html5/thumbnails/32.jpg)
Бизнес логикаРазделяй и властвуй
Сбор и обработка статистикиСбор логов
Фронтэнд
![Page 33: WebCamp:Back-end Developers Day. Петровский Анатолий "Как построить хайлоад и не сойти с ума"](https://reader033.vdocuments.us/reader033/viewer/2022042701/55ca56c7bb61ebcd518b4578/html5/thumbnails/33.jpg)
Бизнес логикаРасход ресурсов хранилища
![Page 34: WebCamp:Back-end Developers Day. Петровский Анатолий "Как построить хайлоад и не сойти с ума"](https://reader033.vdocuments.us/reader033/viewer/2022042701/55ca56c7bb61ebcd518b4578/html5/thumbnails/34.jpg)
Бизнес логикаРасход ресурсов хранилища
![Page 35: WebCamp:Back-end Developers Day. Петровский Анатолий "Как построить хайлоад и не сойти с ума"](https://reader033.vdocuments.us/reader033/viewer/2022042701/55ca56c7bb61ebcd518b4578/html5/thumbnails/35.jpg)
Физический уровень
• Load average
![Page 36: WebCamp:Back-end Developers Day. Петровский Анатолий "Как построить хайлоад и не сойти с ума"](https://reader033.vdocuments.us/reader033/viewer/2022042701/55ca56c7bb61ebcd518b4578/html5/thumbnails/36.jpg)
Физический уровеньload average
![Page 37: WebCamp:Back-end Developers Day. Петровский Анатолий "Как построить хайлоад и не сойти с ума"](https://reader033.vdocuments.us/reader033/viewer/2022042701/55ca56c7bb61ebcd518b4578/html5/thumbnails/37.jpg)
Физический уровень
• “Занятость” CPU • “Занятость” RAM • “Занятость” диска • и многое другое
load average
![Page 38: WebCamp:Back-end Developers Day. Петровский Анатолий "Как построить хайлоад и не сойти с ума"](https://reader033.vdocuments.us/reader033/viewer/2022042701/55ca56c7bb61ebcd518b4578/html5/thumbnails/38.jpg)
Физический уровеньПроцессы и их переключение
Одни процесс - это совокупность состояний регистров, сопроцессоров и адрес следующей операции (контекст). Для переключения между процессами, достаточно только выгрузить контекст одного процесса и загрузить контекст
другого.
![Page 39: WebCamp:Back-end Developers Day. Петровский Анатолий "Как построить хайлоад и не сойти с ума"](https://reader033.vdocuments.us/reader033/viewer/2022042701/55ca56c7bb61ebcd518b4578/html5/thumbnails/39.jpg)
Физический уровеньПроцессы и их переключение
![Page 40: WebCamp:Back-end Developers Day. Петровский Анатолий "Как построить хайлоад и не сойти с ума"](https://reader033.vdocuments.us/reader033/viewer/2022042701/55ca56c7bb61ebcd518b4578/html5/thumbnails/40.jpg)
Заключение
Как не сойти с ума?
• Не забывайте умножать мелкие операции на количество потенциальных клиентов
• Разделяйте и властвуйте • Реплицируйте • Денормализируйте • Любите друг друга • Больше отдыхайте
![Page 41: WebCamp:Back-end Developers Day. Петровский Анатолий "Как построить хайлоад и не сойти с ума"](https://reader033.vdocuments.us/reader033/viewer/2022042701/55ca56c7bb61ebcd518b4578/html5/thumbnails/41.jpg)
http://facebook.com/toxa.01
С вами был Петровский Анатолий. Full stack developer at Readdle Inc.
Спасибо за внимание, вы хорошая публика ;)