РАЗРАБОТКА ВЫСОКО- НАГРУЖЕННЫХ...
TRANSCRIPT
![Page 1: РАЗРАБОТКА ВЫСОКО- НАГРУЖЕННЫХ СИСТЕМcdn01.x-plarium.com/browser/content/developers/...ОБЛАЧНЫЕ СЕРВИСЫ ... вспомогательные](https://reader034.vdocuments.site/reader034/viewer/2022050305/5f6d985ea35bfa7e5f08f7d8/html5/thumbnails/1.jpg)
РАЗРАБОТКАВЫСОКО-НАГРУЖЕННЫХСИСТЕМПАВЕЛМАТЛАШОВ
![Page 2: РАЗРАБОТКА ВЫСОКО- НАГРУЖЕННЫХ СИСТЕМcdn01.x-plarium.com/browser/content/developers/...ОБЛАЧНЫЕ СЕРВИСЫ ... вспомогательные](https://reader034.vdocuments.site/reader034/viewer/2022050305/5f6d985ea35bfa7e5f08f7d8/html5/thumbnails/2.jpg)
115РАСПРЕДЕЛЕННЫХ
СЕРВЕРОВ
12УСПЕШНЫХ
ПРОЕКТОВ
200 000 000ИГРОКОВ
150СТРАН
О КОМПАНИИ
![Page 3: РАЗРАБОТКА ВЫСОКО- НАГРУЖЕННЫХ СИСТЕМcdn01.x-plarium.com/browser/content/developers/...ОБЛАЧНЫЕ СЕРВИСЫ ... вспомогательные](https://reader034.vdocuments.site/reader034/viewer/2022050305/5f6d985ea35bfa7e5f08f7d8/html5/thumbnails/3.jpg)
200 МЛНПОЛЬЗОВАТЕЛЕЙ
64 СЕРВЕРА ПРИЛОЖЕНИЙ
2.2 МЛНDAU
21СЕРВЕР БД
22 МЛНСЕССИЙ В СУТКИ
8500ЗАПРОСОВ В СЕКУНДУ
30 МЛНСРАЖЕНИЙ В СУТКИ
СТАТИСТИКА
![Page 4: РАЗРАБОТКА ВЫСОКО- НАГРУЖЕННЫХ СИСТЕМcdn01.x-plarium.com/browser/content/developers/...ОБЛАЧНЫЕ СЕРВИСЫ ... вспомогательные](https://reader034.vdocuments.site/reader034/viewer/2022050305/5f6d985ea35bfa7e5f08f7d8/html5/thumbnails/4.jpg)
ГДЕ ДЕРЖАТЬ МОЩНОСТИ?
2 реальных варианта — выделенные серверы в
аренду или облако. Свои серверы в нашей стране —
не вариант :)
ОБЛАЧНЫЕСЕРВИСЫ
ВЫДЕЛЕННЫЕСЕРВЕРЫ
![Page 5: РАЗРАБОТКА ВЫСОКО- НАГРУЖЕННЫХ СИСТЕМcdn01.x-plarium.com/browser/content/developers/...ОБЛАЧНЫЕ СЕРВИСЫ ... вспомогательные](https://reader034.vdocuments.site/reader034/viewer/2022050305/5f6d985ea35bfa7e5f08f7d8/html5/thumbnails/5.jpg)
ГДЕ ДЕРЖАТЬ МОЩНОСТИ?
+• очень много быстродоступных ресурсов
• большой набор вариантов хранения данных и сервисов (очереди,
балансировка, защита от атак, кэширование и т. д.)
• возможность сэкономить при непостоянных нагрузках
• меньше затрат на администрирование
–• высокая стоимость
при постоянных
больших нагрузках
сервисов
ОБЛАЧНЫЕ СЕРВИСЫ
![Page 6: РАЗРАБОТКА ВЫСОКО- НАГРУЖЕННЫХ СИСТЕМcdn01.x-plarium.com/browser/content/developers/...ОБЛАЧНЫЕ СЕРВИСЫ ... вспомогательные](https://reader034.vdocuments.site/reader034/viewer/2022050305/5f6d985ea35bfa7e5f08f7d8/html5/thumbnails/6.jpg)
ГДЕ ДЕРЖАТЬ МОЩНОСТИ?
ВЫДЕЛЕННЫЕ СЕРВЕРЫ
+• невысокая стоимость при условии постоянной
большой нагрузки
• больше контроля над ПО и железом
–• меньше интересных сервисов
• низкая скорость получения новых ресурсов
• меньше безопасности
![Page 7: РАЗРАБОТКА ВЫСОКО- НАГРУЖЕННЫХ СИСТЕМcdn01.x-plarium.com/browser/content/developers/...ОБЛАЧНЫЕ СЕРВИСЫ ... вспомогательные](https://reader034.vdocuments.site/reader034/viewer/2022050305/5f6d985ea35bfa7e5f08f7d8/html5/thumbnails/7.jpg)
ЧТО ВЫБРАЛИ МЫ?
Выделенные серверы в аренду
для приложений
CDN для раздачи графики
Ограниченное использование
облачных сервисов для
смягчения атак
![Page 8: РАЗРАБОТКА ВЫСОКО- НАГРУЖЕННЫХ СИСТЕМcdn01.x-plarium.com/browser/content/developers/...ОБЛАЧНЫЕ СЕРВИСЫ ... вспомогательные](https://reader034.vdocuments.site/reader034/viewer/2022050305/5f6d985ea35bfa7e5f08f7d8/html5/thumbnails/8.jpg)
КАК МАСШТАБИРОВАТЬСЯ?
• достаточно просто по
концепции
• быстро достигаем предела
стоимости и возможностей
• сложнее достичь предела
• линейный рост стоимости
• более сложная архитектура, возникают задачи
по согласованности, распределенным
вычислениям, кэшированию и т. д.
ВЕРТИКАЛЬНОЕМАСШТАБИРОВАНИЕ/SCALE-UP/
ГОРИЗОНТАЛЬНОЕМАСШТАБИРОВАНИЕ/SCALE-OUT/
![Page 9: РАЗРАБОТКА ВЫСОКО- НАГРУЖЕННЫХ СИСТЕМcdn01.x-plarium.com/browser/content/developers/...ОБЛАЧНЫЕ СЕРВИСЫ ... вспомогательные](https://reader034.vdocuments.site/reader034/viewer/2022050305/5f6d985ea35bfa7e5f08f7d8/html5/thumbnails/9.jpg)
ГОРИЗОНТАЛЬНОЕМАСШТАБИРОВАНИЕ
ЧТО ВЫБРАЛИ МЫ?
sharding для основных игровых
сервисов
разбивка игровых серверов на
кластеры (мастер + сегменты)
вспомогательные сервисы
отдельно (платежи,
нотификации)
![Page 10: РАЗРАБОТКА ВЫСОКО- НАГРУЖЕННЫХ СИСТЕМcdn01.x-plarium.com/browser/content/developers/...ОБЛАЧНЫЕ СЕРВИСЫ ... вспомогательные](https://reader034.vdocuments.site/reader034/viewer/2022050305/5f6d985ea35bfa7e5f08f7d8/html5/thumbnails/10.jpg)
СТЕК ТЕХНОЛОГИЙ
выбирайте более удобный и знакомый
вам стек
разные технологии не всегда хорошо стыкуются между собой
не все технологии выдерживают большие нагрузки
выбор стека напрямую влияет на
стоимость решения
![Page 11: РАЗРАБОТКА ВЫСОКО- НАГРУЖЕННЫХ СИСТЕМcdn01.x-plarium.com/browser/content/developers/...ОБЛАЧНЫЕ СЕРВИСЫ ... вспомогательные](https://reader034.vdocuments.site/reader034/viewer/2022050305/5f6d985ea35bfa7e5f08f7d8/html5/thumbnails/11.jpg)
.NET FRAMEWORK 4.6.1,ASP.NET,MS SQL SERVER
КАКОЙ СТЕК ВЫБРАЛИ МЫ?
большинство стандартных модулей, сессии,безопасность, кэш
WCF, Web Api, SOAP
ORM
MVC, Spring.NET, Castle и т. д.
![Page 12: РАЗРАБОТКА ВЫСОКО- НАГРУЖЕННЫХ СИСТЕМcdn01.x-plarium.com/browser/content/developers/...ОБЛАЧНЫЕ СЕРВИСЫ ... вспомогательные](https://reader034.vdocuments.site/reader034/viewer/2022050305/5f6d985ea35bfa7e5f08f7d8/html5/thumbnails/12.jpg)
КАКОЙ СТЕК ВЫБРАЛИ МЫ?
свой механизм Eventual
Consistency для
распределенных вычислений
свое кэширование
своя сериализация в JSON
просто ADO.NET плюс
легковесная обертка
JSON over HTTP
log4Net + Kafka
свой инструментарий
для мониторинга
производительности и
развертывания
![Page 13: РАЗРАБОТКА ВЫСОКО- НАГРУЖЕННЫХ СИСТЕМcdn01.x-plarium.com/browser/content/developers/...ОБЛАЧНЫЕ СЕРВИСЫ ... вспомогательные](https://reader034.vdocuments.site/reader034/viewer/2022050305/5f6d985ea35bfa7e5f08f7d8/html5/thumbnails/13.jpg)
КАКОЕ ХРАНИЛИЩЕВЫБРАТЬ?
NOSQL RDBMS
![Page 14: РАЗРАБОТКА ВЫСОКО- НАГРУЖЕННЫХ СИСТЕМcdn01.x-plarium.com/browser/content/developers/...ОБЛАЧНЫЕ СЕРВИСЫ ... вспомогательные](https://reader034.vdocuments.site/reader034/viewer/2022050305/5f6d985ea35bfa7e5f08f7d8/html5/thumbnails/14.jpg)
+• может держать очень большие нагрузки
• масса вариантов и форматов хранения
• стоимость
–• NoACID :)
NOSQL
КАКОЕ ХРАНИЛИЩЕВЫБРАТЬ?
![Page 15: РАЗРАБОТКА ВЫСОКО- НАГРУЖЕННЫХ СИСТЕМcdn01.x-plarium.com/browser/content/developers/...ОБЛАЧНЫЕ СЕРВИСЫ ... вспомогательные](https://reader034.vdocuments.site/reader034/viewer/2022050305/5f6d985ea35bfa7e5f08f7d8/html5/thumbnails/15.jpg)
КАКОЕ ХРАНИЛИЩЕВЫБРАТЬ?
RDBMS
+• многолетний опыт использования
• ACID
• высокая стабильность
–• высокая стоимость
• тяжело масштабируется
• низкая производительность
-• NoACID :)
![Page 16: РАЗРАБОТКА ВЫСОКО- НАГРУЖЕННЫХ СИСТЕМcdn01.x-plarium.com/browser/content/developers/...ОБЛАЧНЫЕ СЕРВИСЫ ... вспомогательные](https://reader034.vdocuments.site/reader034/viewer/2022050305/5f6d985ea35bfa7e5f08f7d8/html5/thumbnails/16.jpg)
MS SQL SERVER с применением
NOSQL-подхода
миграция схем пользователей
согласованность
между сегментами
и масштабирование
ЧТО ВЫБРАЛИ МЫ?
производительность при вычитке/
сохранении данных
полноценный ACID на уровне
сегмента при необходимости
![Page 17: РАЗРАБОТКА ВЫСОКО- НАГРУЖЕННЫХ СИСТЕМcdn01.x-plarium.com/browser/content/developers/...ОБЛАЧНЫЕ СЕРВИСЫ ... вспомогательные](https://reader034.vdocuments.site/reader034/viewer/2022050305/5f6d985ea35bfa7e5f08f7d8/html5/thumbnails/17.jpg)
ACID ИЛИ BASE?
ACID/ATOMICITY,CONSISTENCY,ISOLATION,DURABILITY/
BASE/BASICALLY AVAILABLE,SOFT STATE,EVENTUALCONSISTENCY/
![Page 18: РАЗРАБОТКА ВЫСОКО- НАГРУЖЕННЫХ СИСТЕМcdn01.x-plarium.com/browser/content/developers/...ОБЛАЧНЫЕ СЕРВИСЫ ... вспомогательные](https://reader034.vdocuments.site/reader034/viewer/2022050305/5f6d985ea35bfa7e5f08f7d8/html5/thumbnails/18.jpg)
ACID ИЛИ BASE?
+• классический подход, есть готовые решения
• проще разрабатывать (пока не наступят
взаимоблокировки)
–• низкая масштабируемость
(взаимоблокировки, задержки)
ACID /ATOMICITY, CONSISTENCY, ISOLATION, DURABILITY/
![Page 19: РАЗРАБОТКА ВЫСОКО- НАГРУЖЕННЫХ СИСТЕМcdn01.x-plarium.com/browser/content/developers/...ОБЛАЧНЫЕ СЕРВИСЫ ... вспомогательные](https://reader034.vdocuments.site/reader034/viewer/2022050305/5f6d985ea35bfa7e5f08f7d8/html5/thumbnails/19.jpg)
ACID ИЛИ BASE?
+• прекрасная масштабируемость и доступность
• масса приемов и паттернов
• возможность подобрать нужную степень
согласованности в каждом случае
–• усложненная разработка
BASE /BASICALLY AVAILABLE, SOFT STATE, EVENTUAL CONSISTENCY/
![Page 20: РАЗРАБОТКА ВЫСОКО- НАГРУЖЕННЫХ СИСТЕМcdn01.x-plarium.com/browser/content/developers/...ОБЛАЧНЫЕ СЕРВИСЫ ... вспомогательные](https://reader034.vdocuments.site/reader034/viewer/2022050305/5f6d985ea35bfa7e5f08f7d8/html5/thumbnails/20.jpg)
BASE
ЧТО ВЫБРАЛИ МЫ?
• собственная очередь
• отличная масштабируемость
• более сложная модель программирования
CAP
Base: An Acid AlternativeПрекрасныестатьи для начала:
![Page 21: РАЗРАБОТКА ВЫСОКО- НАГРУЖЕННЫХ СИСТЕМcdn01.x-plarium.com/browser/content/developers/...ОБЛАЧНЫЕ СЕРВИСЫ ... вспомогательные](https://reader034.vdocuments.site/reader034/viewer/2022050305/5f6d985ea35bfa7e5f08f7d8/html5/thumbnails/21.jpg)
РАБОТА С ПАМЯТЬЮ
работа с большими объектами
сложность графа
ротация памяти
Cache is the King!
Необходимо четко знать,
что вы храните в памяти
![Page 22: РАЗРАБОТКА ВЫСОКО- НАГРУЖЕННЫХ СИСТЕМcdn01.x-plarium.com/browser/content/developers/...ОБЛАЧНЫЕ СЕРВИСЫ ... вспомогательные](https://reader034.vdocuments.site/reader034/viewer/2022050305/5f6d985ea35bfa7e5f08f7d8/html5/thumbnails/22.jpg)
РАБОТА С ПАМЯТЬЮ.БОЛЬШИЕ ОБЪЕКТЫ
выделение больших массивов
разбивка данных на части, где это возможно
снижение размера кучи больших объектов
уменьшение затрат на сборку мусора
снижение ротации памяти
![Page 23: РАЗРАБОТКА ВЫСОКО- НАГРУЖЕННЫХ СИСТЕМcdn01.x-plarium.com/browser/content/developers/...ОБЛАЧНЫЕ СЕРВИСЫ ... вспомогательные](https://reader034.vdocuments.site/reader034/viewer/2022050305/5f6d985ea35bfa7e5f08f7d8/html5/thumbnails/23.jpg)
РАБОТА С ПАМЯТЬЮ.КЭШИРОВАНИЕ
выбор коллекции и способа синхронизации
предварительный разогрев некоторых кэшей
политики устаревания и доверия данным
кэширование в базе
Кэширование вне процесса:
позволяет пережить перезагрузки
системы и сделать кэш обще-
доступным, но снижает скорость
доступа, требует дополнительной
обработки
Кэширование в памяти процесса:
![Page 24: РАЗРАБОТКА ВЫСОКО- НАГРУЖЕННЫХ СИСТЕМcdn01.x-plarium.com/browser/content/developers/...ОБЛАЧНЫЕ СЕРВИСЫ ... вспомогательные](https://reader034.vdocuments.site/reader034/viewer/2022050305/5f6d985ea35bfa7e5f08f7d8/html5/thumbnails/24.jpg)
РАБОТА С ПАМЯТЬЮ.БОЛЬШЕ ДЕТАЛЕЙ
пулы
снова сложность графа
использование структур
![Page 25: РАЗРАБОТКА ВЫСОКО- НАГРУЖЕННЫХ СИСТЕМcdn01.x-plarium.com/browser/content/developers/...ОБЛАЧНЫЕ СЕРВИСЫ ... вспомогательные](https://reader034.vdocuments.site/reader034/viewer/2022050305/5f6d985ea35bfa7e5f08f7d8/html5/thumbnails/25.jpg)
JSON-СЕРИАЛИЗАЦИЯ
написали сериализацию
самостоятельно
оказалось в 10 раз быстрее JSON.Net,
в 3 раза быстрее fastJSON
совместимость между данными была
критически важной
Тратим до 50 % времени
процессора на сериализацию
и десериализацию
![Page 26: РАЗРАБОТКА ВЫСОКО- НАГРУЖЕННЫХ СИСТЕМcdn01.x-plarium.com/browser/content/developers/...ОБЛАЧНЫЕ СЕРВИСЫ ... вспомогательные](https://reader034.vdocuments.site/reader034/viewer/2022050305/5f6d985ea35bfa7e5f08f7d8/html5/thumbnails/26.jpg)
ПРОФИЛИРОВЩИК
сложность нагрузочного
тестирования
необходимость мониторинга
традиционные планировщики
![Page 27: РАЗРАБОТКА ВЫСОКО- НАГРУЖЕННЫХ СИСТЕМcdn01.x-plarium.com/browser/content/developers/...ОБЛАЧНЫЕ СЕРВИСЫ ... вспомогательные](https://reader034.vdocuments.site/reader034/viewer/2022050305/5f6d985ea35bfa7e5f08f7d8/html5/thumbnails/27.jpg)
ПРОФИЛИРОВЩИК
Используем свою
систему счетчиков
производительности
using (new PerfWatch(“Read“ ) ) ints = File .ReadAllText(“inst .txt“ ) .Split (new[ ] {“ “ }, StringSplitOptions.RemoveEmplyEntries) .Select( int .Parse) .ToList ( ) ;
using (new PerfWatch(“Sort“ ) ) ints .Sort( ) ;
using (new PerfWatch(“Write“ ) ) File .WriteAllText(“sorted inst .txt“, string.Join(“ “, ints)) ;
![Page 28: РАЗРАБОТКА ВЫСОКО- НАГРУЖЕННЫХ СИСТЕМcdn01.x-plarium.com/browser/content/developers/...ОБЛАЧНЫЕ СЕРВИСЫ ... вспомогательные](https://reader034.vdocuments.site/reader034/viewer/2022050305/5f6d985ea35bfa7e5f08f7d8/html5/thumbnails/28.jpg)
ПРОФИЛИРОВЩИКСтатистика накапливается в памяти
и собирается с серверов вместе
с другой полезной информацией.
Поддерживаются иерархии счетчиков
для анализа цепочек вызовов.
![Page 29: РАЗРАБОТКА ВЫСОКО- НАГРУЖЕННЫХ СИСТЕМcdn01.x-plarium.com/browser/content/developers/...ОБЛАЧНЫЕ СЕРВИСЫ ... вспомогательные](https://reader034.vdocuments.site/reader034/viewer/2022050305/5f6d985ea35bfa7e5f08f7d8/html5/thumbnails/29.jpg)
ПРОФИЛИРОВЩИК
простой и гибкий подход к указанию профилируемых участков
автоматическая генерация счетчиков для точек входа (сетевых запросов, методов)
возможность просмотра и агрегации по принципу parent-child
![Page 30: РАЗРАБОТКА ВЫСОКО- НАГРУЖЕННЫХ СИСТЕМcdn01.x-plarium.com/browser/content/developers/...ОБЛАЧНЫЕ СЕРВИСЫ ... вспомогательные](https://reader034.vdocuments.site/reader034/viewer/2022050305/5f6d985ea35bfa7e5f08f7d8/html5/thumbnails/30.jpg)
ЛОГИРОВАНИЕ
часто единственный способ
диагностики ошибок
используем два формата: human
readable и JSON
пишем всё, что можно писать
используем log4net и Kafka
для сбора логов в реальном
времени
генерируем порядка 130 Гб
логов для аналитики в сутки
(примерно 220 млн полезных
событий в сутки)
![Page 31: РАЗРАБОТКА ВЫСОКО- НАГРУЖЕННЫХ СИСТЕМcdn01.x-plarium.com/browser/content/developers/...ОБЛАЧНЫЕ СЕРВИСЫ ... вспомогательные](https://reader034.vdocuments.site/reader034/viewer/2022050305/5f6d985ea35bfa7e5f08f7d8/html5/thumbnails/31.jpg)
DEPLOYMENT
делаем примерно 52 релиза в год
64 сервера приложений и 21 сервер баз данных
разработали простую, но эффективную инфраструктуру
для развертывания и конфигурирования серверов
есть инструменты для мониторинга состояния серверов
(свои и сторонние)
![Page 32: РАЗРАБОТКА ВЫСОКО- НАГРУЖЕННЫХ СИСТЕМcdn01.x-plarium.com/browser/content/developers/...ОБЛАЧНЫЕ СЕРВИСЫ ... вспомогательные](https://reader034.vdocuments.site/reader034/viewer/2022050305/5f6d985ea35bfa7e5f08f7d8/html5/thumbnails/32.jpg)
ОБО ВСЁМ ПОНЕМНОГУ
проектируйте максимально простую архитектуру
с запасом прочности
исходите из требований к нагрузке, реального
использования и здравого смысла
оценивайте новые веяния прагматично
используйте только хорошо знакомый стек
![Page 33: РАЗРАБОТКА ВЫСОКО- НАГРУЖЕННЫХ СИСТЕМcdn01.x-plarium.com/browser/content/developers/...ОБЛАЧНЫЕ СЕРВИСЫ ... вспомогательные](https://reader034.vdocuments.site/reader034/viewer/2022050305/5f6d985ea35bfa7e5f08f7d8/html5/thumbnails/33.jpg)
ОБО ВСЁМ ПОНЕМНОГУ
понимайте архитектуру железа
проанализируйте работу основных структур
данных и временные затраты
обязательно используйте инструментарий для
мониторинга жизнедеятельности системы
микрооптимизации могут дать приятный бонус
![Page 34: РАЗРАБОТКА ВЫСОКО- НАГРУЖЕННЫХ СИСТЕМcdn01.x-plarium.com/browser/content/developers/...ОБЛАЧНЫЕ СЕРВИСЫ ... вспомогательные](https://reader034.vdocuments.site/reader034/viewer/2022050305/5f6d985ea35bfa7e5f08f7d8/html5/thumbnails/34.jpg)
СПАСИБОРАЗРАБОТКАВЫСОКОНАГРУЖЕННЫХСИСТЕМ
ПАВЕЛМАТЛАШОВ