SlideShare a Scribd company logo
Как построить hiload
и не сойти с ума
Петровский Анатолий
• СТО ringostat.com
• СТО iftheycall.com
• Developer of New Products
• Co-founder bezpeca.com
• CTO bankua.net
• Web developer
Немного обо мне
WebCamp:Back-end Developers Day. Петровский Анатолий "Как построить хайлоад и не сойти с ума"
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.
Спасибо за внимание, вы хорошая публика ;)

More Related Content

PPTX
Oracle Database In-Memory
ODP
Wonderful World Of Mysql Storage Engines Hl2008 Rus
PPT
SAM за 7 шагов. Рецепт для небольших компаний
PDF
Aflex Distribution. Жанэтдин Шутанов. "Решения Acronis для защиты данных в см...
PPT
оптимизация My Sql петр зайцев
PDF
Kosmodemiansky wr 2013
PPTX
Кастомная разработка в области E-Commerce
PDF
Short Infrastructure Overview ru hpe Vertica
Oracle Database In-Memory
Wonderful World Of Mysql Storage Engines Hl2008 Rus
SAM за 7 шагов. Рецепт для небольших компаний
Aflex Distribution. Жанэтдин Шутанов. "Решения Acronis для защиты данных в см...
оптимизация My Sql петр зайцев
Kosmodemiansky wr 2013
Кастомная разработка в области E-Commerce
Short Infrastructure Overview ru hpe Vertica

What's hot (6)

PDF
Опыт использования Oracle Essebase+ при работе с большими объемами данных
PPTX
Снижение затрат на ERP системы с облачными технологиями
PPT
Розгортання
PDF
Гибкое управление серверными ресурсами с Terraform
PDF
Net Аpp. Лучший фундамент для облака
PDF
Veeam современная защита данных на предприятии
Опыт использования Oracle Essebase+ при работе с большими объемами данных
Снижение затрат на ERP системы с облачными технологиями
Розгортання
Гибкое управление серверными ресурсами с Terraform
Net Аpp. Лучший фундамент для облака
Veeam современная защита данных на предприятии
Ad

Viewers also liked (20)

