Максим Барышников, Что такое типовые проблемы...

28
HDCONF HDCONF «Что такое типовые проблемы нагруженных проектов и как их решают в Wargaming» Максим Барышников

Upload: tanya-denisyuk

Post on 26-Jun-2015

2.523 views

Category:

Technology


5 download

DESCRIPTION

Расскажу, какие подходы и инструменты практически применяются в Wargaming при обработке данных в гигантской, без преувеличений, системе. Частичный список затрагиваемых вопросов NoSQL versus/with RDBMS или каждый инструмент на своем месте Синхронные и асинхронные подходы к построению систем: почему асинхронные системы не могут быть быстрее синхронных, но асинхронность, тем не менее, очень полезна API и интерфейсы — важная составляющая хорошо спроектированной системы Performance vs Scalability Мониторинг и профилирование

TRANSCRIPT

Page 1: Максим Барышников, Что такое типовые проблемы нагруженных проектов и как их решают в Wargaming

HDCONFHDCONF

«Что такое типовые проблемы нагруженных проектов и как их решают в Wargaming»

Максим Барышников

Page 2: Максим Барышников, Что такое типовые проблемы нагруженных проектов и как их решают в Wargaming

О докладчике● 12+ лет разработки ПО: как разработчик,

руководитель команды, менеджер продукта, архитектор

● Solutuions Architect в Web-департаменте Wargaming.net

2/28

Page 3: Максим Барышников, Что такое типовые проблемы нагруженных проектов и как их решают в Wargaming

3/28

Big Data (и HighLoad) — как подростковый секс: все говорят о нем; никто толком не знает что значит им заниматься; при этом каждый уверен, что у всех остальных он есть, а потому каждый утверждает, что и у него тоже...

© somebody

Page 4: Максим Барышников, Что такое типовые проблемы нагруженных проектов и как их решают в Wargaming

Глоссарий

Page 5: Максим Барышников, Что такое типовые проблемы нагруженных проектов и как их решают в Wargaming

BigData — когда данных уже слишком много для того, чтобы иметь возможность выполнять операции «в лоб» за приемлемое для приложения время.

5/28

Page 6: Максим Барышников, Что такое типовые проблемы нагруженных проектов и как их решают в Wargaming

Пропускная способность (Throughput) системы — характеризуется количеством пользовательских запросов, которые система способна обработать в единицу времени.

6/28

Page 7: Максим Барышников, Что такое типовые проблемы нагруженных проектов и как их решают в Wargaming

Отказоустойчивость (Fault Tolerance) — это свойство технической системы сохранять свою работоспособность после отказа одного или нескольких составных компонентов.

Page 8: Максим Барышников, Что такое типовые проблемы нагруженных проектов и как их решают в Wargaming

Достуность (Availability) системы — возможность использования системы пользователями.

Доступность, % Простой в год Простой в месяц Простой в неделю

... ... ... ...

99.9% 8.76 часов 43.2 минут 10.1 минут

99.99% 52.56 минут 4.32 минут 1.01 минут

99.999% 5.26 минут 25.9 секунд 6.05 секунд

99.9999% 31.5 секунд 2.59 секунд 0.605 секунд

8/28

Page 9: Максим Барышников, Что такое типовые проблемы нагруженных проектов и как их решают в Wargaming

Highload — когда необходимо обеспечивать высокую пропускную способность и доступность (за счет отказоустойчивости) системы.

Зачастую при этом приходится оперировать BigData.

9/28

Page 10: Максим Барышников, Что такое типовые проблемы нагруженных проектов и как их решают в Wargaming

Качественная характеристика

10/28

Качество высоконагруженной системы Пропускная способность × Доступность∝

Характеристика Способы оптимизации

Доступность Повышение отказоустойчивости

Пропускная способность

Улучшение алгоритмовПараллеллизм

Отложенные вычисленияПредварительные вычисления

Page 11: Максим Барышников, Что такое типовые проблемы нагруженных проектов и как их решают в Wargaming

Проблемы и решения

11/28

Page 12: Максим Барышников, Что такое типовые проблемы нагруженных проектов и как их решают в Wargaming

#0002. Балансировка входящих запросов

Проблема:

На входном каскаде инфраструктуры присутствует SPOF

Задача:

Нужно избежать SPOF на приеме пользовательских запросов + построить инфраструктуру балансировки.

12/28

Page 13: Максим Барышников, Что такое типовые проблемы нагруженных проектов и как их решают в Wargaming

#0002. Балансировка входящих запросов

13/28

Redundant hardware load balancers

=Heartbeat + Virtual IP

nginx nginx

Page 14: Максим Барышников, Что такое типовые проблемы нагруженных проектов и как их решают в Wargaming

