SlideShare a Scribd company logo
1 of 11
SQUADDER	
  
Сервис	
  поиска	
  взвода	
  для	
  World	
  of	
  Tanks	
  
Техническая	
  презентация	
  
Основная	
  идея	
  
Главной	
  задумкой	
  сервиса	
  является	
  поиск	
  игроков,	
  наиболее	
  подходящих	
  друг	
  
другу	
  по	
  стилю	
  игры.	
  Работа	
  сервиса	
  строится	
  на	
  анализе	
  статистистических	
  
данных,	
  накопленных	
  по	
  каждому	
  игроку	
  за	
  все	
  время	
  игры	
  в	
  World	
  of	
  Tanks.	
  
	
  
Целью	
  сервиса	
  является	
  улучшение	
  качества	
  игры	
  пользователей.	
  Немаловажным	
  
моментом	
  является	
  социализация	
  игроков,	
  что	
  выливается	
  в	
  увеличение	
  
вовлеченности	
  в	
  игру.	
  
Squadder	
  team,	
  2014	
  
Кластер	
  	
  
базы	
  данных	
  
Схема	
  работы	
  
Squadder	
  team,	
  2014	
  
Хранилище	
  данных	
  
Wargaming	
  
Получение	
  данных	
  
обо	
  всех	
  игроках	
  
Расчет	
  рейтинга,	
  
шардинг	
  
Кластеризация	
  данных	
  
Обсчет	
  кластера	
  
рекомендательными	
  
алгоритмами	
  
Пост-­‐фильтрация	
  
Выдача	
  
данных	
  
клиенту	
  
Хранилище	
  данных	
  Wargaming	
  
В	
  данный	
  момент	
  источником	
  данных	
  считается	
  Wargaming	
  Public	
  API.	
  WG-­‐PAPI	
  
дает	
  достаточно	
  информации	
  для	
  реализации	
  точного	
  поиска.	
  Однако	
  некоторые	
  
данные,	
  которые	
  были	
  бы	
  крайне	
  полезны	
  для	
  уточнения	
  работы	
  сервиса,	
  через	
  
WG-­‐PAPI	
  не	
  предоставляются:	
  
	
  -­‐	
  Время	
  активности	
  игрока	
  за	
  последние	
  несколько	
  недель.	
  Крайне	
  полезная	
  
характеристика	
  игрока,	
  позволяющая	
  вычислить	
  его	
  прайм-­‐тайм.	
  Дает	
  
возможность	
  подобрать	
  игроков,	
  совпадающих	
  с	
  субъектом	
  по	
  времени	
  активности	
  
в	
  игре.	
  
	
  -­‐	
  Данные	
  о	
  точном	
  составе	
  ангара	
  игрока.	
  Позволяет	
  исключить	
  из	
  фокуса	
  
ненужные	
  машины	
  и	
  дает	
  возможность	
  подобрать	
  наиболее	
  подходящих	
  
совзводных.	
  
	
  -­‐	
  Данные	
  о	
  премиум-­‐аккаунте,	
  предпочтительном	
  сервере	
  для	
  игры,	
  возрасте	
  
(если	
  такая	
  информация	
  имеется)	
  и	
  прочие	
  данные,	
  чувствительные	
  к	
  
разглашению.	
  Позволяют	
  незначительно	
  увеличить	
  точность	
  работы	
  сервиса.	
  
Squadder	
  team,	
  2014	
  
Расчет	
  рейтинга	
  и	
  шардинг	
  
Шардинг	
  –	
  это	
  процесс	
  разделения	
  игроков	
  на	
  равные	
  по	
  количеству	
  группы	
  по	
  
определенной	
  характеристике.	
  Сервис	
  осуществляет	
  шардинг	
  по	
  рейтингу	
  игрока.	
  
Так	
  как	
  в	
  случае	
  с	
  рейтингом	
  распределение	
  является	
  нормальным,	
  сервисом	
  
