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

30
Архитектура нового сайта Alawar.ru с учётом высоких нагрузок Технический руководитель проекта Alawar 7.0 Сапегин Андрей

Upload: codefest

Post on 23-Dec-2014

963 views

Category:

Documents


0 download

DESCRIPTION

 

TRANSCRIPT

Page 1: CodeFest 2012. Сапегин А. — Архитектура сайта Alawar.ru с учетом высоких нагрузок, различного типа контента и

Архитектура нового сайта Alawar.ruс учётом высоких нагрузок

Технический руководитель проекта Alawar 7.0Сапегин Андрей

Page 2: CodeFest 2012. Сапегин А. — Архитектура сайта Alawar.ru с учетом высоких нагрузок, различного типа контента и

Компания Alawar

2

Издатель и дистрибутор игр на разных платформах

• 60 стран• 28 сайтов• >1500 партнёрских сайтов• Петабайт дистрибутивов в месяц

Page 3: CodeFest 2012. Сапегин А. — Архитектура сайта Alawar.ru с учетом высоких нагрузок, различного типа контента и

Веб-отдел AlawarБизнес-задачи

Дистрибуция:• Сайты• Партнерская программаИздательство:• Социальные игры• ММОВнутренние системы

3

Page 4: CodeFest 2012. Сапегин А. — Архитектура сайта Alawar.ru с учетом высоких нагрузок, различного типа контента и

Об авторе

4

Сапегин Андрей

Окончил НГТУ.Начал работать в Alawar в 2009 году

ведущим PHP программистом.Сейчас технический руководитель

проекта Alawar 7.0.

Задачи:• Архитектура сайта• Техническое развитие проекта

Page 5: CodeFest 2012. Сапегин А. — Архитектура сайта Alawar.ru с учетом высоких нагрузок, различного типа контента и

О чём пойдёт речь?

5

Page 6: CodeFest 2012. Сапегин А. — Архитектура сайта Alawar.ru с учетом высоких нагрузок, различного типа контента и

6

Page 7: CodeFest 2012. Сапегин А. — Архитектура сайта Alawar.ru с учетом высоких нагрузок, различного типа контента и

7

Page 8: CodeFest 2012. Сапегин А. — Архитектура сайта Alawar.ru с учетом высоких нагрузок, различного типа контента и

Какую задачу решали?

8

Page 9: CodeFest 2012. Сапегин А. — Архитектура сайта Alawar.ru с учетом высоких нагрузок, различного типа контента и

Задача

Архитектура:•миллионы пользователей•тысячи товаров на нескольких платформах•десятки языков•персонализированный контент•скорость

9

Page 10: CodeFest 2012. Сапегин А. — Архитектура сайта Alawar.ru с учетом высоких нагрузок, различного типа контента и

Требования к архитектуре

1. Как обеспечить быстродействие системы независимо от количества пользователей?

2. Как персонализировать контент под каждого пользователя?

3. Как реализовать мультиязычность и мультиплатформенность?

4. Как осуществить поддержку старых версий сайтов?

10

Page 11: CodeFest 2012. Сапегин А. — Архитектура сайта Alawar.ru с учетом высоких нагрузок, различного типа контента и

• Объём данных• Структура данных• Количество серверов• Количество ресурсов у сервера• Настройки серверов и оптимизация кода

Факторы быстродействия

Page 12: CodeFest 2012. Сапегин А. — Архитектура сайта Alawar.ru с учетом высоких нагрузок, различного типа контента и

• CPU• RAM• IO disk• IO Net• другой сервер

Причины медленной скорости

Page 13: CodeFest 2012. Сапегин А. — Архитектура сайта Alawar.ru с учетом высоких нагрузок, различного типа контента и

Что было сделано?

13

Page 14: CodeFest 2012. Сапегин А. — Архитектура сайта Alawar.ru с учетом высоких нагрузок, различного типа контента и