#0002. Балансировка входящих запросов

● Запущено в течение 2-х недель● Обошлось в 3 раза дешевле аппаратных

балансировщиков● Выполняет дополнительную функцию● ~3 года «без разрывов»

14/28

Page 15: Максим Барышников, Что такое типовые проблемы нагруженных проектов и как их решают в Wargaming

#0012. Внешняя коммуникация в синхронных запросах

Проблема:

У некоторых запросов время обработки близко к предельно допустимому, характеризуется высокой волатильностью из-за синхронной внешней коммуникации.

Задача:

Снизить время ответа сохранив функциональность.

15/28

Page 16: Максим Барышников, Что такое типовые проблемы нагруженных проектов и как их решают в Wargaming

#0012. Внешняя коммуникация в синхронных запросах

Было:

16/28

Обработка запроса Логгирование события Обработка события Ответ

50-60% времени ответа 40-50% времени ответа

Page 17: Максим Барышников, Что такое типовые проблемы нагруженных проектов и как их решают в Wargaming

#0012. Внешняя коммуникация в синхронных запросах

Стало:

17/28

Обработка запроса

Логгирование события Обработка события

Ответ

MQ

Page 18: Максим Барышников, Что такое типовые проблемы нагруженных проектов и как их решают в Wargaming

#0102. Много времени проводим в работе с базой

Проблема:

Значительную часть времени обработки занимает получаение данных из системы хранения.

Задача:

Снизить время ответа за счет оптимизации доступа к данным.

18/28

Page 19: Максим Барышников, Что такое типовые проблемы нагруженных проектов и как их решают в Wargaming

#0102. Много времени проводим в работе с базой

Вводная:

Профиль работы с этим конкретным куском данных:

1) read/write ~ 50/50

2) Свежие данные читаются значительно чаще

19/28

Page 20: Максим Барышников, Что такое типовые проблемы нагруженных проектов и как их решают в Wargaming

#0102. Много времени проводим в работе с базой

LSM-деревья:● Несколько уровней хранения

● Быстрая запись (не нужно переписывать блоки)

● Блочный merge «вниз» при переполнении

Как результат архитектуры — быстрая запись и быстрое чтение недавно записанных данных. То, что нужно!

20/28

Page 21: Максим Барышников, Что такое типовые проблемы нагруженных проектов и как их решают в Wargaming

#0102. Много времени проводим в работе с базой

21/28

Приложение

Собственная «базочка»на основе LevelDB

Основная БД

read-write

read

relay

Page 22: Максим Барышников, Что такое типовые проблемы нагруженных проектов и как их решают в Wargaming

#0112. Баннерка (5000 req/sec на ноду)

22/28

Проблема:

Баннерная система подошла к пределу пропускной способности.

Задача:

Решить проблемы масштабирования не переписывая полностью решение (как минимум, сохранить инструменты управления).

Page 23: Максим Барышников, Что такое типовые проблемы нагруженных проектов и как их решают в Wargaming

#0112. Баннерка (5000 req/sec на ноду)

23/28

Вводная:● Сложная админка, всех устраивающая

● Миграция на другую систему — очень дорогая

● Бутылочное горлышко в способе выдачи баннеров

Page 24: Максим Барышников, Что такое типовые проблемы нагруженных проектов и как их решают в Wargaming

#0112. Баннерка (5000 req/sec на ноду)

24/28

Админка БД

read/write

Система выдачи

Раз в пять минут читаем в память свежие данныеи сбрасываем накопленные

Page 25: Максим Барышников, Что такое типовые проблемы нагруженных проектов и как их решают в Wargaming

#1002. Поведенческий анализ

25/28

Задача:

В гетерогенной среде, в которой происходит 3000-5000 событий в секунду, нужно отслеживать определенные паттерны, и реагировать на них. Желательно близко к real time.

Page 26: Максим Барышников, Что такое типовые проблемы нагруженных проектов и как их решают в Wargaming

#1002. Поведенческий анализ

26/28

System A

[evenA0, eventA1, …, eventAN]

System Z

[evenZ0, eventZ1, …, eventZN]

User

Page 27: Максим Барышников, Что такое типовые проблемы нагруженных проектов и как их решают в Wargaming

#1002. Поведенческий анализ

27/28

System A

[evenA0, eventA1, …, eventAN]

User

System Z

[evenZ0, eventZ1, …, eventZN]

MQ

Паттерн Blackboard

Анализаторы

Триггеры

A0 Z0 ZN

user

Page 28: Максим Барышников, Что такое типовые проблемы нагруженных проектов и как их решают в Wargaming

28/28

Q&A