осуществляется	
  регулярный	
  решардинг	
  базы	
  со	
  сдвигами	
  границ	
  шардов	
  для	
  
поддержания	
  примерно	
  одинакового	
  количества	
  игроков	
  в	
  шардах.	
  Количество	
  
шардов	
  –	
  100.	
  
	
  
Существует	
  довольно	
  много	
  различных	
  формул	
  рейтингов	
  игрока.	
  В	
  данный	
  
момент	
  предполагается	
  использование	
  формул	
  семейства	
  WN	
  как	
  относительно	
  
простых	
  в	
  расчетах.	
  Формула	
  рейтинга	
  Wargaming	
  довольно	
  сложна	
  с	
  
математической	
  точки	
  зрения,	
  однако	
  если	
  источник	
  данных	
  будет	
  позволять	
  
получить	
  итоговое	
  значение	
  рейтинга	
  с	
  большей	
  точностью	
  (без	
  округления),	
  
использование	
  рейтинга	
  Wargaming	
  ничем	
  не	
  будет	
  отличаться	
  от	
  любой	
  другой	
  
формулы.	
  
Squadder	
  team,	
  2014	
  
Кластер	
  базы	
  данных	
  
В	
  качестве	
  основного	
  хранилища	
  данных	
  предполагается	
  использовать	
  Riak1.	
  Для	
  
работы	
  сервиса	
  не	
  требуются	
  в	
  точечные	
  выборки	
  по	
  индексам	
  или	
  
транзакционность	
  хранилища,	
  что	
  располагало	
  бы	
  к	
  использованию	
  реляционных	
  
баз.	
  Между	
  тем,	
  riak	
  располагает	
  определенными	
  преимуществами:	
  
	
  -­‐	
  Доступность.	
  Riak	
  работает	
  в	
  masterless-­‐кластере,	
  что	
  позволяет	
  использовать	
  
любой	
  из	
  серверов	
  кластера	
  в	
  качестве	
  мастера	
  запроса.	
  	
  
	
  -­‐	
  Отказоустойчивость.	
  При	
  выходе	
  из	
  строя	
  одного	
  из	
  серверов	
  кластера	
  
происходит	
  автоматическая	
  перебалансировка	
  данных	
  внутри	
  кластера.	
  
	
  -­‐	
  Масштабируемость.	
  Так	
  же,	
  как	
  и	
  при	
  удалении	
  сервера,	
  при	
  его	
  добавлении	
  в	
  
кластер	
  происходит	
  автоматическая	
  перебалансировка	
  данных	
  без	
  остановки	
  
обслуживания.	
  
	
  
	
  
1	
  h|p://basho.com/riak/	
  	
  
Squadder	
  team,	
  2014	
  
Кластеризация	
  данных	
  
Кластеризация	
  данных	
  внутри	
  шарда	
  –	
  важнейший	
  процесс	
  в	
  схеме	
  работы	
  
сервиса,	
  а	
  выбор	
  критериев	
  кластеризации	
  –	
  самый	
  простой	
  и	
  эффективный	
  способ	
  
изменить	
  характеристики	
  распределения	
  игроков	
  по	
  кластерам.	
  	
  
	
  
Для	
  кластеризации	
  данных	
  каждый	
  игрок	
  представляется	
  вектором	
  целевых	
  
характеристик.	
  Характеристики	
  нормализуются	
  для	
  упрощения	
  расчетов,	
  
сглаживания	
  артефактных	
  значений	
  и	
  учета	
  весовых	
  коэффициентов.	
  Затем	
  с	
  
использованием	
  одного	
  из	
  быстрых	
  алгоритмов	
  кластеризации	
  (предполагается	
  k-­‐
means	
  по	
  евклидовому	
  расстоянию)	
  данные	
  разбиваются	
  на	
  сотню	
  групп	
  с	
  
равномерным	
  распределением	
  количества	
  игроков.	
  В	
  дальнейшем	
  поиск	
  
осуществляется	
  только	
  в	
  рамках	
  кластера	
  игрока.	
  
