![Page 1: CodeFest 2012. Сапегин А. — Архитектура сайта Alawar.ru с учетом высоких нагрузок, различного типа контента и](https://reader035.vdocuments.pub/reader035/viewer/2022062616/549871fab47959ca698b4836/html5/thumbnails/1.jpg)
Архитектура нового сайта Alawar.ruс учётом высоких нагрузок
Технический руководитель проекта Alawar 7.0Сапегин Андрей
![Page 2: CodeFest 2012. Сапегин А. — Архитектура сайта Alawar.ru с учетом высоких нагрузок, различного типа контента и](https://reader035.vdocuments.pub/reader035/viewer/2022062616/549871fab47959ca698b4836/html5/thumbnails/2.jpg)
Компания Alawar
2
Издатель и дистрибутор игр на разных платформах
• 60 стран• 28 сайтов• >1500 партнёрских сайтов• Петабайт дистрибутивов в месяц
![Page 3: CodeFest 2012. Сапегин А. — Архитектура сайта Alawar.ru с учетом высоких нагрузок, различного типа контента и](https://reader035.vdocuments.pub/reader035/viewer/2022062616/549871fab47959ca698b4836/html5/thumbnails/3.jpg)
Веб-отдел AlawarБизнес-задачи
Дистрибуция:• Сайты• Партнерская программаИздательство:• Социальные игры• ММОВнутренние системы
3
![Page 4: CodeFest 2012. Сапегин А. — Архитектура сайта Alawar.ru с учетом высоких нагрузок, различного типа контента и](https://reader035.vdocuments.pub/reader035/viewer/2022062616/549871fab47959ca698b4836/html5/thumbnails/4.jpg)
Об авторе
4
Сапегин Андрей
Окончил НГТУ.Начал работать в Alawar в 2009 году
ведущим PHP программистом.Сейчас технический руководитель
проекта Alawar 7.0.
Задачи:• Архитектура сайта• Техническое развитие проекта
![Page 5: CodeFest 2012. Сапегин А. — Архитектура сайта Alawar.ru с учетом высоких нагрузок, различного типа контента и](https://reader035.vdocuments.pub/reader035/viewer/2022062616/549871fab47959ca698b4836/html5/thumbnails/5.jpg)
О чём пойдёт речь?
5
![Page 6: CodeFest 2012. Сапегин А. — Архитектура сайта Alawar.ru с учетом высоких нагрузок, различного типа контента и](https://reader035.vdocuments.pub/reader035/viewer/2022062616/549871fab47959ca698b4836/html5/thumbnails/6.jpg)
6
![Page 7: CodeFest 2012. Сапегин А. — Архитектура сайта Alawar.ru с учетом высоких нагрузок, различного типа контента и](https://reader035.vdocuments.pub/reader035/viewer/2022062616/549871fab47959ca698b4836/html5/thumbnails/7.jpg)
7
![Page 8: CodeFest 2012. Сапегин А. — Архитектура сайта Alawar.ru с учетом высоких нагрузок, различного типа контента и](https://reader035.vdocuments.pub/reader035/viewer/2022062616/549871fab47959ca698b4836/html5/thumbnails/8.jpg)
Какую задачу решали?
8
![Page 9: CodeFest 2012. Сапегин А. — Архитектура сайта Alawar.ru с учетом высоких нагрузок, различного типа контента и](https://reader035.vdocuments.pub/reader035/viewer/2022062616/549871fab47959ca698b4836/html5/thumbnails/9.jpg)
Задача
Архитектура:•миллионы пользователей•тысячи товаров на нескольких платформах•десятки языков•персонализированный контент•скорость
9
![Page 10: CodeFest 2012. Сапегин А. — Архитектура сайта Alawar.ru с учетом высоких нагрузок, различного типа контента и](https://reader035.vdocuments.pub/reader035/viewer/2022062616/549871fab47959ca698b4836/html5/thumbnails/10.jpg)
Требования к архитектуре
1. Как обеспечить быстродействие системы независимо от количества пользователей?
2. Как персонализировать контент под каждого пользователя?
3. Как реализовать мультиязычность и мультиплатформенность?
4. Как осуществить поддержку старых версий сайтов?
10
![Page 11: CodeFest 2012. Сапегин А. — Архитектура сайта Alawar.ru с учетом высоких нагрузок, различного типа контента и](https://reader035.vdocuments.pub/reader035/viewer/2022062616/549871fab47959ca698b4836/html5/thumbnails/11.jpg)
• Объём данных• Структура данных• Количество серверов• Количество ресурсов у сервера• Настройки серверов и оптимизация кода
Факторы быстродействия
![Page 12: CodeFest 2012. Сапегин А. — Архитектура сайта Alawar.ru с учетом высоких нагрузок, различного типа контента и](https://reader035.vdocuments.pub/reader035/viewer/2022062616/549871fab47959ca698b4836/html5/thumbnails/12.jpg)
• CPU• RAM• IO disk• IO Net• другой сервер
Причины медленной скорости
![Page 13: CodeFest 2012. Сапегин А. — Архитектура сайта Alawar.ru с учетом высоких нагрузок, различного типа контента и](https://reader035.vdocuments.pub/reader035/viewer/2022062616/549871fab47959ca698b4836/html5/thumbnails/13.jpg)
Что было сделано?
13
![Page 14: CodeFest 2012. Сапегин А. — Архитектура сайта Alawar.ru с учетом высоких нагрузок, различного типа контента и](https://reader035.vdocuments.pub/reader035/viewer/2022062616/549871fab47959ca698b4836/html5/thumbnails/14.jpg)
• Минимум действий на хите• Шардирование данных• Горячие данные вместо кеширования• Сохраняем старые сайты
Основные принципы архитектуры
![Page 15: CodeFest 2012. Сапегин А. — Архитектура сайта Alawar.ru с учетом высоких нагрузок, различного типа контента и](https://reader035.vdocuments.pub/reader035/viewer/2022062616/549871fab47959ca698b4836/html5/thumbnails/15.jpg)
Структура данных
15
Back EndНовый сайт
Redis
SphinxMySQL
Front Endwww.alawar.ru
Back EndСтарый сайт
MySQL
RabbitMQ
![Page 16: CodeFest 2012. Сапегин А. — Архитектура сайта Alawar.ru с учетом высоких нагрузок, различного типа контента и](https://reader035.vdocuments.pub/reader035/viewer/2022062616/549871fab47959ca698b4836/html5/thumbnails/16.jpg)
16
Redis 1
Redis 2
Redis 3
Redis 4
Redis N
KeyDistributor
data:item:preview@ru#1234data:user:preview#1234567list:item:hit@game-pc:ru
Структура данныхшардирование в NoSQL
config
![Page 17: CodeFest 2012. Сапегин А. — Архитектура сайта Alawar.ru с учетом высоких нагрузок, различного типа контента и](https://reader035.vdocuments.pub/reader035/viewer/2022062616/549871fab47959ca698b4836/html5/thumbnails/17.jpg)
Структура данныхшардирование в MySQL
17
Основная БД
БД пользователей
1
БД пользователей
2
БД пользователей
N
БД товаров 1
БД товаров 2
БД товаров M
профиль
заказы
история
![Page 18: CodeFest 2012. Сапегин А. — Архитектура сайта Alawar.ru с учетом высоких нагрузок, различного типа контента и](https://reader035.vdocuments.pub/reader035/viewer/2022062616/549871fab47959ca698b4836/html5/thumbnails/18.jpg)
Возможности и плюсы:•количество и время жизни серверов•количество CPU, объем RAM, HDD•логически разбивать сервера на типы выполняемых задач •риск поломки жесткого диска
Облачное размещение серверов
![Page 19: CodeFest 2012. Сапегин А. — Архитектура сайта Alawar.ru с учетом высоких нагрузок, различного типа контента и](https://reader035.vdocuments.pub/reader035/viewer/2022062616/549871fab47959ca698b4836/html5/thumbnails/19.jpg)
Особенности:•производительность сервера с увеличением числа ядер с 4 до 32 будет расти нелинейно•тесты производительности•профилактические работы
Безоблачное размещение в облаках
![Page 20: CodeFest 2012. Сапегин А. — Архитектура сайта Alawar.ru с учетом высоких нагрузок, различного типа контента и](https://reader035.vdocuments.pub/reader035/viewer/2022062616/549871fab47959ca698b4836/html5/thumbnails/20.jpg)
Какие были проблемы?
20
![Page 21: CodeFest 2012. Сапегин А. — Архитектура сайта Alawar.ru с учетом высоких нагрузок, различного типа контента и](https://reader035.vdocuments.pub/reader035/viewer/2022062616/549871fab47959ca698b4836/html5/thumbnails/21.jpg)
Redis•Коннект к Redis через Rediska + PHP (Can't read from socket.)
RabbitMQ•Потеря коннекта•Ротация логов•Забывчивость роутов
Проблемы
![Page 22: CodeFest 2012. Сапегин А. — Архитектура сайта Alawar.ru с учетом высоких нагрузок, различного типа контента и](https://reader035.vdocuments.pub/reader035/viewer/2022062616/549871fab47959ca698b4836/html5/thumbnails/22.jpg)
Yii framework•повторное выполнение action•urlManager•findAll (и модификации)•отсутствие шардирования в коробке
Проблемы
![Page 23: CodeFest 2012. Сапегин А. — Архитектура сайта Alawar.ru с учетом высоких нагрузок, различного типа контента и](https://reader035.vdocuments.pub/reader035/viewer/2022062616/549871fab47959ca698b4836/html5/thumbnails/23.jpg)
Какие результаты?
23
![Page 24: CodeFest 2012. Сапегин А. — Архитектура сайта Alawar.ru с учетом высоких нагрузок, различного типа контента и](https://reader035.vdocuments.pub/reader035/viewer/2022062616/549871fab47959ca698b4836/html5/thumbnails/24.jpg)
Результатынагрузка на 1 из Back End-овпри 300 тыс. хитов в день
![Page 25: CodeFest 2012. Сапегин А. — Архитектура сайта Alawar.ru с учетом высоких нагрузок, различного типа контента и](https://reader035.vdocuments.pub/reader035/viewer/2022062616/549871fab47959ca698b4836/html5/thumbnails/25.jpg)
Результатынагрузка на 1 из Back End-овпри 300 тыс. хитов в день
![Page 26: CodeFest 2012. Сапегин А. — Архитектура сайта Alawar.ru с учетом высоких нагрузок, различного типа контента и](https://reader035.vdocuments.pub/reader035/viewer/2022062616/549871fab47959ca698b4836/html5/thumbnails/26.jpg)
Результатынагрузка на Redis
![Page 27: CodeFest 2012. Сапегин А. — Архитектура сайта Alawar.ru с учетом высоких нагрузок, различного типа контента и](https://reader035.vdocuments.pub/reader035/viewer/2022062616/549871fab47959ca698b4836/html5/thumbnails/27.jpg)
Результатынагрузка на MySQL
![Page 28: CodeFest 2012. Сапегин А. — Архитектура сайта Alawar.ru с учетом высоких нагрузок, различного типа контента и](https://reader035.vdocuments.pub/reader035/viewer/2022062616/549871fab47959ca698b4836/html5/thumbnails/28.jpg)
Выводы?
28
![Page 29: CodeFest 2012. Сапегин А. — Архитектура сайта Alawar.ru с учетом высоких нагрузок, различного типа контента и](https://reader035.vdocuments.pub/reader035/viewer/2022062616/549871fab47959ca698b4836/html5/thumbnails/29.jpg)
Выводы
• Выделяйте основные типы запросов• Выбирайте структуру данных под каждый тип
запросов• Закладывайте возможность масштабирования
29