2. Компания Alawar
Издатель и дистрибутор игр на разных платформах
• 60 стран
• 28 сайтов
• >1500 партнёрских сайтов
• Петабайт дистрибутивов в месяц
2
4. Об авторе
Сапегин Андрей
Окончил НГТУ.
Начал работать в Alawar в 2009 году
ведущим PHP программистом.
Сейчас технический руководитель
проекта Alawar 7.0.
Задачи:
• Архитектура сайта
• Техническое развитие проекта
4
10. Требования к архитектуре
1. Как обеспечить быстродействие системы
независимо от количества пользователей?
2. Как персонализировать контент под каждого
пользователя?
3. Как реализовать мультиязычность и
мультиплатформенность?
4. Как осуществить поддержку старых версий
сайтов?
10
11. Факторы
быстродействия
• Объём данных
• Структура данных
• Количество серверов
• Количество ресурсов у сервера
• Настройки серверов и оптимизация кода
14. Основные принципы
архитектуры
• Минимум действий на хите
• Шардирование данных
• Горячие данные вместо кеширования
• Сохраняем старые сайты
15. Структура данных
Back End MySQL
Старый сайт
Front End
www.alawar.ru
Back End
Новый сайт RabbitMQ
Sphinx
Redis MySQL
15
16. Структура данных
шардирование в NoSQL
data:item:preview@ru#1234
data:user:preview#1234567 Redis 1
list:item:hit@game-pc:ru Redis 2
Redis 3
KeyDistributor Redis 4
config Redis N
16
17. Структура данных
шардирование в MySQL
БД
Основная БД
пользователей
БД товаров 1
1
БД
БД
пользователей
товаров 2
2
профиль
заказы БД
БД
пользователей
товаров M
история N
17
18. Облачное размещение
серверов
Возможности и плюсы:
•количество и время жизни серверов
•количество CPU, объем RAM, HDD
•логически разбивать сервера на типы
выполняемых задач
•риск поломки жесткого диска