Squadder	
  team,	
  2014	
  
Поиск	
  
Процесс	
  поиска	
  игроков	
  осуществляется	
  с	
  использованием	
  рекомендательных	
  
алгоритмов.	
  Подобные	
  алгоритмы	
  используются	
  для	
  предугадывания	
  
предпочтений	
  пользователя	
  в	
  интернет-­‐магазинах	
  или	
  определения	
  наиболее	
  
подходящего	
  партнера	
  на	
  сайтах	
  знакомств.	
  Выбор	
  критериев	
  для	
  работы	
  
алгоритма	
  также	
  является	
  одним	
  из	
  самых	
  эффективных	
  способов	
  изменения	
  и	
  
уточнения	
  результатов	
  поиска.	
  
	
  
Процесс	
  поиска	
  инициируется	
  конкретным	
  игроком.	
  Сервис	
  загружает	
  в	
  память	
  
данные	
  кластера	
  пользователя	
  и	
  производит	
  анализ	
  данных	
  кластера,	
  выделяя	
  
высокими	
  весовыми	
  коэффициентами	
  характеристики,	
  имеющие	
  высокую	
  
энтропийную	
  характеристику,	
  и	
  наоборот.	
  Это	
  позволяет	
  учесть	
  особенности	
  
конкретного	
  кластера	
  и	
  увеличить	
  точность	
  поиска.	
  Результатом	
  работы	
  поиска	
  
является	
  ранжированный	
  список	
  игроков	
  кластера.	
  
Squadder	
  team,	
  2014	
  
Пост-­‐фильтрация	
  
На	
  этапе	
  пост-­‐фильтрации	
  обрабатываются	
  такие	
  вещи,	
  как:	
  
	
  -­‐	
  Статус	
  игрока	
  (онлайн/оффлайн/ищу	
  взвод/etc.);	
  
	
  -­‐	
  Запрет	
  на	
  участие	
  в	
  поиске	
  в	
  качестве	
  объекта;	
  
	
  -­‐	
  Определенные	
  предпочтения	
  по	
  используемым	
  средствам	
  связи	
  (ингейм-­‐VoIP,	
  
teamspeak,	
  skype,	
  etc.);	
  
	
  -­‐	
  Матчинг	
  по	
  прайм-­‐тайму	
  игрока;	
  
	
  -­‐	
  Матчинг	
  по	
  предпочтительной	
  технике;	
  
	
  -­‐	
  Лимитирование	
  выдачи.	
  
	
  
В	
  общем	
  случае	
  на	
  этапе	
  пост-­‐фильтрации	
  обрабатываются	
  некоторые	
  флаги,	
  
реакция	
  на	
  которые	
  должна	
  быть	
  незамедлительной.	
  Результатом	
  работы	
  этого	
  
процесса	
  является	
  готовая	
  поисковая	
  выдача.	
  
Squadder	
  team,	
  2014	
  
Реализация	
  
Весь	
  сервис	
  делится	
  на	
  несколько	
  более	
  мелких	
  сервисов,	
  каждый	
  из	
  которых	
  отвечает	
  
за	
  свою	
  часть	
  работы.	
  Следует	
  выделить	
  следующие	
  приложения:	
  
	
  -­‐	
  Hydra:	
  шлюз	
  к	
  источнику	
  данных.	
  Сглаживает	
  нагрузку	
  на	
  сервисы	
  Wargaming,	
  а	
  также	
  
работает	
  с	
  приоритетами	
  запросов	
  и	
  их	
  очередностью.	
  
	
  -­‐	
  Charon:	
  обработчик	
  сырых	
  данных.	
  Готовит	
  данные	
  к	
  записи	
  в	
  базу,	
  рассчитывает	
  
рейтинг	
  игроков,	
  работает	
  с	
  шардингом.	
  
	
  -­‐	
  Styx-­‐N:	
  серверы	
  базы	
  данных.	
  Хранит	
  данные	
  и	
  частично	
  их	
  обрабатывает	
  (map/
reduce).	
  
	
  -­‐	
  Sisyphus:	
  обработчик	
  подготовленных	
  Charon	
  данных.	
  Занимается	
  кластеризацией	
  
