SlideShare uma empresa Scribd logo
1 de 25
Baixar para ler 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: высокие нагрузки, Максим Мельников
СОДЕРЖАНИЕ
Вступление
Фрагменты архитектуры
Игровой cервер
Сетевой трафик
Метакластер
Веб
Обновление клиента
Заключение

World of Tanks: высокие нагрузки, Максим Мельников
АРХИТЕКТУРА WORLD OF TANKS

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

World of Tanks: высокие нагрузки, Максим Мельников
АРХИТЕКТУРА КЛАСТЕРА

Storage*

Nodes

Managers

MySQL

BaseApp

BaseAppMgr

MySQL*

CellApp

CellAppMgr

RabbitMQ

LoginApp

DbMgr

World of Tanks: высокие нагрузки, Максим Мельников
АРХИТЕКТУРА КЛАСТЕРА 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: высокие нагрузки, Максим Мельников
СЕТЕВОЙ ТРАФИК

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

World of Tanks: высокие нагрузки, Максим Мельников
НЕРАВНОМЕРНЫЙ ТРАФИК

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

World of Tanks: высокие нагрузки, Максим Мельников
ПРОБЛЕМЫ РОСТА

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

World of Tanks: высокие нагрузки, Максим Мельников
ПЕРЕЕЗДЕЦ

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

World of Tanks: высокие нагрузки, Максим Мельников
АРХИТЕКТУРА МЕТАКЛАСТЕРА

Центр

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

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

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

аккаунты (proxy)

аккаунты

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

бои

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

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

World of Tanks: высокие нагрузки, Максим Мельников
ВЕБ

регистрация

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

новости

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

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

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

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

статистика

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

рейтинги

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

...

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)

PostgreSQL

memcached

MongoDB

RabbitMQ

Redis

World of Tanks: высокие нагрузки, Максим Мельников
ОБНОВЛЕНИЕ КЛИЕНТА

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

World of Tanks: высокие нагрузки, Максим Мельников
CБОР СТАТИСТИКИ

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

2. tracker
3. CDN

World of Tanks: высокие нагрузки, Максим Мельников
РЕШЕНИЕ
наши torrent сервера — всегда в top-е
web seed-ы

World of Tanks: высокие нагрузки, Максим Мельников
ИДЕИ

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

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

Максим Мельников
mailto:m_melnikau@wargaming.net
https://plus.google.com/114669104565190507739/
https://twitter.com/max_posedon
http://wargaming.com

Mais conteúdo relacionado

Mais procurados

Тюним память и сетевой стек в Linux: история перевода высоконагруженных серве...
Тюним память и сетевой стек в Linux: история перевода высоконагруженных серве...Тюним память и сетевой стек в Linux: история перевода высоконагруженных серве...
Тюним память и сетевой стек в Linux: история перевода высоконагруженных серве...odnoklassniki.ru
 
MySQL/InnoDB изнутри: узкие места / Александр Крижановский (NatSys Lab)
MySQL/InnoDB изнутри: узкие места / Александр Крижановский (NatSys Lab)MySQL/InnoDB изнутри: узкие места / Александр Крижановский (NatSys Lab)
MySQL/InnoDB изнутри: узкие места / Александр Крижановский (NatSys Lab)Ontico
 
Aleksey Androsov
Aleksey AndrosovAleksey Androsov
Aleksey Androsovyaevents
 
Blockchain introduction
Blockchain introductionBlockchain introduction
Blockchain introductionDmitry Meshkov
 
Алексей Андросов "HTML5 в Я.Почте"
Алексей Андросов "HTML5 в Я.Почте"Алексей Андросов "HTML5 в Я.Почте"
Алексей Андросов "HTML5 в Я.Почте"Yandex
 
Highload Begun Pankov
Highload Begun PankovHighload Begun Pankov
Highload Begun PankovOntico
 
