CodeFest 2012. Сапегин А. — Архитектура сайта Alawar.ru с учетом...
description
Transcript of CodeFest 2012. Сапегин А. — Архитектура сайта Alawar.ru с учетом...
Архитектура нового сайта Alawar.ruс учётом высоких нагрузок
Технический руководитель проекта Alawar 7.0Сапегин Андрей
Компания Alawar
2
Издатель и дистрибутор игр на разных платформах
• 60 стран• 28 сайтов• >1500 партнёрских сайтов• Петабайт дистрибутивов в месяц
Веб-отдел AlawarБизнес-задачи
Дистрибуция:• Сайты• Партнерская программаИздательство:• Социальные игры• ММОВнутренние системы
3
Об авторе
4
Сапегин Андрей
Окончил НГТУ.Начал работать в Alawar в 2009 году
ведущим PHP программистом.Сейчас технический руководитель
проекта Alawar 7.0.
Задачи:• Архитектура сайта• Техническое развитие проекта
О чём пойдёт речь?
5
6
7
Какую задачу решали?
8
Задача
Архитектура:•миллионы пользователей•тысячи товаров на нескольких платформах•десятки языков•персонализированный контент•скорость
9
Требования к архитектуре
1. Как обеспечить быстродействие системы независимо от количества пользователей?
2. Как персонализировать контент под каждого пользователя?
3. Как реализовать мультиязычность и мультиплатформенность?
4. Как осуществить поддержку старых версий сайтов?
10
• Объём данных• Структура данных• Количество серверов• Количество ресурсов у сервера• Настройки серверов и оптимизация кода
Факторы быстродействия
• CPU• RAM• IO disk• IO Net• другой сервер
Причины медленной скорости
Что было сделано?
13
• Минимум действий на хите• Шардирование данных• Горячие данные вместо кеширования• Сохраняем старые сайты
Основные принципы архитектуры
Структура данных
15
Back EndНовый сайт
Redis
SphinxMySQL
Front Endwww.alawar.ru
Back EndСтарый сайт
MySQL
RabbitMQ
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
Структура данныхшардирование в MySQL
17
Основная БД
БД пользователей
1
БД пользователей
2
БД пользователей
N
БД товаров 1
БД товаров 2
БД товаров M
профиль
заказы
история
Возможности и плюсы:•количество и время жизни серверов•количество CPU, объем RAM, HDD•логически разбивать сервера на типы выполняемых задач •риск поломки жесткого диска
Облачное размещение серверов
Особенности:•производительность сервера с увеличением числа ядер с 4 до 32 будет расти нелинейно•тесты производительности•профилактические работы
Безоблачное размещение в облаках
Какие были проблемы?
20
Redis•Коннект к Redis через Rediska + PHP (Can't read from socket.)
RabbitMQ•Потеря коннекта•Ротация логов•Забывчивость роутов
Проблемы
Yii framework•повторное выполнение action•urlManager•findAll (и модификации)•отсутствие шардирования в коробке
Проблемы
Какие результаты?
23
Результатынагрузка на 1 из Back End-овпри 300 тыс. хитов в день
Результатынагрузка на 1 из Back End-овпри 300 тыс. хитов в день
Результатынагрузка на Redis
Результатынагрузка на MySQL
Выводы?
28
Выводы
• Выделяйте основные типы запросов• Выбирайте структуру данных под каждый тип
запросов• Закладывайте возможность масштабирования
29