SlideShare una empresa de Scribd logo
1 de 11
Backend игрового проекта
Обработка запросов от игрового клиента
В пакете не более N-команд
Структура пакета и каждой команды
соответствует формату JSON-RPC
Набор команд выполняется либо
полностью, либо полностью
отменяется.
Закрепление изменений в базе
данных происходит через транзакции
PHP FPM и создание пулов под задачи
FPM - менеджер процессов FastCGI
Возможности:
1. Создание наборов обработчиков с различными настройками
2. Динамическое и статическое создание дочерних процессов обработчика
Для каждого сервиса создаем отдельный пул PHP-процессов
Переход с PHP 5 на PHP 7
Изменения: Снижение использования CPU c 31% до 17%
Оптимизация настроек FPM:
Переключение на новую версию:
Изменения: В пике нагрузки снижение использования CPU c 49% до 30%
Использование AdoDB для работы с базой данных
Возможности:
1. Предоставляет ORM-подобный механизм работы с базой данных
2. Абстрагирование от конкретной СУБД
3. Статистика запросов
4. Кэширование результатов выборки
Использование ProxySQL. Распределения запросов между серверами БД
● Топология репликации - Звезда
● Выделяем под запись один
сервер
● Балансируем команды на чтение
между репликами базы данных
Функционал ProxySQL:
● Редактирование списка серверов
● Редактирование пользователей
● Правила балансировки запросов
● Мониторинг состояния серверов
● Статистика запросов
● Отдельная реплика для бекапов и
запросов статистики
Использование Memcached для оптимизации
Можно разместить на каждом сервере приложения
Сокращает количество обращений к серверам базы
данных
Не даст прироста, если БД полностью в памяти
Мониторинг состояния системы через Zabbix
● Один сервер для хранения и анализа данных от
агентов
● Каждый сервер имеет своего Zabbix агента для
сбора и отправки данных
● Автоматическое обнаружение нового агента при
добавлении дополнительного сервера
● Информирование о неполадках через сервис
Email2SMS
● Хранение истории изменения параметров
мониторинга
Сергей Мезенев, Broccoli Games — Backend игрового проекта

Más contenido relacionado

Destacado

Игорь Цупко, Notamedia — Документация? Не слышал
Игорь Цупко, Notamedia — Документация? Не слышалИгорь Цупко, Notamedia — Документация? Не слышал
Игорь Цупко, Notamedia — Документация? Не слышалDev_Party
 
Андрей Валдуев, Playrix — Основы тестирования и примеры использования базовых...
Андрей Валдуев, Playrix — Основы тестирования и примеры использования базовых...Андрей Валдуев, Playrix — Основы тестирования и примеры использования базовых...
Андрей Валдуев, Playrix — Основы тестирования и примеры использования базовых...Dev_Party
 
Александр Чистяков, Git in Sky — Современные тенденции в разработке программн...
Александр Чистяков, Git in Sky — Современные тенденции в разработке программн...Александр Чистяков, Git in Sky — Современные тенденции в разработке программн...
Александр Чистяков, Git in Sky — Современные тенденции в разработке программн...Dev_Party
 
Денис Каленбет, АО «Эр-Стайл Софтлаб» — Самокапитализация программиста. Как п...
Денис Каленбет, АО «Эр-Стайл Софтлаб» — Самокапитализация программиста. Как п...Денис Каленбет, АО «Эр-Стайл Софтлаб» — Самокапитализация программиста. Как п...
Денис Каленбет, АО «Эр-Стайл Софтлаб» — Самокапитализация программиста. Как п...Dev_Party
 
Сергей Яркин, Тензор — RabbitMQ. Насколько ценен мех и вкусно мясо?
Сергей Яркин, Тензор — RabbitMQ. Насколько ценен мех и вкусно мясо?Сергей Яркин, Тензор — RabbitMQ. Насколько ценен мех и вкусно мясо?
Сергей Яркин, Тензор — RabbitMQ. Насколько ценен мех и вкусно мясо?Dev_Party
 
Дмитрий Ивакин, ООО «Пайлабс» — Node.js: realtime приложение на примере систе...
Дмитрий Ивакин, ООО «Пайлабс» — Node.js: realtime приложение на примере систе...Дмитрий Ивакин, ООО «Пайлабс» — Node.js: realtime приложение на примере систе...
Дмитрий Ивакин, ООО «Пайлабс» — Node.js: realtime приложение на примере систе...Dev_Party
 
Роман Приходько, Владимир Беспрозванных, «Сбербанк-Технологии» — Платформа ЕФС
Роман Приходько, Владимир Беспрозванных, «Сбербанк-Технологии» — Платформа ЕФСРоман Приходько, Владимир Беспрозванных, «Сбербанк-Технологии» — Платформа ЕФС
Роман Приходько, Владимир Беспрозванных, «Сбербанк-Технологии» — Платформа ЕФСDev_Party
 

