28
WORLD OF TANKS: НА ПУТИ К 1M CCU МАКСИМ МЕЛЬНИКОВ

World of Tanks: на пути к 1M CCU

Embed Size (px)

DESCRIPTION

Доклад с ritconf2013, о том, как работает World of Tanks...

Citation preview

Page 1: World of Tanks: на пути к 1M CCU

WORLD OF TANKS: НА ПУТИ К 1M CCU

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

Page 2: World of Tanks: на пути к 1M CCU

КТО Я

I Wargaming.netI Order of WarI Order of War: ChallengeI World of Tanks developer

I Linux Mobile hobbyistI OpenmokoI systemdI telepathyI Gentoo

World of Tanks: на пути к 1M CCU, Максим Мельников

Page 3: World of Tanks: на пути к 1M CCU

WORLD OF TANKS СЕГОДНЯ

I 800k одновременно играющих в пикеI 8M сообщений в секундуI 300 серверов для обслуживания игрыI 60M посещений игрового портала в месяцI 5PB (петабайт) на установку и обновления игрового клиента в месяц

World of Tanks: на пути к 1M CCU, Максим Мельников

Page 4: World of Tanks: на пути к 1M CCU

СОДЕРЖАНИЕ

Вступление

Фрагменты архитектурыИгровой cерверСетевой трафикМетакластерВебОбновление клиента

Заключение

World of Tanks: на пути к 1M CCU, Максим Мельников

Page 5: World of Tanks: на пути к 1M CCU

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

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

World of Tanks: на пути к 1M CCU, Максим Мельников

Page 6: World of Tanks: на пути к 1M CCU

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

Storage*

I MySQLI MySQL*I RabbitMQ

NodesI BaseAppI CellAppI LoginApp

Managers

I BaseAppMgrI CellAppMgrI DbMgr

World of Tanks: на пути к 1M CCU, Максим Мельников

Page 7: World of Tanks: на пути к 1M CCU

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

BaseApp

I AccountI ChatChannelI ClanI AdminI SysMessengerI Node

CellApp

I ArenaI AvatarI VehicleI TeamBaseI AreaDestructiblesI Node

World of Tanks: на пути к 1M CCU, Максим Мельников

Page 8: World of Tanks: на пути к 1M CCU

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

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

World of Tanks: на пути к 1M CCU, Максим Мельников

Page 9: World of Tanks: на пути к 1M CCU

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

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

World of Tanks: на пути к 1M CCU, Максим Мельников

Page 10: World of Tanks: на пути к 1M CCU

СЕТЕВОЙ ТРАФИК

1. 8M уникальных UDP пакетов в секунду2. 16 Gbps на 800k пользователей

World of Tanks: на пути к 1M CCU, Максим Мельников

Page 11: World of Tanks: на пути к 1M CCU

НЕРАВНОМЕРНЫЙ ТРАФИК

I 800k пакетов в 1msI 10k пакетов в следующие 99ms

World of Tanks: на пути к 1M CCU, Максим Мельников

Page 12: World of Tanks: на пути к 1M CCU

ПРОБЛЕМЫ РОСТА

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

World of Tanks: на пути к 1M CCU, Максим Мельников

Page 13: World of Tanks: на пути к 1M CCU

ПЕРЕЕЗДЕЦ

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

World of Tanks: на пути к 1M CCU, Максим Мельников

Page 14: World of Tanks: на пути к 1M CCU

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

Центр

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

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

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

World of Tanks: на пути к 1M CCU, Максим Мельников

Page 15: World of Tanks: на пути к 1M CCU

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

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

World of Tanks: на пути к 1M CCU, Максим Мельников

Page 16: World of Tanks: на пути к 1M CCU

ВЕБ

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

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

World of Tanks: на пути к 1M CCU, Максим Мельников

Page 17: World of Tanks: на пути к 1M CCU

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

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

World of Tanks: на пути к 1M CCU, Максим Мельников

Page 18: World of Tanks: на пути к 1M CCU

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

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

World of Tanks: на пути к 1M CCU, Максим Мельников

Page 19: World of Tanks: на пути к 1M CCU

СТЭК ТЕХНОЛОГИЙ

LNAMPMRI LinuxI nginxI Apache (mod_wsgi)I MySQLI Python (Django)I memcachedI RabbitMQ

Другое

I uwsgiI TwistedI PhpI RubyI PostgreSQLI MongoDBI Redis

World of Tanks: на пути к 1M CCU, Максим Мельников

Page 20: World of Tanks: на пути к 1M CCU

ОБНОВЛЕНИЕ КЛИЕНТА

I отдельный процесс который занимается обновлениямиI поддержка http и torrent протоколовI 2M игроковI размер обновления 1GBI нет возможности раздавать обновление заранееI короткая сессия участия игроков в раздаче

World of Tanks: на пути к 1M CCU, Максим Мельников

Page 21: World of Tanks: на пути к 1M CCU

CБОР СТАТИСТИКИ

1. LauncherI файлI размерI времяI протоколI источник

2. tracker3. CDN

World of Tanks: на пути к 1M CCU, Максим Мельников

Page 22: World of Tanks: на пути к 1M CCU

РЕШЕНИЕ

I наши torrent сервера — всегда в top-еI web seed-ы

World of Tanks: на пути к 1M CCU, Максим Мельников

Page 23: World of Tanks: на пути к 1M CCU
Page 24: World of Tanks: на пути к 1M CCU

ИДЕИ

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

World of Tanks: на пути к 1M CCU, Максим Мельников

Page 25: World of Tanks: на пути к 1M CCU

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

Максим Мельниковmailto:[email protected]://plus.google.com/114669104565190507739/https://twitter.com/max_posedonhttp://wargaming.com

Page 26: World of Tanks: на пути к 1M CCU

КОНФИГУРАЦИЯ ТИПИЧНОГО СЕРВЕРА

I 2 cpu ∗ 8 core ∗ 2 threadsI 64 GB RAMI 4 ethernet

World of Tanks: на пути к 1M CCU, Максим Мельников

Page 27: World of Tanks: на пути к 1M CCU

ОСНОВНАЯ ИГРОВАЯ БАЗА

I размер базы: 300 GBI 384 GB RAMI Percona 5.5 (разогрев кэша — 1GBps)I 40k select-ов, 1k insert-ов, 1k update-ов в секундуI 24 HDD ∗ 600 GB ∗ 0.5 = 6 TB

World of Tanks: на пути к 1M CCU, Максим Мельников

Page 28: World of Tanks: на пути к 1M CCU

ДОПОЛНИТЕЛЬНАЯ ИГРОВАЯ БАЗА

I размер базы: 4 TBI 64 GB RAMI MySQL 5.5I 100 GB, 350 млн записей (в день); 1k insert-ов в секундуI 24 HDD ∗ 600 GB ∗ 0.5 = 6 TBI ext4

World of Tanks: на пути к 1M CCU, Максим Мельников