SlideShare a Scribd company logo
1 of 20
Download to read offline
WORLD OF TANKS
НЕСКОЛЬКО ИДЕЙ ИЗ ОПЫТА РАЗРАБОТКИ
МАКСИМ МЕЛЬНИКОВ
КТО Я

Wargaming.net
Order of War
Order of War: Challenge
World of Tanks developer

Linux Mobile hobbyist
Openmoko
systemd
telepathy
Gentoo

World of Tanks: несколько идей из опыта разработки: Максим Мельников
WORLD OF TANKS СЕГОДНЯ

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

World of Tanks: несколько идей из опыта разработки: Максим Мельников
АРХИТЕКТУРА WORLD OF TANKS

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

World of Tanks: несколько идей из опыта разработки: Максим Мельников
АРХИТЕКТУРА КЛАСТЕРА

Storage*

Nodes

Managers

MySQL

BaseApp

BaseAppMgr

MySQL*

CellApp

CellAppMgr

RabbitMQ

LoginApp

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

CellApp

Account

Arena

ChatChannel

Avatar

Clan

Vehicle

Admin

TeamBase

SysMessenger

AreaDestructibles

Node

Node

World of Tanks: несколько идей из опыта разработки: Максим Мельников
РАЗРАБОТКА СЕРВЕРА

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

World of Tanks: несколько идей из опыта разработки: Максим Мельников
ОТКАЗОУСТОЙЧИВОСТЬ

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

World of Tanks: несколько идей из опыта разработки: Максим Мельников
ПРОБЛЕМЫ РОСТА

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

World of Tanks: несколько идей из опыта разработки: Максим Мельников
ПЕРЕЕЗДЕЦ

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

World of Tanks: несколько идей из опыта разработки: Максим Мельников
АРХИТЕКТУРА МЕТАКЛАСТЕРА

Центр

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

постоянное хранилище

временное хранилище

аккаунты (proxy)

аккаунты

взаимодействие с web-ом

бои

World of Tanks: несколько идей из опыта разработки: Максим Мельников
ПРEИМУЩЕСТВА МЕТАКЛАСТЕРА

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

World of Tanks: несколько идей из опыта разработки: Максим Мельников
ВЕБ

регистрация

раздача обновлений

новости

управление пользователями

статьи и описания

профиль игрока

медиа контент

статистика

платёжная форма

рейтинги

обработка платежей

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

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

World of Tanks: несколько идей из опыта разработки: Максим Мельников
СЕРВИСНАЯ АРХИТЕКТУРА

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

World of Tanks: несколько идей из опыта разработки: Максим Мельников
СТЭК ТЕХНОЛОГИЙ

LNAMPMR

Другое

Linux

uwsgi

nginx

Twisted

Apache (mod_wsgi)

Php

MySQL

Ruby

Python (Django)

Erlang

memcached

PostgreSQL

RabbitMQ

Redis
ИДЕИ

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

World of Tanks: несколько идей из опыта разработки: Максим Мельников
СПАСИБО ЗА ВНИМАНИЕ. ВОПРОСЫ

Максим Мельников
mailto:m_melnikau@wargaming.net
https://plus.google.com/+MaksimMelnikau
https://twitter.com/max_posedon
http://wargaming.com
ОСНОВНАЯ ИГРОВАЯ БАЗА

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

World of Tanks: несколько идей из опыта разработки: Максим Мельников

More Related Content

What's hot

Rendering and synchronization of 4000 units in Mushroom Wars 2
Rendering and synchronization of  4000 units in Mushroom Wars 2Rendering and synchronization of  4000 units in Mushroom Wars 2
Rendering and synchronization of 4000 units in Mushroom Wars 2DevGAMM Conference
 
Масштабирование Блокчейн Сетей
Масштабирование Блокчейн СетейМасштабирование Блокчейн Сетей
Масштабирование Блокчейн СетейEugene Aseev
 
Blockchain introduction
Blockchain introductionBlockchain introduction
Blockchain introductionDmitry Meshkov
 
Эволюция High availability: Windows Server 2016 Failover Clustering
Эволюция High availability: Windows Server 2016 Failover ClusteringЭволюция High availability: Windows Server 2016 Failover Clustering
Эволюция High availability: Windows Server 2016 Failover ClusteringYuriy Denisov
 
2013-01-05 01 Леонид Евдокимов. Web scale. Взорвется все
2013-01-05 01 Леонид Евдокимов. Web scale. Взорвется все2013-01-05 01 Леонид Евдокимов. Web scale. Взорвется все
2013-01-05 01 Леонид Евдокимов. Web scale. Взорвется всеОмские ИТ-субботники
 