Франкенштейнизация Voldemort или key-value данные в Одноклассниках. Роман Ан...
Франкенштейнизация Voldemort или key-value данные в Одноклассниках. Роман Ан...Франкенштейнизация Voldemort или key-value данные в Одноклассниках. Роман Ан...
Франкенштейнизация Voldemort или key-value данные в Одноклассниках. Роман Ан...odnoklassniki.ru
 
Тюним память и сетевой стек в Linux: история перевода высоконагруженных сер...
Тюним память  и сетевой стек в Linux: история перевода высоконагруженных  сер...Тюним память  и сетевой стек в Linux: история перевода высоконагруженных  сер...
Тюним память и сетевой стек в Linux: история перевода высоконагруженных сер...Dmitry Samsonov
 
Платформа для видео сроком в квартал. Александр Тоболь.
Платформа для видео сроком в квартал. Александр Тоболь.Платформа для видео сроком в квартал. Александр Тоболь.
Платформа для видео сроком в квартал. Александр Тоболь.odnoklassniki.ru
 
Практика использования NoSQL в высоконагруженном проекте (Дмитрий Ананьев)
Практика использования NoSQL в высоконагруженном проекте (Дмитрий Ананьев)Практика использования NoSQL в высоконагруженном проекте (Дмитрий Ананьев)
Практика использования NoSQL в высоконагруженном проекте (Дмитрий Ананьев)Ontico
 
Кадры решают все, или стриминг видео в «Одноклассниках». Александр Тоболь
Кадры решают все, или стриминг видео в «Одноклассниках». Александр ТобольКадры решают все, или стриминг видео в «Одноклассниках». Александр Тоболь
Кадры решают все, или стриминг видео в «Одноклассниках». Александр Тобольodnoklassniki.ru
 
Хранение данных на виниле / Константин Осипов (tarantool.org)
Хранение данных на виниле / Константин Осипов (tarantool.org)Хранение данных на виниле / Константин Осипов (tarantool.org)
Хранение данных на виниле / Константин Осипов (tarantool.org)Ontico
 
Опыт внедрения и использования распределенной системы хранения данных на осно...
Опыт внедрения и использования распределенной системы хранения данных на осно...Опыт внедрения и использования распределенной системы хранения данных на осно...
Опыт внедрения и использования распределенной системы хранения данных на осно...tfmailru
 
Слава Машканов — “Wubuntu”: Построение гетерогенной среды Windows+Linux на н...
Слава Машканов — “Wubuntu”: Построение гетерогенной среды  Windows+Linux на н...Слава Машканов — “Wubuntu”: Построение гетерогенной среды  Windows+Linux на н...
Слава Машканов — “Wubuntu”: Построение гетерогенной среды Windows+Linux на н...Minsk Linux User Group
 