PDF
QA Lab: тестирование ПО. Николай Бобошко: "Тестирование требования или как De...
PDF
AI&BigData Lab. Юрий Монастыршин "Точечные особенности изображения на примере...
PDF
AI&BigData Lab. Александр Кондуфоров. "Быстрый анализ и обработка данных, исп...
PDF
Odessa StartUp Day_Startup Crash Test_Алексей Вахменин и Вадим Иваненко (Runa...
PDF
Odessa StartUp Day_Краудфандинг: как быстро найти деньги на стартап_Игорь Баз...
PDF
WebCamp:Back-end Developers Day Турский Виктор "Распределенные вычисления на ...
PDF
AI&BigData Lab. Варвара Красавина "Оптимизация поиска в системе LeadScanner с...
PDF
WebCamp:Front-end Developers Day. Роман Якобчук "FRP + React, building async ...
PDF
QA Lab: тестирование ПО. Станислав Шмидт: "Self-testing REST APIs with API Fi...
PPTX
Highload: проблемы и решения
PPTX
HighLoad весна 2014 лекция 1
PDF
20 апреля, DEV {highload} - конференция о Highload веб-разработке, "Инженерны...
PPTX
High load для начинающих
PDF
16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Эксплуат...
PDF
Тестирование аварий. Андрей Губа. Highload++ 2015
PPT
QA Lab: тестирование ПО. Эд Изотов: "Jmeter. Достучаться до небес".
PDF
WebCamp:Designers Day. Алексей Кухаренко "Как провести UX исследования"
PDF
HighLoad весна 2014 лекция 5
PDF
«Highload блоки и новое api к ним»
PDF
Distributed systems at ok.ru #rigadevday
QA Lab: тестирование ПО. Николай Бобошко: "Тестирование требования или как De...
AI&BigData Lab. Юрий Монастыршин "Точечные особенности изображения на примере...
AI&BigData Lab. Александр Кондуфоров. "Быстрый анализ и обработка данных, исп...
Odessa StartUp Day_Startup Crash Test_Алексей Вахменин и Вадим Иваненко (Runa...
Odessa StartUp Day_Краудфандинг: как быстро найти деньги на стартап_Игорь Баз...
WebCamp:Back-end Developers Day Турский Виктор "Распределенные вычисления на ...
AI&BigData Lab. Варвара Красавина "Оптимизация поиска в системе LeadScanner с...
WebCamp:Front-end Developers Day. Роман Якобчук "FRP + React, building async ...
QA Lab: тестирование ПО. Станислав Шмидт: "Self-testing REST APIs with API Fi...
Highload: проблемы и решения
HighLoad весна 2014 лекция 1
20 апреля, DEV {highload} - конференция о Highload веб-разработке, "Инженерны...
High load для начинающих
16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Эксплуат...
Тестирование аварий. Андрей Губа. Highload++ 2015
QA Lab: тестирование ПО. Эд Изотов: "Jmeter. Достучаться до небес".
WebCamp:Designers Day. Алексей Кухаренко "Как провести UX исследования"
HighLoad весна 2014 лекция 5
«Highload блоки и новое api к ним»
Distributed systems at ok.ru #rigadevday
Ad

Similar to WebCamp:Back-end Developers Day. Петровский Анатолий "Как построить хайлоад и не сойти с ума" (20)

PPT
Быстрое масштабирование систем
PPTX
UFADevCom'13#1 Шерыхалин Олег
PDF
Екатерина Войденко "Горизонтальное масштабирование MySQL"
PPTX
Мастер-класс про организацию службы эксплуатации
PDF
Доклад Сергея Аверина на DevConf 2013. "Распространенные ошибки применения ба...
PPT
распределенная архитектура Lamp приложений петр зайцев
PDF
Распространенные ошибки применения баз данных
PDF
Горизонтальное масштабирование: что, зачем, когда и как /Александр Макаров (Y...
PDF
Распространенные ошибки применения баз данных
PDF
Распространенные ошибки применения баз данных (Сергей Аверин)
PDF
High load2007 scaling-web-applications-rus
PDF
Cравнительный анализ хранилищ данных (Олег Царев, Кирилл Коринский)
PDF
Не все базы данных одинаково полезны
PDF
Выступление Сергея Аверина, Badoo, на High Performance Conference
PDF
Не все базы данных одинаково полезны
PDF
HighLoad systems: tips & tricks
PDF
Распространенные ошибки применения баз данных (Сергей Аверин)
PPT
Web20 from zero
PPT
Практическое создание крупного масштабируемого web 2.0 c нуля (Дмитрий Бородин)
PPT
Практическое создание крупного масштабируемого web 20 c нуля, Дмитрий Бородин
Быстрое масштабирование систем
UFADevCom'13#1 Шерыхалин Олег
Екатерина Войденко "Горизонтальное масштабирование MySQL"
Мастер-класс про организацию службы эксплуатации
Доклад Сергея Аверина на DevConf 2013. "Распространенные ошибки применения ба...
распределенная архитектура Lamp приложений петр зайцев
Распространенные ошибки применения баз данных
Горизонтальное масштабирование: что, зачем, когда и как /Александр Макаров (Y...
Распространенные ошибки применения баз данных
Распространенные ошибки применения баз данных (Сергей Аверин)
High load2007 scaling-web-applications-rus
Cравнительный анализ хранилищ данных (Олег Царев, Кирилл Коринский)
Не все базы данных одинаково полезны
Выступление Сергея Аверина, Badoo, на High Performance Conference
Не все базы данных одинаково полезны
HighLoad systems: tips & tricks
Распространенные ошибки применения баз данных (Сергей Аверин)
Web20 from zero
Практическое создание крупного масштабируемого web 2.0 c нуля (Дмитрий Бородин)
Практическое создание крупного масштабируемого web 20 c нуля, Дмитрий Бородин

More from GeeksLab Odessa (20)

PDF
DataScience Lab2017_Коррекция геометрических искажений оптических спутниковых...
PDF
DataScience Lab 2017_Kappa Architecture: How to implement a real-time streami...
PDF
DataScience Lab 2017_Блиц-доклад_Турский Виктор
PDF
DataScience Lab 2017_Обзор методов детекции лиц на изображение
PDF
DataScienceLab2017_Сходство пациентов: вычистка дубликатов и предсказание про...
PDF
DataScienceLab2017_Блиц-доклад
PDF
DataScienceLab2017_Блиц-доклад
PDF
DataScienceLab2017_Блиц-доклад
PDF
DataScienceLab2017_Cервинг моделей, построенных на больших данных с помощью A...
PDF
DataScienceLab2017_BioVec: Word2Vec в задачах анализа геномных данных и биоин...
PDF
DataScienceLab2017_Data Sciences и Big Data в Телекоме_Александр Саенко
PDF
DataScienceLab2017_Высокопроизводительные вычислительные возможности для сист...
PDF
DataScience Lab 2017_Мониторинг модных трендов с помощью глубокого обучения и...
PDF
DataScience Lab 2017_Кто здесь? Автоматическая разметка спикеров на телефонны...
PDF
DataScience Lab 2017_From bag of texts to bag of clusters_Терпиль Евгений / П...
PDF
DataScience Lab 2017_Графические вероятностные модели для принятия решений в ...
PDF
DataScienceLab2017_Оптимизация гиперпараметров машинного обучения при помощи ...
PDF
DataScienceLab2017_Как знать всё о покупателях (или почти всё)?_Дарина Перемот
PDF
JS Lab 2017_Mapbox GL: как работают современные интерактивные карты_Владимир ...
PPTX
JS Lab2017_Под микроскопом: блеск и нищета микросервисов на node.js
DataScience Lab2017_Коррекция геометрических искажений оптических спутниковых...
DataScience Lab 2017_Kappa Architecture: How to implement a real-time streami...
DataScience Lab 2017_Блиц-доклад_Турский Виктор
DataScience Lab 2017_Обзор методов детекции лиц на изображение
DataScienceLab2017_Сходство пациентов: вычистка дубликатов и предсказание про...
DataScienceLab2017_Блиц-доклад
DataScienceLab2017_Блиц-доклад
DataScienceLab2017_Блиц-доклад
DataScienceLab2017_Cервинг моделей, построенных на больших данных с помощью A...
DataScienceLab2017_BioVec: Word2Vec в задачах анализа геномных данных и биоин...
DataScienceLab2017_Data Sciences и Big Data в Телекоме_Александр Саенко
DataScienceLab2017_Высокопроизводительные вычислительные возможности для сист...
DataScience Lab 2017_Мониторинг модных трендов с помощью глубокого обучения и...
DataScience Lab 2017_Кто здесь? Автоматическая разметка спикеров на телефонны...
DataScience Lab 2017_From bag of texts to bag of clusters_Терпиль Евгений / П...
DataScience Lab 2017_Графические вероятностные модели для принятия решений в ...
DataScienceLab2017_Оптимизация гиперпараметров машинного обучения при помощи ...
DataScienceLab2017_Как знать всё о покупателях (или почти всё)?_Дарина Перемот
JS Lab 2017_Mapbox GL: как работают современные интерактивные карты_Владимир ...
JS Lab2017_Под микроскопом: блеск и нищета микросервисов на node.js

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