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