данных.	
  
	
  -­‐	
  Hades-­‐N:	
  фронтенд.	
  Обрабатывает	
  запросы	
  пользователей,	
  работает	
  с	
  
рекомендационными	
  алгоритмами.	
  
	
  
Все	
  микросервисы	
  пишутся	
  на	
  erlang	
  как	
  на	
  платформе,	
  наиболее	
  подходящей	
  для	
  
решения	
  задачи.	
  Erlang/OTP	
  также	
  хорошо	
  знаком	
  команде	
  разработчиков.	
  
Squadder	
  team,	
  2014	
  
Команда	
  Squadder	
  
Денис	
  Фахртдинов,	
  ведущий	
  разработчик.	
  	
  
	
  Анализ	
  задач,	
  проектирование	
  и	
  программирование	
  сервисов,	
  руководство	
  разработкой.	
  
	
  d_fakhrtdinov@wargaming.net	
  	
  
	
  
Алексей	
  Соколов,	
  младший	
  разработчик.	
  	
  
	
  Программирование	
  сервисов.	
  
	
  sokolov@1.21gigawa|s.net	
  
	
  
Владимир	
  Коваль,	
  инженер	
  бэкенда.	
  	
  
	
  Подготовка	
  релизов,	
  разработка	
  схем	
  деплоймента	
  и	
  поддержки	
  работы	
  сервисов.	
  
	
  vladimir.v.koval@gmail.com	
  

More Related Content

Viewers also liked (18)

Preus llicències 2013
Preus llicències  2013Preus llicències  2013
Preus llicències 2013
 
Confirmaciones 2015
Confirmaciones 2015Confirmaciones 2015
Confirmaciones 2015
 
Aula dr. luciano miguel
Aula dr. luciano miguelAula dr. luciano miguel
Aula dr. luciano miguel
 
Aula 05 04-14 - dra. lúcia paoliello
Aula 05 04-14 - dra. lúcia paolielloAula 05 04-14 - dra. lúcia paoliello
Aula 05 04-14 - dra. lúcia paoliello
 
Roxanne Certified Matric Certificate
Roxanne Certified Matric CertificateRoxanne Certified Matric Certificate
Roxanne Certified Matric Certificate
 
Ayoun Moussa Kraftwerk Praktikumszeugnis
Ayoun Moussa Kraftwerk PraktikumszeugnisAyoun Moussa Kraftwerk Praktikumszeugnis
Ayoun Moussa Kraftwerk Praktikumszeugnis
 
La web 2.0
La web 2.0La web 2.0
La web 2.0
 
AEO_Palestra_OAB_2015_LM
AEO_Palestra_OAB_2015_LMAEO_Palestra_OAB_2015_LM
AEO_Palestra_OAB_2015_LM
 
Vista Ladder
Vista LadderVista Ladder
Vista Ladder
 
Portfólio note e sul confecções
Portfólio note e sul confecçõesPortfólio note e sul confecções
Portfólio note e sul confecções
 
Documento 10
Documento 10Documento 10
Documento 10
 
New text document (3)
New text document (3)New text document (3)
New text document (3)
 
Sushi rechavia dessert menu english1
Sushi rechavia dessert menu english1Sushi rechavia dessert menu english1
Sushi rechavia dessert menu english1
 
Lei 2111 pddu-Plano Diretor de Itabuna
Lei 2111   pddu-Plano Diretor de ItabunaLei 2111   pddu-Plano Diretor de Itabuna
Lei 2111 pddu-Plano Diretor de Itabuna
 
Cuestionario alumnado
Cuestionario alumnadoCuestionario alumnado
Cuestionario alumnado
 
¿Qué es New Media?
¿Qué es New Media?¿Qué es New Media?
¿Qué es New Media?
 
