RabbitMQ - обмен сообщениями, который просто работает

Post on 06-Jul-2015

278 views 1 download

description

Доклад на dotnetconf

Transcript of RabbitMQ - обмен сообщениями, который просто работает

RabbitMQ - обмен сообщениями, который просто

работаетРуслан Сафин

ByndyuSofttwitter.com/razonrus

5-я конференция .NET разработчиков

21 октября 2012

www.dotnetconf.ru

2RabbitMQ , РусланСафин

Цели

• Познакомить с RabbitMQ

• Поделиться историями из жизни

3RabbitMQ , РусланСафин

Проблема

4RabbitMQ , РусланСафин

Проблема в коммуникации

5RabbitMQ , РусланСафин

Сервис 1 Сервис 2

. . .

Сервис N

Коммуникация – вариант 1

6RabbitMQ , РусланСафин

Ожидание

• Распределенная прозрачная архитектура

• Масштабируемость

• Отказоустойчивость

7RabbitMQ , РусланСафин

Реальность

8RabbitMQ , РусланСафин

9RabbitMQ , РусланСафин

Сервис 1 Сервис 2

. . .

Сервис N

Коммуникация – вариант 2

10RabbitMQ , РусланСафин

Общая шина – и есть среда для коммуникации.

11RabbitMQ , РусланСафин

RabbitMQ

• Robust messaging for applications

• Easy to use

• Runs on all major operating systems

• Supports a huge number of developer platforms

• Open source and commercially supported

12RabbitMQ , РусланСафин

Демо

Лучше один раз увидеть код, чем сто раз прочесть MSDN

13RabbitMQ , РусланСафин

Еще примеры

• Отправка сообщения сразу нескольким подписчикам за раз

• Выборочное получение сообщений

• Выборочное получение сообщений на основе маски

• RPC (удаленный вызов процедуры)

14RabbitMQ , РусланСафин

Как мы это применяли

15RabbitMQ , РусланСафин

Сервис 1 Сервис 2

. . .

Сервис N

Сложившаяся ситуация

16RabbitMQ , РусланСафин

Сервис 2

Сервис N

1. Разгрузить БД

Сервис 1

Планировщик Репозиторий

17RabbitMQ , РусланСафин

2. Оптимизировать конвейер

Планировщик РепозиторийСервис 1 Сервис 2 Сервис N

Сервис Z

18RabbitMQ , РусланСафин

Результат

19RabbitMQ , РусланСафин

20RabbitMQ , РусланСафин

Результат

• Прозрачный, легко диагностируемый конвейер

• Скорость

• Масштабируемость

• Бонусы

21RabbitMQ , РусланСафин

Бонус 1: инициирование задач

Планировщик РепозиторийСервис 1 Сервис 2 Сервис N

Сервис ZВеб клиент

22RabbitMQ , РусланСафин

Бонус 2: приоритеты задач

Планировщик РепозиторийСервис 1 Сервис 2 Сервис N

Сервис Z

23RabbitMQ , РусланСафин

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

• Возможность появления дублей в очередях

• Загруженность приоритетных очередей

24RabbitMQ , РусланСафин

Check list

• Общая шина

• RabbitMQ

• Примеры построения архитектуры

25RabbitMQ , РусланСафин

Спасибо за внимание

Руслан Сафин

ByndyuSoft

iruslansafin@gmail.com

twitter.com/razonrus