World of Tanks: один миллион игроков онлайн

34
WORLD OF TANKS ОДИН МИЛЛИОН ИГРОКОВ ОНЛАЙН МАКСИМ МЕЛЬНИКОВ

Transcript of World of Tanks: один миллион игроков онлайн

Page 1: World of Tanks: один миллион игроков онлайн

WORLD OF TANKSОДИН МИЛЛИОН ИГРОКОВ ОНЛАЙН

МАКСИМ МЕЛЬНИКОВ

Page 2: 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: один миллион игроков онлайн, Максим Мельников

Page 3: World of Tanks: один миллион игроков онлайн

WORLD OF TANKS

I mmorpgI fps о танкахI 15x15 pvp

World of Tanks: один миллион игроков онлайн, Максим Мельников

Page 4: World of Tanks: один миллион игроков онлайн

WORLD OF TANKS СЕГОДНЯ

I 1.1M одновременно играющих в пикеI 11M сообщений в секундуI 500 серверов для обслуживания игрыI 60M посещений игрового портала в месяцI 6PB (петабайт) на установку и обновления игрового клиента в месяц

World of Tanks: один миллион игроков онлайн, Максим Мельников

Page 5: World of Tanks: один миллион игроков онлайн
Page 6: World of Tanks: один миллион игроков онлайн

ЧИТЕРЫ

I много игроков хотят чититьI читеры делают других игроков несчаснымиI ксенофобия

World of Tanks: один миллион игроков онлайн, Максим Мельников

Page 7: World of Tanks: один миллион игроков онлайн

МАСШТАБИРОВАНИЕ

I лучше продукт — больше игроковI больше игроков — больше серверовI больше серверов — сильнее проблема синхронизации

World of Tanks: один миллион игроков онлайн, Максим Мельников

Page 8: World of Tanks: один миллион игроков онлайн

ПРОБЛЕМА ЕДИНОГО ДАТАЦЕНТРА

I латентностьI доступностьI единая точка отказа

World of Tanks: один миллион игроков онлайн, Максим Мельников

Page 9: World of Tanks: один миллион игроков онлайн

БИГ ДАТА

I больше игроков — больше данныхI больше данных — больше дисковI внезапно, нужны совершенно новые решения для хранения данных

World of Tanks: один миллион игроков онлайн, Максим Мельников

Page 10: World of Tanks: один миллион игроков онлайн

БЫСТРЫЙ РОСТ

I простые решения — время выхода на рынокI большой успех — простые решения совершенно непригоднымиI переделывание всего на летуI изменение бизнес требований каждый день

World of Tanks: один миллион игроков онлайн, Максим Мельников

Page 11: World of Tanks: один миллион игроков онлайн
Page 12: World of Tanks: один миллион игроков онлайн

НИКТО ВАМ НЕ ПОМОЖЕТ

I нет времени на обучение людейI нет времени на ожидаение поддержки от сторонних вендоровI нет времени на написание хороших, правильных решений

World of Tanks: один миллион игроков онлайн, Максим Мельников

Page 13: World of Tanks: один миллион игроков онлайн

ПОЛНЫЙ КОНТРОЛЬ

I софтI железоI данныеI команда

World of Tanks: один миллион игроков онлайн, Максим Мельников

Page 14: World of Tanks: один миллион игроков онлайн

LINUX И OPEN SOURCE

I готовые к использованию компонентыI хорошая документацияI возможность костомизации когда необходимоI наём людей с необходимыми навыками

World of Tanks: один миллион игроков онлайн, Максим Мельников

Page 15: World of Tanks: один миллион игроков онлайн
Page 16: World of Tanks: один миллион игроков онлайн

АРХИТЕКТУРА WORLD OF TANKS

I клиент игры — тонкий клиент, плеерI сервер — расчёт игрового мираI кластер — сотни процессов работающих как единое целое (сервер)I игровой мир — пошаговый, шаги очень маленькие

World of Tanks: один миллион игроков онлайн, Максим Мельников

Page 17: World of Tanks: один миллион игроков онлайн

КОМПОНЕНТЫ СЕРВЕРА

Хранилище

I MySQLI MySQL*I RabbitMQ

Вычислительные узлы

I BaseAppI CellAppI LoginApp

Дирижёры

I BaseAppMgrI CellAppMgrI DbMgr

