WORLD OF TANKSОДИН МИЛЛИОН ИГРОКОВ ОНЛАЙН
МАКСИМ МЕЛЬНИКОВ
КТО Я
I Разработчик в Wargaming (Минск, Беларусь)I Order of WarI Order of War: ChallengeI World of Tanks developer
I Linux Mobile hobbyistI OpenmokoI systemdI telepathyI Gentoo
World of Tanks: один миллион игроков онлайн, Максим Мельников
WORLD OF TANKS
I mmorpgI fps о танкахI 15x15 pvp
World of Tanks: один миллион игроков онлайн, Максим Мельников
WORLD OF TANKS СЕГОДНЯ
I 1.1M одновременно играющих в пикеI 11M сообщений в секундуI 500 серверов для обслуживания игрыI 60M посещений игрового портала в месяцI 6PB (петабайт) на установку и обновления игрового клиента в месяц
World of Tanks: один миллион игроков онлайн, Максим Мельников
ЧИТЕРЫ
I много игроков хотят чититьI читеры делают других игроков несчаснымиI ксенофобия
World of Tanks: один миллион игроков онлайн, Максим Мельников
МАСШТАБИРОВАНИЕ
I лучше продукт — больше игроковI больше игроков — больше серверовI больше серверов — сильнее проблема синхронизации
World of Tanks: один миллион игроков онлайн, Максим Мельников
ПРОБЛЕМА ЕДИНОГО ДАТАЦЕНТРА
I латентностьI доступностьI единая точка отказа
World of Tanks: один миллион игроков онлайн, Максим Мельников
БИГ ДАТА
I больше игроков — больше данныхI больше данных — больше дисковI внезапно, нужны совершенно новые решения для хранения данных
World of Tanks: один миллион игроков онлайн, Максим Мельников
БЫСТРЫЙ РОСТ
I простые решения — время выхода на рынокI большой успех — простые решения совершенно непригоднымиI переделывание всего на летуI изменение бизнес требований каждый день
World of Tanks: один миллион игроков онлайн, Максим Мельников
НИКТО ВАМ НЕ ПОМОЖЕТ
I нет времени на обучение людейI нет времени на ожидаение поддержки от сторонних вендоровI нет времени на написание хороших, правильных решений
World of Tanks: один миллион игроков онлайн, Максим Мельников
ПОЛНЫЙ КОНТРОЛЬ
I софтI железоI данныеI команда
World of Tanks: один миллион игроков онлайн, Максим Мельников
LINUX И OPEN SOURCE
I готовые к использованию компонентыI хорошая документацияI возможность костомизации когда необходимоI наём людей с необходимыми навыками
World of Tanks: один миллион игроков онлайн, Максим Мельников
АРХИТЕКТУРА WORLD OF TANKS
I клиент игры — тонкий клиент, плеерI сервер — расчёт игрового мираI кластер — сотни процессов работающих как единое целое (сервер)I игровой мир — пошаговый, шаги очень маленькие
World of Tanks: один миллион игроков онлайн, Максим Мельников
КОМПОНЕНТЫ СЕРВЕРА
Хранилище
I MySQLI MySQL*I RabbitMQ
Вычислительные узлы
I BaseAppI CellAppI LoginApp
Дирижёры
I BaseAppMgrI CellAppMgrI DbMgr
World of Tanks: один миллион игроков онлайн, Максим Мельников
АРХИТЕКТУРА КЛАСТЕРА
World of Tanks: один миллион игроков онлайн, Максим Мельников
РАЗРАБОТКА СЕРВЕРА
1. обычный Python2. GC выключен3. немного C++4. RPC - на базе сообщений5. UDP-based протокол с гарантией доставки
World of Tanks: один миллион игроков онлайн, Максим Мельников
ОТКАЗОУСТОЙЧИВОСТЬ
I объекты только в памятиI репликация объектов на случай отказа
World of Tanks: один миллион игроков онлайн, Максим Мельников
ПЕРЕЕЗДЕЦ
I много кластеровI быстрое перемещение между кластерамиI выделенный кластер для хранения данных
World of Tanks: один миллион игроков онлайн, Максим Мельников
АРХИТЕКТУРА МЕТАКЛАСТЕРА
Центр
I постоянное хранилищеI аккаунты (proxy)I взаимодействие с web-ом
Периферия RU1, RU2, ...
I временное хранилищеI аккаунтыI бои
World of Tanks: один миллион игроков онлайн, Максим Мельников
ПРЕИМУЩЕСТВА МЕТАКЛАСТЕРА
1. масштабируемость2. гео-распределённость3. отказоустойчивость4. независимость
World of Tanks: один миллион игроков онлайн, Максим Мельников
ПРОДАКШН
1. 500 серверов2. 8k CPU ядер3. 32 TB RAM4. Linux
World of Tanks: один миллион игроков онлайн, Максим Мельников
ГЛАВНАЯ ИГРОВАЯ БАЗА: MYSQL
I размер базы: 300 GBI 384 GB RAMI Percona 5.5 (buffer pool warming — 1GBps)I 40k SELECT, 1k INSERT, 1k UPDATE в секундуI 24 HDD ∗ 600 GB ∗ 0.5 = 6 TB
World of Tanks: один миллион игроков онлайн, Максим Мельников
ВЕБ ЗАДАЧИ
I регистрацияI новостиI статьи и описанияI медиа контентI платёжная формаI обработка платежей
I раздача обновленийI управление пользователямиI профиль игрокаI статистикаI рейтингиI ...
World of Tanks: один миллион игроков онлайн, Максим Мельников
ИНТЕГРАЦИЯ С ИГРОВЫМ СЕРВЕРОМ
I AMQP — протокол взаимодействия с игровым серверомI XML-RPC обёртка над AMQPI реплика данных игры в реляционном виде
World of Tanks: один миллион игроков онлайн, Максим Мельников
СЕРВИСНАЯ АРХИТЕКТУРА
I множество различных проектовI протоколы взаимодействия: AMQP, HTTP, SQL, XML-RPC
World of Tanks: один миллион игроков онлайн, Максим Мельников
LNAMPMR
World of Tanks: один миллион игроков онлайн, Максим Мельников
Other
World of Tanks: один миллион игроков онлайн, Максим Мельников
КЛЮЧИ К УСПЕХУ
I полный контроль над всемI Linux на сервереI опора на Open SourceI главное — скорость и простота разработкиI не стоит боятся гетерогенной средыI синхронный подход везде где можноI асинхронный — только там, где это необходимоI AMQP — отличный протокол для реализации RPCI работа с объектами в памяти самая быстрая
World of Tanks: один миллион игроков онлайн, Максим Мельников
СПАСИБО ЗА ВНИМАНИЕ. ВОПРОСЫ
МАКСИМ МЕЛЬНИКОВmailto:[email protected]://plus.google.com/+MaksimMelnikau/https://twitter.com/max_posedonhttp://wargaming.com