Destacado (7)

Игорь Цупко, Notamedia — Документация? Не слышал
Игорь Цупко, Notamedia — Документация? Не слышалИгорь Цупко, Notamedia — Документация? Не слышал
Игорь Цупко, Notamedia — Документация? Не слышал
 
Андрей Валдуев, Playrix — Основы тестирования и примеры использования базовых...
Андрей Валдуев, Playrix — Основы тестирования и примеры использования базовых...Андрей Валдуев, Playrix — Основы тестирования и примеры использования базовых...
Андрей Валдуев, Playrix — Основы тестирования и примеры использования базовых...
 
Александр Чистяков, Git in Sky — Современные тенденции в разработке программн...
Александр Чистяков, Git in Sky — Современные тенденции в разработке программн...Александр Чистяков, Git in Sky — Современные тенденции в разработке программн...
Александр Чистяков, Git in Sky — Современные тенденции в разработке программн...
 
Денис Каленбет, АО «Эр-Стайл Софтлаб» — Самокапитализация программиста. Как п...
Денис Каленбет, АО «Эр-Стайл Софтлаб» — Самокапитализация программиста. Как п...Денис Каленбет, АО «Эр-Стайл Софтлаб» — Самокапитализация программиста. Как п...
Денис Каленбет, АО «Эр-Стайл Софтлаб» — Самокапитализация программиста. Как п...
 
Сергей Яркин, Тензор — RabbitMQ. Насколько ценен мех и вкусно мясо?
Сергей Яркин, Тензор — RabbitMQ. Насколько ценен мех и вкусно мясо?Сергей Яркин, Тензор — RabbitMQ. Насколько ценен мех и вкусно мясо?
Сергей Яркин, Тензор — RabbitMQ. Насколько ценен мех и вкусно мясо?
 
Дмитрий Ивакин, ООО «Пайлабс» — Node.js: realtime приложение на примере систе...
Дмитрий Ивакин, ООО «Пайлабс» — Node.js: realtime приложение на примере систе...Дмитрий Ивакин, ООО «Пайлабс» — Node.js: realtime приложение на примере систе...
Дмитрий Ивакин, ООО «Пайлабс» — Node.js: realtime приложение на примере систе...
 
Роман Приходько, Владимир Беспрозванных, «Сбербанк-Технологии» — Платформа ЕФС
Роман Приходько, Владимир Беспрозванных, «Сбербанк-Технологии» — Платформа ЕФСРоман Приходько, Владимир Беспрозванных, «Сбербанк-Технологии» — Платформа ЕФС
Роман Приходько, Владимир Беспрозванных, «Сбербанк-Технологии» — Платформа ЕФС
 

Сергей Мезенев, Broccoli Games — Backend игрового проекта

  • 1.
  • 3.
  • 4. Обработка запросов от игрового клиента В пакете не более N-команд Структура пакета и каждой команды соответствует формату JSON-RPC Набор команд выполняется либо полностью, либо полностью отменяется. Закрепление изменений в базе данных происходит через транзакции
  • 5. PHP FPM и создание пулов под задачи FPM - менеджер процессов FastCGI Возможности: 1. Создание наборов обработчиков с различными настройками 2. Динамическое и статическое создание дочерних процессов обработчика Для каждого сервиса создаем отдельный пул PHP-процессов
  • 6. Переход с PHP 5 на PHP 7 Изменения: Снижение использования CPU c 31% до 17% Оптимизация настроек FPM: Переключение на новую версию: Изменения: В пике нагрузки снижение использования CPU c 49% до 30%
  • 7. Использование AdoDB для работы с базой данных Возможности: 1. Предоставляет ORM-подобный механизм работы с базой данных 2. Абстрагирование от конкретной СУБД 3. Статистика запросов 4. Кэширование результатов выборки
  • 8. Использование ProxySQL. Распределения запросов между серверами БД ● Топология репликации - Звезда ● Выделяем под запись один сервер ● Балансируем команды на чтение между репликами базы данных Функционал ProxySQL: ● Редактирование списка серверов ● Редактирование пользователей ● Правила балансировки запросов ● Мониторинг состояния серверов ● Статистика запросов ● Отдельная реплика для бекапов и запросов статистики
  • 9. Использование Memcached для оптимизации Можно разместить на каждом сервере приложения Сокращает количество обращений к серверам базы данных Не даст прироста, если БД полностью в памяти
  • 10. Мониторинг состояния системы через Zabbix ● Один сервер для хранения и анализа данных от агентов ● Каждый сервер имеет своего Zabbix агента для сбора и отправки данных ● Автоматическое обнаружение нового агента при добавлении дополнительного сервера ● Информирование о неполадках через сервис Email2SMS ● Хранение истории изменения параметров мониторинга