交點高雄Vol.16 - Adun - 文化創意產業品牌行銷
交點高雄Vol.16 - Adun - 文化創意產業品牌行銷交點高雄Vol.16 - Adun - 文化創意產業品牌行銷
交點高雄Vol.16 - Adun - 文化創意產業品牌行銷
 
Modulo 1
Modulo 1Modulo 1
Modulo 1
 

Similar to Squadder

Zherdev icinga 20120423
Zherdev icinga 20120423Zherdev icinga 20120423
Zherdev icinga 20120423
kuchinskaya
 
Борис Каплуновский, Aviasales.ru
Борис Каплуновский, Aviasales.ruБорис Каплуновский, Aviasales.ru
Борис Каплуновский, Aviasales.ru
Ontico
 
Кулинарный мастер-класс "Готовим безопасный офис нового поколения на основе C...
Кулинарный мастер-класс "Готовим безопасный офис нового поколения на основе C...Кулинарный мастер-класс "Готовим безопасный офис нового поколения на основе C...
Кулинарный мастер-класс "Готовим безопасный офис нового поколения на основе C...
Cisco Russia
 
Мотивация 2.0. Лайки, Бейджи и другие игровые механики на службе бизнеса #clo...
Мотивация 2.0. Лайки, Бейджи и другие игровые механики на службе бизнеса #clo...Мотивация 2.0. Лайки, Бейджи и другие игровые механики на службе бизнеса #clo...
Мотивация 2.0. Лайки, Бейджи и другие игровые механики на службе бизнеса #clo...
Pryaniky.com
 
16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Оптимиза...
16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Оптимиза...16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Оптимиза...
16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Оптимиза...
IT-Portfolio
 

Similar to Squadder (20)

CleverDATA_Oracle Cloud BI Day 2015
CleverDATA_Oracle Cloud BI Day 2015CleverDATA_Oracle Cloud BI Day 2015
CleverDATA_Oracle Cloud BI Day 2015
 
DMP for Publishers
DMP for PublishersDMP for Publishers
DMP for Publishers
 
ObjectManager, или как работать с большим количеством объектов на карте, Мари...
ObjectManager, или как работать с большим количеством объектов на карте, Мари...ObjectManager, или как работать с большим количеством объектов на карте, Мари...
ObjectManager, или как работать с большим количеством объектов на карте, Мари...
 
Pryaniky.com - Мотивация 2.0. Лайки, Бейджи и другие игровые механики на служ...
Pryaniky.com - Мотивация 2.0. Лайки, Бейджи и другие игровые механики на служ...Pryaniky.com - Мотивация 2.0. Лайки, Бейджи и другие игровые механики на служ...
Pryaniky.com - Мотивация 2.0. Лайки, Бейджи и другие игровые механики на служ...
 
Zherdev icinga 20120423
Zherdev icinga 20120423Zherdev icinga 20120423
Zherdev icinga 20120423
 
AmberData: Dmp for clients
AmberData: Dmp for clientsAmberData: Dmp for clients
AmberData: Dmp for clients
 
Мониторинг веб приложений на PHP в режиме реального времени с помощью Pinba. ...
Мониторинг веб приложений на PHP в режиме реального времени с помощью Pinba. ...Мониторинг веб приложений на PHP в режиме реального времени с помощью Pinba. ...
Мониторинг веб приложений на PHP в режиме реального времени с помощью Pinba. ...
 
Особенности анализа в проектах по разработке сервисов
Особенности анализа в проектах по разработке сервисовОсобенности анализа в проектах по разработке сервисов
Особенности анализа в проектах по разработке сервисов
 
Graal, Truffle, SubstrateVM and other perks: what are those and why do you ne...
Graal, Truffle, SubstrateVM and other perks: what are those and why do you ne...Graal, Truffle, SubstrateVM and other perks: what are those and why do you ne...
Graal, Truffle, SubstrateVM and other perks: what are those and why do you ne...
 
Борис Каплуновский, Aviasales.ru
Борис Каплуновский, Aviasales.ruБорис Каплуновский, Aviasales.ru
Борис Каплуновский, Aviasales.ru
 