Разработка высокопроизводительных серверных приложений для Linux/Unix (Алекса...
Разработка высокопроизводительных серверных приложений для Linux/Unix (Алекса...Разработка высокопроизводительных серверных приложений для Linux/Unix (Алекса...
Разработка высокопроизводительных серверных приложений для Linux/Unix (Алекса...Ontico
 
Как мы в Почте@Mail.Ru выдерживаем высокие нагрузки
Как мы в Почте@Mail.Ru выдерживаем высокие нагрузкиКак мы в Почте@Mail.Ru выдерживаем высокие нагрузки
Как мы в Почте@Mail.Ru выдерживаем высокие нагрузкиtfmailru
 
DevConf-2015: Lightning Memory-Mapped Database (LMDB), ReOpen IT
DevConf-2015: Lightning Memory-Mapped Database (LMDB), ReOpen ITDevConf-2015: Lightning Memory-Mapped Database (LMDB), ReOpen IT
DevConf-2015: Lightning Memory-Mapped Database (LMDB), ReOpen ITLeonid Yuriev
 
DPDK в виртуальном коммутаторе Open vSwitch / Александр Джуринский (Selectel)
DPDK в виртуальном коммутаторе Open vSwitch / Александр Джуринский (Selectel)DPDK в виртуальном коммутаторе Open vSwitch / Александр Джуринский (Selectel)
DPDK в виртуальном коммутаторе Open vSwitch / Александр Джуринский (Selectel)Ontico
 

Mais procurados (19)

Тюним память и сетевой стек в Linux: история перевода высоконагруженных серве...
Тюним память и сетевой стек в Linux: история перевода высоконагруженных серве...Тюним память и сетевой стек в Linux: история перевода высоконагруженных серве...
Тюним память и сетевой стек в Linux: история перевода высоконагруженных серве...
 
MySQL/InnoDB изнутри: узкие места / Александр Крижановский (NatSys Lab)
MySQL/InnoDB изнутри: узкие места / Александр Крижановский (NatSys Lab)MySQL/InnoDB изнутри: узкие места / Александр Крижановский (NatSys Lab)
MySQL/InnoDB изнутри: узкие места / Александр Крижановский (NatSys Lab)
 
Aleksey Androsov
Aleksey AndrosovAleksey Androsov
Aleksey Androsov
 
Blockchain introduction
Blockchain introductionBlockchain introduction
Blockchain introduction
 
Алексей Андросов "HTML5 в Я.Почте"
Алексей Андросов "HTML5 в Я.Почте"Алексей Андросов "HTML5 в Я.Почте"
Алексей Андросов "HTML5 в Я.Почте"
 
Highload Begun Pankov
Highload Begun PankovHighload Begun Pankov
Highload Begun Pankov
 
Франкенштейнизация Voldemort или key-value данные в Одноклассниках. Роман Ан...
Франкенштейнизация Voldemort или key-value данные в Одноклассниках. Роман Ан...Франкенштейнизация Voldemort или key-value данные в Одноклассниках. Роман Ан...
Франкенштейнизация Voldemort или key-value данные в Одноклассниках. Роман Ан...
 
Тюним память и сетевой стек в Linux: история перевода высоконагруженных сер...
Тюним память  и сетевой стек в Linux: история перевода высоконагруженных  сер...Тюним память  и сетевой стек в Linux: история перевода высоконагруженных  сер...
Тюним память и сетевой стек в Linux: история перевода высоконагруженных сер...
 
Платформа для видео сроком в квартал. Александр Тоболь.
Платформа для видео сроком в квартал. Александр Тоболь.Платформа для видео сроком в квартал. Александр Тоболь.
Платформа для видео сроком в квартал. Александр Тоболь.
 
Практика использования NoSQL в высоконагруженном проекте (Дмитрий Ананьев)
Практика использования NoSQL в высоконагруженном проекте (Дмитрий Ананьев)Практика использования NoSQL в высоконагруженном проекте (Дмитрий Ананьев)
Практика использования NoSQL в высоконагруженном проекте (Дмитрий Ананьев)
 
Кадры решают все, или стриминг видео в «Одноклассниках». Александр Тоболь
Кадры решают все, или стриминг видео в «Одноклассниках». Александр ТобольКадры решают все, или стриминг видео в «Одноклассниках». Александр Тоболь
Кадры решают все, или стриминг видео в «Одноклассниках». Александр Тоболь
 
Хранение данных на виниле / Константин Осипов (tarantool.org)
Хранение данных на виниле / Константин Осипов (tarantool.org)Хранение данных на виниле / Константин Осипов (tarantool.org)
Хранение данных на виниле / Константин Осипов (tarantool.org)
 
Опыт внедрения и использования распределенной системы хранения данных на осно...
Опыт внедрения и использования распределенной системы хранения данных на осно...Опыт внедрения и использования распределенной системы хранения данных на осно...
Опыт внедрения и использования распределенной системы хранения данных на осно...
 
Multithreading in go
Multithreading in goMultithreading in go
Multithreading in go
 
Слава Машканов — “Wubuntu”: Построение гетерогенной среды Windows+Linux на н...
Слава Машканов — “Wubuntu”: Построение гетерогенной среды  Windows+Linux на н...Слава Машканов — “Wubuntu”: Построение гетерогенной среды  Windows+Linux на н...
Слава Машканов — “Wubuntu”: Построение гетерогенной среды Windows+Linux на н...
 
Разработка высокопроизводительных серверных приложений для Linux/Unix (Алекса...
Разработка высокопроизводительных серверных приложений для Linux/Unix (Алекса...Разработка высокопроизводительных серверных приложений для Linux/Unix (Алекса...
Разработка высокопроизводительных серверных приложений для Linux/Unix (Алекса...
 
Как мы в Почте@Mail.Ru выдерживаем высокие нагрузки
Как мы в Почте@Mail.Ru выдерживаем высокие нагрузкиКак мы в Почте@Mail.Ru выдерживаем высокие нагрузки
Как мы в Почте@Mail.Ru выдерживаем высокие нагрузки
 
DevConf-2015: Lightning Memory-Mapped Database (LMDB), ReOpen IT
DevConf-2015: Lightning Memory-Mapped Database (LMDB), ReOpen ITDevConf-2015: Lightning Memory-Mapped Database (LMDB), ReOpen IT
DevConf-2015: Lightning Memory-Mapped Database (LMDB), ReOpen IT
 
DPDK в виртуальном коммутаторе Open vSwitch / Александр Джуринский (Selectel)
DPDK в виртуальном коммутаторе Open vSwitch / Александр Джуринский (Selectel)DPDK в виртуальном коммутаторе Open vSwitch / Александр Джуринский (Selectel)
DPDK в виртуальном коммутаторе Open vSwitch / Александр Джуринский (Selectel)
 

Destaque

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
 
Корпоративная презентация в Beamer
Корпоративная презентация в BeamerКорпоративная презентация в Beamer
Корпоративная презентация в BeamerMaksim Melnikau
 
Python meetup, Minsk, November
Python meetup, Minsk, NovemberPython meetup, Minsk, November
Python meetup, Minsk, NovemberMaksim Melnikau
 
Python meetup, Minsk, August
Python meetup, Minsk, AugustPython meetup, Minsk, August
Python meetup, Minsk, AugustMaksim 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
 

Destaque (13)

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 на коленках
 
Корпоративная презентация в Beamer
Корпоративная презентация в BeamerКорпоративная презентация в Beamer
Корпоративная презентация в Beamer
 
LinuxCon Europe 2013
LinuxCon Europe 2013LinuxCon Europe 2013
LinuxCon Europe 2013
 
FOSDEM 2014
FOSDEM 2014FOSDEM 2014
FOSDEM 2014
 
Ubuntu touch-install
Ubuntu touch-installUbuntu touch-install
Ubuntu touch-install
 
Python meetup, Minsk, November
Python meetup, Minsk, NovemberPython meetup, Minsk, November
Python meetup, Minsk, November
 
Python meetup, Minsk, August
Python meetup, Minsk, AugustPython meetup, Minsk, August
Python meetup, Minsk, August
 
FOSDEM 2014 Overview
FOSDEM 2014 OverviewFOSDEM 2014 Overview
FOSDEM 2014 Overview
 
Telepathy Skykit
Telepathy SkykitTelepathy Skykit
Telepathy Skykit
 
Wayland state in Gentoo
Wayland state in GentooWayland state in Gentoo
Wayland state in Gentoo
 
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
 

Semelhante a World of tanks: высокие нагрузки

Сергей Яркин, Тензор — RabbitMQ. Насколько ценен мех и вкусно мясо?
Сергей Яркин, Тензор — RabbitMQ. Насколько ценен мех и вкусно мясо?Сергей Яркин, Тензор — RabbitMQ. Насколько ценен мех и вкусно мясо?
Сергей Яркин, Тензор — RabbitMQ. Насколько ценен мех и вкусно мясо?Dev_Party
 
Максим Мельников - Wargaming Web
Максим Мельников - Wargaming WebМаксим Мельников - Wargaming Web
Максим Мельников - Wargaming WebIT Share
 
Надежность World of Tanks Server
Надежность World of Tanks ServerНадежность World of Tanks Server
Надежность World of Tanks ServerLevon Avakyan
 
Виртуалтрединг
ВиртуалтредингВиртуалтрединг
ВиртуалтредингCEE-SEC(R)
 
Максим Щепелин - Доставляя веб-контент в игру
Максим Щепелин - Доставляя веб-контент в игруМаксим Щепелин - Доставляя веб-контент в игру
Максим Щепелин - Доставляя веб-контент в игруFDConf
 
Истории из жизни. Как взламывают сети крупных организаций.
Истории из жизни. Как взламывают сети крупных организаций.Истории из жизни. Как взламывают сети крупных организаций.
Истории из жизни. Как взламывают сети крупных организаций.Dmitry Evteev
 
Константин Трушкин. Использование платформы Эльбрус в информационно-защищённы...
Константин Трушкин. Использование платформы Эльбрус в информационно-защищённы...Константин Трушкин. Использование платформы Эльбрус в информационно-защищённы...
Константин Трушкин. Использование платформы Эльбрус в информационно-защищённы...Kaspersky
 
Object-oriented Network Function Virtualization / Антоненко Виталий (ЦПИКС)
Object-oriented Network Function Virtualization / Антоненко Виталий (ЦПИКС)Object-oriented Network Function Virtualization / Антоненко Виталий (ЦПИКС)
Object-oriented Network Function Virtualization / Антоненко Виталий (ЦПИКС)Ontico
 
Презентация технологии веб-кластеров
Презентация технологии веб-кластеров  Презентация технологии веб-кластеров
Презентация технологии веб-кластеров 1С-Битрикс
 

Semelhante a World of tanks: высокие нагрузки (12)

Сергей Яркин, Тензор — RabbitMQ. Насколько ценен мех и вкусно мясо?
Сергей Яркин, Тензор — RabbitMQ. Насколько ценен мех и вкусно мясо?Сергей Яркин, Тензор — RabbitMQ. Насколько ценен мех и вкусно мясо?
Сергей Яркин, Тензор — RabbitMQ. Насколько ценен мех и вкусно мясо?
 
Максим Мельников - Wargaming Web
Максим Мельников - Wargaming WebМаксим Мельников - Wargaming Web
Максим Мельников - Wargaming Web
 
Надежность World of Tanks Server
Надежность World of Tanks ServerНадежность World of Tanks Server
Надежность World of Tanks Server
 
Виртуалтрединг
ВиртуалтредингВиртуалтрединг
Виртуалтрединг
 
Максим Щепелин - Доставляя веб-контент в игру
Максим Щепелин - Доставляя веб-контент в игруМаксим Щепелин - Доставляя веб-контент в игру
Максим Щепелин - Доставляя веб-контент в игру
 
Веб-кластер
Веб-кластерВеб-кластер
Веб-кластер
 
Истории из жизни. Как взламывают сети крупных организаций.
Истории из жизни. Как взламывают сети крупных организаций.Истории из жизни. Как взламывают сети крупных организаций.
Истории из жизни. Как взламывают сети крупных организаций.
 
Efficiency vvv
Efficiency vvvEfficiency vvv
Efficiency vvv
 
Myaso
MyasoMyaso
Myaso
 
Константин Трушкин. Использование платформы Эльбрус в информационно-защищённы...
Константин Трушкин. Использование платформы Эльбрус в информационно-защищённы...Константин Трушкин. Использование платформы Эльбрус в информационно-защищённы...
Константин Трушкин. Использование платформы Эльбрус в информационно-защищённы...
 
Object-oriented Network Function Virtualization / Антоненко Виталий (ЦПИКС)
Object-oriented Network Function Virtualization / Антоненко Виталий (ЦПИКС)Object-oriented Network Function Virtualization / Антоненко Виталий (ЦПИКС)
Object-oriented Network Function Virtualization / Антоненко Виталий (ЦПИКС)
 
Презентация технологии веб-кластеров
Презентация технологии веб-кластеров  Презентация технологии веб-кластеров
Презентация технологии веб-кластеров
 

World of tanks: высокие нагрузки