WORLD OF TANKS: ВЫСОКИЕ НАГРУЗКИ
МАКСИМ МЕЛЬНИКОВ
КТО Я
I
Wargaming.net
I
I
I
I
Order of War
Order of War: Challenge
World of Tanks developer
Linux Mobile hobbyist
I
I
I
I
Openmoko
systemd
telepathy
Gentoo
World of Tanks: высокие нагрузки, Максим Мельников
WORLD OF TANKS СЕГОДНЯ
I
800k одновременно играющих в пике
I
8M сообщений в секунду
I
300 серверов для обслуживания игры
I
60M посещений игрового портала в месяц
I
5PB (петабайт) на установку и обновления игрового клиента в месяц
World of Tanks: высокие нагрузки, Максим Мельников
СОДЕРЖАНИЕ
Вступление
Фрагменты архитектуры
Игровой cервер
Сетевой трафик
Метакластер
Веб
Обновление клиента
Заключение
World of Tanks: высокие нагрузки, Максим Мельников
АРХИТЕКТУРА WORLD OF TANKS
I
клиент игры — тонкий клиент, плеер
I
сервер — расчёт игрового мира
I
кластер — сотни процессов работающих как единое целое (сервер)
I
игровой мир — пошаговый, шаги очень маленькие
World of Tanks: высокие нагрузки, Максим Мельников
АРХИТЕКТУРА КЛАСТЕРА
Storage*
Nodes
Managers
MySQL
I
BaseApp
I
BaseAppMgr
I
MySQL*
I
CellApp
I
CellAppMgr
I
RabbitMQ
I
LoginApp
I
DbMgr
I
World of Tanks: высокие нагрузки, Максим Мельников
АРХИТЕКТУРА КЛАСТЕРА II
BaseApp
CellApp
I
Account
I
Arena
I
ChatChannel
I
Avatar
I
Clan
I
Vehicle
I
Admin
I
TeamBase
I
SysMessenger
I
AreaDestructibles
I
Node
I
Node
World of Tanks: высокие нагрузки, Максим Мельников
РАЗРАБОТКА СЕРВЕРА
1. обычный Python
2. GC выключен
3. немного C++
4. RPC - на базе сообщений
5. UDP-based протокол с гарантией доставки
World of Tanks: высокие нагрузки, Максим Мельников
ОТКАЗОУСТОЙЧИВОСТЬ
I
объекты только в памяти
I
репликация объектов на случай отказа
World of Tanks: высокие нагрузки, Максим Мельников
СЕТЕВОЙ ТРАФИК
1. 8M уникальных UDP пакетов в секунду
2. 16 Gbps на 800k пользователей
World of Tanks: высокие нагрузки, Максим Мельников
НЕРАВНОМЕРНЫЙ ТРАФИК
I
800k пакетов в 1ms
I
10k пакетов в следующие 99ms
World of Tanks: высокие нагрузки, Максим Мельников
ПРОБЛЕМЫ РОСТА
I
совсем не угадали размер аудитории на старте
I
постоянный рост аудитории
I
недоработки и нехватка оборудования
I
постоянный аврал
I
предел масштабирования кластера
World of Tanks: высокие нагрузки, Максим Мельников
ПЕРЕЕЗДЕЦ
I
много кластеров
I
быстрое перемещение между кластерами
I
выделенный кластер для хранения данных
World of Tanks: высокие нагрузки, Максим Мельников
АРХИТЕКТУРА МЕТАКЛАСТЕРА
Центр
Периферия RU1, RU2, ...
I
постоянное хранилище
I
временное хранилище
I
аккаунты (proxy)
I
аккаунты
I
взаимодействие с web-ом
I
бои
World of Tanks: высокие нагрузки, Максим Мельников
ПРEИМУЩЕСТВА МЕТАКЛАСТЕРА
1. масштабируемость
2. гео-распределённость
3. отказоустойчивость
4. независимость
World of Tanks: высокие нагрузки, Максим Мельников
ВЕБ
I
регистрация
I
раздача обновлений
I
новости
I
управление пользователями
I
статьи и описания
I
профиль игрока
I
медиа контент
I
статистика
I
платёжная форма
I
рейтинги
I
обработка платежей
I
...
World of Tanks: высокие нагрузки, Максим Мельников
ИНТЕГРАЦИЯ С ИГРОВЫМ СЕРВЕРОМ
I
AMQP — протокол взаимодействия с игровым сервером
I
XML-RPC обёртка над AMQP
I
реплика данных игры в реляционном виде
World of Tanks: высокие нагрузки, Максим Мельников
СЕРВИСНАЯ АРХИТЕКТУРА
I
множество различных проектов
I
протоколы взаимодействия: AMQP, HTTP, SQL, XML-RPC
World of Tanks: высокие нагрузки, Максим Мельников
СТЭК ТЕХНОЛОГИЙ
LNAMPMR
Другое
I
Linux
I
uwsgi
I
nginx
I
Twisted
I
Apache (mod_wsgi)
I
Php
I
MySQL
I
Ruby
I
Python (Django)
I
PostgreSQL
I
memcached
I
MongoDB
I
RabbitMQ
I
Redis
World of Tanks: высокие нагрузки, Максим Мельников
ОБНОВЛЕНИЕ КЛИЕНТА
I
отдельный процесс который занимается обновлениями
I
поддержка http и torrent протоколов
I
2M игроков
I
размер обновления 1GB
I
нет возможности раздавать обновление заранее
I
короткая сессия участия игроков в раздаче
World of Tanks: высокие нагрузки, Максим Мельников
CБОР СТАТИСТИКИ
1. Launcher
I
I
I
I
I
файл
размер
время
протокол
источник
2. tracker
3. CDN
World of Tanks: высокие нагрузки, Максим Мельников
РЕШЕНИЕ
I
наши torrent сервера — всегда в top-е
I
web seed-ы
World of Tanks: высокие нагрузки, Максим Мельников
ИДЕИ
I
главное — скорость и простота разработки
I
не стоит боятся гетерогенной среды
I
синхронный подход везде где можно
I
асинхронный — только там, где это необходимо
I
AMQP — отличный протокол для реализации RPC
I
работа с объектами в памяти самая быстрая
World of Tanks: высокие нагрузки, Максим Мельников
СПАСИБО ЗА ВНИМАНИЕ. ВОПРОСЫ
Максим Мельников
mailto:[email protected]
https://plus.google.com/114669104565190507739/
https://twitter.com/max_posedon
http://wargaming.com
Скачать