Кулинарный мастер-класс "Готовим безопасный офис нового поколения на основе C...
Кулинарный мастер-класс "Готовим безопасный офис нового поколения на основе C...Кулинарный мастер-класс "Готовим безопасный офис нового поколения на основе C...
Кулинарный мастер-класс "Готовим безопасный офис нового поколения на основе C...
 
Как пережить запуск онлайн-игры и справиться с мертвыми душами / Андрей Трифа...
Как пережить запуск онлайн-игры и справиться с мертвыми душами / Андрей Трифа...Как пережить запуск онлайн-игры и справиться с мертвыми душами / Андрей Трифа...
Как пережить запуск онлайн-игры и справиться с мертвыми душами / Андрей Трифа...
 
Мотивация 2.0. Лайки, Бейджи и другие игровые механики на службе бизнеса #clo...
Мотивация 2.0. Лайки, Бейджи и другие игровые механики на службе бизнеса #clo...Мотивация 2.0. Лайки, Бейджи и другие игровые механики на службе бизнеса #clo...
Мотивация 2.0. Лайки, Бейджи и другие игровые механики на службе бизнеса #clo...
 
Как создать дата-платформу с нуля / Павел Тарасов (ЦИАН)
Как создать дата-платформу с нуля / Павел Тарасов (ЦИАН)Как создать дата-платформу с нуля / Павел Тарасов (ЦИАН)
Как создать дата-платформу с нуля / Павел Тарасов (ЦИАН)
 
16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Оптимиза...
16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Оптимиза...16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Оптимиза...
16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Оптимиза...
 
Принцип достаточности
Принцип достаточностиПринцип достаточности
Принцип достаточности
 
Клуб Юных Программатиков. Лекция 4. Дмитрий Максаков
Клуб Юных Программатиков. Лекция 4. Дмитрий МаксаковКлуб Юных Программатиков. Лекция 4. Дмитрий Максаков
Клуб Юных Программатиков. Лекция 4. Дмитрий Максаков
 
Урок: "Семантическое ядро" для Webpromoexperts
Урок: "Семантическое ядро" для Webpromoexperts Урок: "Семантическое ядро" для Webpromoexperts
Урок: "Семантическое ядро" для Webpromoexperts
 
Clever data datascienceweek_spark_vs_hadoop_in_online_audience_segmentation
Clever data datascienceweek_spark_vs_hadoop_in_online_audience_segmentationClever data datascienceweek_spark_vs_hadoop_in_online_audience_segmentation
Clever data datascienceweek_spark_vs_hadoop_in_online_audience_segmentation
 
Как жить в облаке почти без админов: мониторинг и эксплуатация сотен виртуаль...
Как жить в облаке почти без админов: мониторинг и эксплуатация сотен виртуаль...Как жить в облаке почти без админов: мониторинг и эксплуатация сотен виртуаль...
Как жить в облаке почти без админов: мониторинг и эксплуатация сотен виртуаль...
 