World of Tanks: один миллион игроков онлайн, Максим Мельников

Page 18: World of Tanks: один миллион игроков онлайн

АРХИТЕКТУРА КЛАСТЕРА

World of Tanks: один миллион игроков онлайн, Максим Мельников

Page 19: World of Tanks: один миллион игроков онлайн

РАЗРАБОТКА СЕРВЕРА

1. обычный Python2. GC выключен3. немного C++4. RPC - на базе сообщений5. UDP-based протокол с гарантией доставки

World of Tanks: один миллион игроков онлайн, Максим Мельников

Page 20: World of Tanks: один миллион игроков онлайн

ОТКАЗОУСТОЙЧИВОСТЬ

I объекты только в памятиI репликация объектов на случай отказа

World of Tanks: один миллион игроков онлайн, Максим Мельников

Page 21: World of Tanks: один миллион игроков онлайн

ПЕРЕЕЗДЕЦ

I много кластеровI быстрое перемещение между кластерамиI выделенный кластер для хранения данных

World of Tanks: один миллион игроков онлайн, Максим Мельников

Page 22: World of Tanks: один миллион игроков онлайн

АРХИТЕКТУРА МЕТАКЛАСТЕРА

Центр

I постоянное хранилищеI аккаунты (proxy)I взаимодействие с web-ом

Периферия RU1, RU2, ...

I временное хранилищеI аккаунтыI бои

World of Tanks: один миллион игроков онлайн, Максим Мельников

Page 23: World of Tanks: один миллион игроков онлайн

ПРЕИМУЩЕСТВА МЕТАКЛАСТЕРА

1. масштабируемость2. гео-распределённость3. отказоустойчивость4. независимость

World of Tanks: один миллион игроков онлайн, Максим Мельников

Page 24: World of Tanks: один миллион игроков онлайн

ПРОДАКШН

1. 500 серверов2. 8k CPU ядер3. 32 TB RAM4. Linux

World of Tanks: один миллион игроков онлайн, Максим Мельников

Page 25: 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: один миллион игроков онлайн, Максим Мельников

Page 26: World of Tanks: один миллион игроков онлайн
Page 27: World of Tanks: один миллион игроков онлайн

ВЕБ ЗАДАЧИ

I регистрацияI новостиI статьи и описанияI медиа контентI платёжная формаI обработка платежей

I раздача обновленийI управление пользователямиI профиль игрокаI статистикаI рейтингиI ...

World of Tanks: один миллион игроков онлайн, Максим Мельников

Page 28: World of Tanks: один миллион игроков онлайн

ИНТЕГРАЦИЯ С ИГРОВЫМ СЕРВЕРОМ

I AMQP — протокол взаимодействия с игровым серверомI XML-RPC обёртка над AMQPI реплика данных игры в реляционном виде

World of Tanks: один миллион игроков онлайн, Максим Мельников

Page 29: World of Tanks: один миллион игроков онлайн

СЕРВИСНАЯ АРХИТЕКТУРА

I множество различных проектовI протоколы взаимодействия: AMQP, HTTP, SQL, XML-RPC

World of Tanks: один миллион игроков онлайн, Максим Мельников

Page 30: World of Tanks: один миллион игроков онлайн

LNAMPMR

World of Tanks: один миллион игроков онлайн, Максим Мельников

Page 31: World of Tanks: один миллион игроков онлайн

Other

World of Tanks: один миллион игроков онлайн, Максим Мельников

Page 32: World of Tanks: один миллион игроков онлайн
Page 33: World of Tanks: один миллион игроков онлайн

КЛЮЧИ К УСПЕХУ

I полный контроль над всемI Linux на сервереI опора на Open SourceI главное — скорость и простота разработкиI не стоит боятся гетерогенной средыI синхронный подход везде где можноI асинхронный — только там, где это необходимоI AMQP — отличный протокол для реализации RPCI работа с объектами в памяти самая быстрая

World of Tanks: один миллион игроков онлайн, Максим Мельников

Page 34: World of Tanks: один миллион игроков онлайн

СПАСИБО ЗА ВНИМАНИЕ. ВОПРОСЫ

МАКСИМ МЕЛЬНИКОВmailto:[email protected]://plus.google.com/+MaksimMelnikau/https://twitter.com/max_posedonhttp://wargaming.com