codefest 2012. Сапегин А. — Архитектура сайта alawar.ru с учетом...

Post on 23-Dec-2014

963 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

 

TRANSCRIPT

Архитектура нового сайта 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

Спасибо за внимание!

Сапегин Андрейsapegin@alawar.com

@sapeg

г. Новосибирск, 2012

top related