Squadder

  • 1. SQUADDER   Сервис  поиска  взвода  для  World  of  Tanks   Техническая  презентация  
  • 2. Основная  идея   Главной  задумкой  сервиса  является  поиск  игроков,  наиболее  подходящих  друг   другу  по  стилю  игры.  Работа  сервиса  строится  на  анализе  статистистических   данных,  накопленных  по  каждому  игроку  за  все  время  игры  в  World  of  Tanks.     Целью  сервиса  является  улучшение  качества  игры  пользователей.  Немаловажным   моментом  является  социализация  игроков,  что  выливается  в  увеличение   вовлеченности  в  игру.   Squadder  team,  2014  
  • 3. Кластер     базы  данных   Схема  работы   Squadder  team,  2014   Хранилище  данных   Wargaming   Получение  данных   обо  всех  игроках   Расчет  рейтинга,   шардинг   Кластеризация  данных   Обсчет  кластера   рекомендательными   алгоритмами   Пост-­‐фильтрация   Выдача   данных   клиенту  
  • 4. Хранилище  данных  Wargaming   В  данный  момент  источником  данных  считается  Wargaming  Public  API.  WG-­‐PAPI   дает  достаточно  информации  для  реализации  точного  поиска.  Однако  некоторые   данные,  которые  были  бы  крайне  полезны  для  уточнения  работы  сервиса,  через   WG-­‐PAPI  не  предоставляются:    -­‐  Время  активности  игрока  за  последние  несколько  недель.  Крайне  полезная   характеристика  игрока,  позволяющая  вычислить  его  прайм-­‐тайм.  Дает   возможность  подобрать  игроков,  совпадающих  с  субъектом  по  времени  активности   в  игре.    -­‐  Данные  о  точном  составе  ангара  игрока.  Позволяет  исключить  из  фокуса   ненужные  машины  и  дает  возможность  подобрать  наиболее  подходящих   совзводных.    -­‐  Данные  о  премиум-­‐аккаунте,  предпочтительном  сервере  для  игры,  возрасте   (если  такая  информация  имеется)  и  прочие  данные,  чувствительные  к   разглашению.  Позволяют  незначительно  увеличить  точность  работы  сервиса.   Squadder  team,  2014  
  • 5. Расчет  рейтинга  и  шардинг   Шардинг  –  это  процесс  разделения  игроков  на  равные  по  количеству  группы  по   определенной  характеристике.  Сервис  осуществляет  шардинг  по  рейтингу  игрока.   Так  как  в  случае  с  рейтингом  распределение  является  нормальным,  сервисом   осуществляется  регулярный  решардинг  базы  со  сдвигами  границ  шардов  для   поддержания  примерно  одинакового  количества  игроков  в  шардах.  Количество   шардов  –  100.     Существует  довольно  много  различных  формул  рейтингов  игрока.  В  данный   момент  предполагается  использование  формул  семейства  WN  как  относительно   простых  в  расчетах.  Формула  рейтинга  Wargaming  довольно  сложна  с   математической  точки  зрения,  однако  если  источник  данных  будет  позволять   получить  итоговое  значение  рейтинга  с  большей  точностью  (без  округления),   использование  рейтинга  Wargaming  ничем  не  будет  отличаться  от  любой  другой   формулы.   Squadder  team,  2014  
  • 6. Кластер  базы  данных   В  качестве  основного  хранилища  данных  предполагается  использовать  Riak1.  Для   работы  сервиса  не  требуются  в  точечные  выборки  по  индексам  или   транзакционность  хранилища,  что  располагало  бы  к  использованию  реляционных   баз.  Между  тем,  riak  располагает  определенными  преимуществами:    -­‐  Доступность.  Riak  работает  в  masterless-­‐кластере,  что  позволяет  использовать   любой  из  серверов  кластера  в  качестве  мастера  запроса.      -­‐  Отказоустойчивость.  При  выходе  из  строя  одного  из  серверов  кластера   происходит  автоматическая  перебалансировка  данных  внутри  кластера.    -­‐  Масштабируемость.  Так  же,  как  и  при  удалении  сервера,  при  его  добавлении  в   кластер  происходит  автоматическая  перебалансировка  данных  без  остановки   обслуживания.       1  h|p://basho.com/riak/     Squadder  team,  2014  
  • 7. Кластеризация  данных   Кластеризация  данных  внутри  шарда  –  важнейший  процесс  в  схеме  работы   сервиса,  а  выбор  критериев  кластеризации  –  самый  простой  и  эффективный  способ   изменить  характеристики  распределения  игроков  по  кластерам.       Для  кластеризации  данных  каждый  игрок  представляется  вектором  целевых   характеристик.  Характеристики  нормализуются  для  упрощения  расчетов,   сглаживания  артефактных  значений  и  учета  весовых  коэффициентов.  Затем  с   использованием  одного  из  быстрых  алгоритмов  кластеризации  (предполагается  k-­‐ means  по  евклидовому  расстоянию)  данные  разбиваются  на  сотню  групп  с   равномерным  распределением  количества  игроков.  В  дальнейшем  поиск   осуществляется  только  в  рамках  кластера  игрока.   Squadder  team,  2014  
  • 8. Поиск   Процесс  поиска  игроков  осуществляется  с  использованием  рекомендательных   алгоритмов.  Подобные  алгоритмы  используются  для  предугадывания   предпочтений  пользователя  в  интернет-­‐магазинах  или  определения  наиболее   подходящего  партнера  на  сайтах  знакомств.  Выбор  критериев  для  работы   алгоритма  также  является  одним  из  самых  эффективных  способов  изменения  и   уточнения  результатов  поиска.     Процесс  поиска  инициируется  конкретным  игроком.  Сервис  загружает  в  память   данные  кластера  пользователя  и  производит  анализ  данных  кластера,  выделяя   высокими  весовыми  коэффициентами  характеристики,  имеющие  высокую   энтропийную  характеристику,  и  наоборот.  Это  позволяет  учесть  особенности   конкретного  кластера  и  увеличить  точность  поиска.  Результатом  работы  поиска   является  ранжированный  список  игроков  кластера.   Squadder  team,  2014  
  • 9. Пост-­‐фильтрация   На  этапе  пост-­‐фильтрации  обрабатываются  такие  вещи,  как:    -­‐  Статус  игрока  (онлайн/оффлайн/ищу  взвод/etc.);    -­‐  Запрет  на  участие  в  поиске  в  качестве  объекта;    -­‐  Определенные  предпочтения  по  используемым  средствам  связи  (ингейм-­‐VoIP,   teamspeak,  skype,  etc.);    -­‐  Матчинг  по  прайм-­‐тайму  игрока;    -­‐  Матчинг  по  предпочтительной  технике;    -­‐  Лимитирование  выдачи.     В  общем  случае  на  этапе  пост-­‐фильтрации  обрабатываются  некоторые  флаги,   реакция  на  которые  должна  быть  незамедлительной.  Результатом  работы  этого   процесса  является  готовая  поисковая  выдача.   Squadder  team,  2014  
  • 10. Реализация   Весь  сервис  делится  на  несколько  более  мелких  сервисов,  каждый  из  которых  отвечает   за  свою  часть  работы.  Следует  выделить  следующие  приложения:    -­‐  Hydra:  шлюз  к  источнику  данных.  Сглаживает  нагрузку  на  сервисы  Wargaming,  а  также   работает  с  приоритетами  запросов  и  их  очередностью.    -­‐  Charon:  обработчик  сырых  данных.  Готовит  данные  к  записи  в  базу,  рассчитывает   рейтинг  игроков,  работает  с  шардингом.    -­‐  Styx-­‐N:  серверы  базы  данных.  Хранит  данные  и  частично  их  обрабатывает  (map/ reduce).    -­‐  Sisyphus:  обработчик  подготовленных  Charon  данных.  Занимается  кластеризацией   данных.    -­‐  Hades-­‐N:  фронтенд.  Обрабатывает  запросы  пользователей,  работает  с   рекомендационными  алгоритмами.     Все  микросервисы  пишутся  на  erlang  как  на  платформе,  наиболее  подходящей  для   решения  задачи.  Erlang/OTP  также  хорошо  знаком  команде  разработчиков.   Squadder  team,  2014  
  • 11. Команда  Squadder   Денис  Фахртдинов,  ведущий  разработчик.      Анализ  задач,  проектирование  и  программирование  сервисов,  руководство  разработкой.    d_fakhrtdinov@wargaming.net       Алексей  Соколов,  младший  разработчик.      Программирование  сервисов.    sokolov@1.21gigawa|s.net     Владимир  Коваль,  инженер  бэкенда.      Подготовка  релизов,  разработка  схем  деплоймента  и  поддержки  работы  сервисов.    vladimir.v.koval@gmail.com