1. Sartakov. Virtualization. June 01, 2013
1. Sartakov. Virtualization. June 01, 20131. Sartakov. Virtualization. June 01, 2013
1. Sartakov. Virtualization. June 01, 2013ru-fedora-moscow-2013
 
the workflow of a systems administrator
the workflow of a systems administratorthe workflow of a systems administrator
the workflow of a systems administratorAndrew Pantyukhin
 
Highload Begun Pankov
Highload Begun PankovHighload Begun Pankov
Highload Begun PankovOntico
 
Лекция №6 Организация ЭВМ и систем
Лекция №6 Организация ЭВМ и системЛекция №6 Организация ЭВМ и систем
Лекция №6 Организация ЭВМ и системpianist2317
 
Chronicle Map — key-value хранилище для трейдинга на Java / Левентов Роман (C...
Chronicle Map — key-value хранилище для трейдинга на Java / Левентов Роман (C...Chronicle Map — key-value хранилище для трейдинга на Java / Левентов Роман (C...
Chronicle Map — key-value хранилище для трейдинга на Java / Левентов Роман (C...Ontico
 
Контейнеры в OpenStack: простое решение сложных проблем
Контейнеры в OpenStack: простое решение сложных проблемКонтейнеры в OpenStack: простое решение сложных проблем
Контейнеры в OpenStack: простое решение сложных проблемYandex
 
Java осень 2012 лекция 4
Java осень 2012 лекция 4Java осень 2012 лекция 4
Java осень 2012 лекция 4Technopark
 
Хранение данных на виниле / Константин Осипов (tarantool.org)
Хранение данных на виниле / Константин Осипов (tarantool.org)Хранение данных на виниле / Константин Осипов (tarantool.org)
Хранение данных на виниле / Константин Осипов (tarantool.org)Ontico
 
Blockchain: under the hood
Blockchain: under the hoodBlockchain: under the hood
Blockchain: under the hoodDmitry Meshkov
 
hl++ Rubtsov
hl++ Rubtsovhl++ Rubtsov
hl++ RubtsovOntico
 

What's hot (19)

Myaso
MyasoMyaso
Myaso
 
Rendering and synchronization of 4000 units in Mushroom Wars 2
Rendering and synchronization of  4000 units in Mushroom Wars 2Rendering and synchronization of  4000 units in Mushroom Wars 2
Rendering and synchronization of 4000 units in Mushroom Wars 2
 
Масштабирование Блокчейн Сетей
Масштабирование Блокчейн СетейМасштабирование Блокчейн Сетей
Масштабирование Блокчейн Сетей
 
Blockchain introduction
Blockchain introductionBlockchain introduction
Blockchain introduction
 
Эволюция High availability: Windows Server 2016 Failover Clustering
Эволюция High availability: Windows Server 2016 Failover ClusteringЭволюция High availability: Windows Server 2016 Failover Clustering
Эволюция High availability: Windows Server 2016 Failover Clustering
 
2013-01-05 01 Леонид Евдокимов. Web scale. Взорвется все
2013-01-05 01 Леонид Евдокимов. Web scale. Взорвется все2013-01-05 01 Леонид Евдокимов. Web scale. Взорвется все
2013-01-05 01 Леонид Евдокимов. Web scale. Взорвется все
 
1. Sartakov. Virtualization. June 01, 2013
1. Sartakov. Virtualization. June 01, 20131. Sartakov. Virtualization. June 01, 2013
1. Sartakov. Virtualization. June 01, 2013
 
the workflow of a systems administrator
the workflow of a systems administratorthe workflow of a systems administrator
the workflow of a systems administrator
 
Highload Begun Pankov
Highload Begun PankovHighload Begun Pankov
Highload Begun Pankov
 
Лекция №6 Организация ЭВМ и систем
Лекция №6 Организация ЭВМ и системЛекция №6 Организация ЭВМ и систем
Лекция №6 Организация ЭВМ и систем
 
Chronicle Map — key-value хранилище для трейдинга на Java / Левентов Роман (C...
Chronicle Map — key-value хранилище для трейдинга на Java / Левентов Роман (C...Chronicle Map — key-value хранилище для трейдинга на Java / Левентов Роман (C...
Chronicle Map — key-value хранилище для трейдинга на Java / Левентов Роман (C...
 
Контейнеры в OpenStack: простое решение сложных проблем
Контейнеры в OpenStack: простое решение сложных проблемКонтейнеры в OpenStack: простое решение сложных проблем
Контейнеры в OpenStack: простое решение сложных проблем
 
Browser Opera
Browser OperaBrowser Opera
Browser Opera
 
Java осень 2012 лекция 4
Java осень 2012 лекция 4Java осень 2012 лекция 4
Java осень 2012 лекция 4
 
Chronicle Map
Chronicle MapChronicle Map
Chronicle Map
 
Хранение данных на виниле / Константин Осипов (tarantool.org)
Хранение данных на виниле / Константин Осипов (tarantool.org)Хранение данных на виниле / Константин Осипов (tarantool.org)
Хранение данных на виниле / Константин Осипов (tarantool.org)
 
Blockchain: under the hood
Blockchain: under the hoodBlockchain: under the hood
Blockchain: under the hood
 
hl++ Rubtsov
hl++ Rubtsovhl++ Rubtsov
hl++ Rubtsov
 
Blockchain comparison
Blockchain comparisonBlockchain comparison
Blockchain comparison
 

Viewers also liked

Корпоративная презентация в Beamer
Корпоративная презентация в BeamerКорпоративная презентация в Beamer
Корпоративная презентация в BeamerMaksim Melnikau
 
Python meetup, Minsk, September
Python meetup, Minsk, SeptemberPython meetup, Minsk, September
Python meetup, Minsk, SeptemberMaksim Melnikau
 
Zero downtime upgrade на коленках
Zero downtime upgrade на коленкахZero downtime upgrade на коленках
Zero downtime upgrade на коленкахMaksim Melnikau
 
Python meetup, Minsk, August
Python meetup, Minsk, AugustPython meetup, Minsk, August
Python meetup, Minsk, AugustMaksim Melnikau
 
Python meetup, Minsk, November
Python meetup, Minsk, NovemberPython meetup, Minsk, November
Python meetup, Minsk, NovemberMaksim Melnikau
 
IPv6 at Home: NAT64, DNS64, OpenVPN
IPv6 at Home: NAT64, DNS64, OpenVPNIPv6 at Home: NAT64, DNS64, OpenVPN
IPv6 at Home: NAT64, DNS64, OpenVPNMaksim Melnikau
 
World of Tanks: Linux and Open Source Inside
World of Tanks: Linux and Open Source InsideWorld of Tanks: Linux and Open Source Inside
World of Tanks: Linux and Open Source InsideMaksim Melnikau
 

Viewers also liked (13)

Корпоративная презентация в Beamer
Корпоративная презентация в BeamerКорпоративная презентация в Beamer
Корпоративная презентация в Beamer
 
LinuxCon Europe 2013
LinuxCon Europe 2013LinuxCon Europe 2013
LinuxCon Europe 2013
 
Ubuntu touch-install
Ubuntu touch-installUbuntu touch-install
Ubuntu touch-install
 
FOSDEM 2014
FOSDEM 2014FOSDEM 2014
FOSDEM 2014
 
FOSDEM 2014 Overview
FOSDEM 2014 OverviewFOSDEM 2014 Overview
FOSDEM 2014 Overview
 
Python meetup, Minsk, September
Python meetup, Minsk, SeptemberPython meetup, Minsk, September
Python meetup, Minsk, September
 
Zero downtime upgrade на коленках
Zero downtime upgrade на коленкахZero downtime upgrade на коленках
Zero downtime upgrade на коленках
 
Python meetup, Minsk, August
Python meetup, Minsk, AugustPython meetup, Minsk, August
Python meetup, Minsk, August
 
Python meetup, Minsk, November
Python meetup, Minsk, NovemberPython meetup, Minsk, November
Python meetup, Minsk, November
 
Wayland state in Gentoo
Wayland state in GentooWayland state in Gentoo
Wayland state in Gentoo
 
Telepathy Skykit
Telepathy SkykitTelepathy Skykit
Telepathy Skykit
 
IPv6 at Home: NAT64, DNS64, OpenVPN
IPv6 at Home: NAT64, DNS64, OpenVPNIPv6 at Home: NAT64, DNS64, OpenVPN
IPv6 at Home: NAT64, DNS64, OpenVPN
 
World of Tanks: Linux and Open Source Inside
World of Tanks: Linux and Open Source InsideWorld of Tanks: Linux and Open Source Inside
World of Tanks: Linux and Open Source Inside
 

Similar to World of Tanks: несколько идей из опыта разработки

Максим Мельников - Wargaming Web
Максим Мельников - Wargaming WebМаксим Мельников - Wargaming Web
Максим Мельников - Wargaming WebIT Share
 
Сергей Яркин, Тензор — RabbitMQ. Насколько ценен мех и вкусно мясо?
Сергей Яркин, Тензор — RabbitMQ. Насколько ценен мех и вкусно мясо?Сергей Яркин, Тензор — RabbitMQ. Насколько ценен мех и вкусно мясо?
Сергей Яркин, Тензор — RabbitMQ. Насколько ценен мех и вкусно мясо?Dev_Party
 
Виртуалтрединг
ВиртуалтредингВиртуалтрединг
ВиртуалтредингCEE-SEC(R)
 
Максим Щепелин - Доставляя веб-контент в игру
Максим Щепелин - Доставляя веб-контент в игруМаксим Щепелин - Доставляя веб-контент в игру
Максим Щепелин - Доставляя веб-контент в игруFDConf
 
Nekki: Shadow Fight 2: architecture of the analytics system handling billion ...
Nekki: Shadow Fight 2: architecture of the analytics system handling billion ...Nekki: Shadow Fight 2: architecture of the analytics system handling billion ...
Nekki: Shadow Fight 2: architecture of the analytics system handling billion ...DevGAMM Conference
 
Shadow Fight 2: архитектура системы аналитики для миллиарда событий
Shadow Fight 2: архитектура системы аналитики для миллиарда событийShadow Fight 2: архитектура системы аналитики для миллиарда событий
Shadow Fight 2: архитектура системы аналитики для миллиарда событийVyacheslav Nikulin
 
Легко ли продавать контейнеры на базаре
Легко ли продавать контейнеры на базареЛегко ли продавать контейнеры на базаре
Легко ли продавать контейнеры на базареOpenVZ
 
Современная операционная система: что надо знать разработчику / Александр Кри...
Современная операционная система: что надо знать разработчику / Александр Кри...Современная операционная система: что надо знать разработчику / Александр Кри...
Современная операционная система: что надо знать разработчику / Александр Кри...Ontico
 
Константин Трушкин. Использование платформы Эльбрус в информационно-защищённы...
Константин Трушкин. Использование платформы Эльбрус в информационно-защищённы...Константин Трушкин. Использование платформы Эльбрус в информационно-защищённы...
Константин Трушкин. Использование платформы Эльбрус в информационно-защищённы...Kaspersky
 
Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, Paral...
Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, Paral...Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, Paral...
Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, Paral...Mikhail Kurnosov
 
16 процессоры и память эвм лекция
16 процессоры и память эвм лекция16 процессоры и память эвм лекция
16 процессоры и память эвм лекцияSergey Lomakin
 
Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)
Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)
Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)Ontico
 
Presentation Amd Cpu
Presentation Amd CpuPresentation Amd Cpu
Presentation Amd Cpuandrei145
 
Облако в Badoo год спустя - работа над ошибками, Юрий Насретдинов (Badoo)
Облако в Badoo год спустя - работа над ошибками, Юрий Насретдинов (Badoo)Облако в Badoo год спустя - работа над ошибками, Юрий Насретдинов (Badoo)
Облако в Badoo год спустя - работа над ошибками, Юрий Насретдинов (Badoo)Badoo Development
 
Облако в Badoo год спустя - работа над ошибками, Юрий Насретдинов (Badoo)
Облако в Badoo год спустя - работа над ошибками, Юрий Насретдинов (Badoo)Облако в Badoo год спустя - работа над ошибками, Юрий Насретдинов (Badoo)
Облако в Badoo год спустя - работа над ошибками, Юрий Насретдинов (Badoo)Ontico
 
Облако в Badoo год спустя
Облако в Badoo год спустяОблако в Badoo год спустя
Облако в Badoo год спустяYuriy Nasretdinov
 
Практика использования NoSQL в высоконагруженном проекте (Дмитрий Ананьев)
Практика использования NoSQL в высоконагруженном проекте (Дмитрий Ананьев)Практика использования NoSQL в высоконагруженном проекте (Дмитрий Ананьев)
Практика использования NoSQL в высоконагруженном проекте (Дмитрий Ананьев)Ontico
 
TMPA-2013 Smirnov
TMPA-2013 SmirnovTMPA-2013 Smirnov
TMPA-2013 SmirnovIosif Itkin
 
Многопользовательские браузерные игры нового типа
Многопользовательские браузерные игры нового типаМногопользовательские браузерные игры нового типа
Многопользовательские браузерные игры нового типаAnton Volkov
 

Similar to World of Tanks: несколько идей из опыта разработки (20)

Максим Мельников - Wargaming Web
Максим Мельников - Wargaming WebМаксим Мельников - Wargaming Web
Максим Мельников - Wargaming Web
 
Сергей Яркин, Тензор — RabbitMQ. Насколько ценен мех и вкусно мясо?
Сергей Яркин, Тензор — RabbitMQ. Насколько ценен мех и вкусно мясо?Сергей Яркин, Тензор — RabbitMQ. Насколько ценен мех и вкусно мясо?
Сергей Яркин, Тензор — RabbitMQ. Насколько ценен мех и вкусно мясо?
 
Виртуалтрединг
ВиртуалтредингВиртуалтрединг
Виртуалтрединг
 
Максим Щепелин - Доставляя веб-контент в игру
Максим Щепелин - Доставляя веб-контент в игруМаксим Щепелин - Доставляя веб-контент в игру
Максим Щепелин - Доставляя веб-контент в игру
 
Nekki: Shadow Fight 2: architecture of the analytics system handling billion ...
Nekki: Shadow Fight 2: architecture of the analytics system handling billion ...Nekki: Shadow Fight 2: architecture of the analytics system handling billion ...
Nekki: Shadow Fight 2: architecture of the analytics system handling billion ...
 
Shadow Fight 2: архитектура системы аналитики для миллиарда событий
Shadow Fight 2: архитектура системы аналитики для миллиарда событийShadow Fight 2: архитектура системы аналитики для миллиарда событий
Shadow Fight 2: архитектура системы аналитики для миллиарда событий
 
Легко ли продавать контейнеры на базаре
Легко ли продавать контейнеры на базареЛегко ли продавать контейнеры на базаре
Легко ли продавать контейнеры на базаре
 
Современная операционная система: что надо знать разработчику / Александр Кри...
Современная операционная система: что надо знать разработчику / Александр Кри...Современная операционная система: что надо знать разработчику / Александр Кри...
Современная операционная система: что надо знать разработчику / Александр Кри...
 
Константин Трушкин. Использование платформы Эльбрус в информационно-защищённы...
Константин Трушкин. Использование платформы Эльбрус в информационно-защищённы...Константин Трушкин. Использование платформы Эльбрус в информационно-защищённы...
Константин Трушкин. Использование платформы Эльбрус в информационно-защищённы...
 
Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, Paral...
Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, Paral...Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, Paral...
Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, Paral...
 
16 процессоры и память эвм лекция
16 процессоры и память эвм лекция16 процессоры и память эвм лекция
16 процессоры и память эвм лекция
 
Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)
Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)
Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)
 
Presentation Amd Cpu
Presentation Amd CpuPresentation Amd Cpu
Presentation Amd Cpu
 
Облако в Badoo год спустя - работа над ошибками, Юрий Насретдинов (Badoo)
Облако в Badoo год спустя - работа над ошибками, Юрий Насретдинов (Badoo)Облако в Badoo год спустя - работа над ошибками, Юрий Насретдинов (Badoo)
Облако в Badoo год спустя - работа над ошибками, Юрий Насретдинов (Badoo)
 
Облако в Badoo год спустя - работа над ошибками, Юрий Насретдинов (Badoo)
Облако в Badoo год спустя - работа над ошибками, Юрий Насретдинов (Badoo)Облако в Badoo год спустя - работа над ошибками, Юрий Насретдинов (Badoo)
Облако в Badoo год спустя - работа над ошибками, Юрий Насретдинов (Badoo)
 
Облако в Badoo год спустя
Облако в Badoo год спустяОблако в Badoo год спустя
Облако в Badoo год спустя
 
Практика использования NoSQL в высоконагруженном проекте (Дмитрий Ананьев)
Практика использования NoSQL в высоконагруженном проекте (Дмитрий Ананьев)Практика использования NoSQL в высоконагруженном проекте (Дмитрий Ананьев)
Практика использования NoSQL в высоконагруженном проекте (Дмитрий Ананьев)
 
Efficiency vvv
Efficiency vvvEfficiency vvv
Efficiency vvv
 
TMPA-2013 Smirnov
TMPA-2013 SmirnovTMPA-2013 Smirnov
TMPA-2013 Smirnov
 
Многопользовательские браузерные игры нового типа
Многопользовательские браузерные игры нового типаМногопользовательские браузерные игры нового типа
Многопользовательские браузерные игры нового типа
 

World of Tanks: несколько идей из опыта разработки