• Минимум действий на хите• Шардирование данных• Горячие данные вместо кеширования• Сохраняем старые сайты

Основные принципы архитектуры

Page 15: CodeFest 2012. Сапегин А. — Архитектура сайта Alawar.ru с учетом высоких нагрузок, различного типа контента и

Структура данных

15

Back EndНовый сайт

Redis

SphinxMySQL

Front Endwww.alawar.ru

Back EndСтарый сайт

MySQL

RabbitMQ

Page 16: CodeFest 2012. Сапегин А. — Архитектура сайта Alawar.ru с учетом высоких нагрузок, различного типа контента и

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 с учетом высоких нагрузок, различного типа контента и

Структура данныхшардирование в MySQL

17

Основная БД

БД пользователей

1

БД пользователей

2

БД пользователей

N

БД товаров 1

БД товаров 2

БД товаров M

профиль

заказы

история

Page 18: CodeFest 2012. Сапегин А. — Архитектура сайта Alawar.ru с учетом высоких нагрузок, различного типа контента и

Возможности и плюсы:•количество и время жизни серверов•количество CPU, объем RAM, HDD•логически разбивать сервера на типы выполняемых задач •риск поломки жесткого диска

Облачное размещение серверов

Page 19: CodeFest 2012. Сапегин А. — Архитектура сайта Alawar.ru с учетом высоких нагрузок, различного типа контента и

Особенности:•производительность сервера с увеличением числа ядер с 4 до 32 будет расти нелинейно•тесты производительности•профилактические работы

Безоблачное размещение в облаках

Page 20: CodeFest 2012. Сапегин А. — Архитектура сайта Alawar.ru с учетом высоких нагрузок, различного типа контента и

Какие были проблемы?

20

Page 21: CodeFest 2012. Сапегин А. — Архитектура сайта Alawar.ru с учетом высоких нагрузок, различного типа контента и

Redis•Коннект к Redis через Rediska + PHP (Can't read from socket.)

RabbitMQ•Потеря коннекта•Ротация логов•Забывчивость роутов

Проблемы

Page 22: CodeFest 2012. Сапегин А. — Архитектура сайта Alawar.ru с учетом высоких нагрузок, различного типа контента и

Yii framework•повторное выполнение action•urlManager•findAll (и модификации)•отсутствие шардирования в коробке

Проблемы

Page 23: CodeFest 2012. Сапегин А. — Архитектура сайта Alawar.ru с учетом высоких нагрузок, различного типа контента и

Какие результаты?

23

Page 24: CodeFest 2012. Сапегин А. — Архитектура сайта Alawar.ru с учетом высоких нагрузок, различного типа контента и

Результатынагрузка на 1 из Back End-овпри 300 тыс. хитов в день

Page 25: CodeFest 2012. Сапегин А. — Архитектура сайта Alawar.ru с учетом высоких нагрузок, различного типа контента и

Результатынагрузка на 1 из Back End-овпри 300 тыс. хитов в день

Page 26: CodeFest 2012. Сапегин А. — Архитектура сайта Alawar.ru с учетом высоких нагрузок, различного типа контента и

Результатынагрузка на Redis

Page 27: CodeFest 2012. Сапегин А. — Архитектура сайта Alawar.ru с учетом высоких нагрузок, различного типа контента и

Результатынагрузка на MySQL

Page 28: CodeFest 2012. Сапегин А. — Архитектура сайта Alawar.ru с учетом высоких нагрузок, различного типа контента и

Выводы?

28

Page 29: CodeFest 2012. Сапегин А. — Архитектура сайта Alawar.ru с учетом высоких нагрузок, различного типа контента и

Выводы

• Выделяйте основные типы запросов• Выбирайте структуру данных под каждый тип

запросов• Закладывайте возможность масштабирования

29

Page 30: CodeFest 2012. Сапегин А. — Архитектура сайта Alawar.ru с учетом высоких нагрузок, различного типа контента и

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

Сапегин Андрей[email protected]

@sapeg

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