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

25
RabbitMQ - обмен сообщениями, который просто работает Руслан Сафин ByndyuSoft twitter.com/razonrus 5-я конференция .NET разработчиков 21 октября 2012 www.dotnetconf.ru

description

Доклад на dotnetconf

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

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

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

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

ByndyuSofttwitter.com/razonrus

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

21 октября 2012

www.dotnetconf.ru

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

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

Цели

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

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

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

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

Проблема

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

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

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

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

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

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

. . .

Сервис N

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

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

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

Ожидание

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

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

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

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

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

Реальность

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

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

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

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

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

. . .

Сервис N

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

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

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

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

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

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

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

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

Демо

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

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

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

Еще примеры

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

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

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

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

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

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

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

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

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

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

. . .

Сервис N

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

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

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

Сервис 2

Сервис N

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

Сервис 1

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

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

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

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

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

Сервис Z

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

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

Результат

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

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

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

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

Результат

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

• Скорость

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

• Бонусы

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

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

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

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

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

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

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

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

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

Сервис Z

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

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

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

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

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

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

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

Check list

• Общая шина

• RabbitMQ

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

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

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

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

Руслан Сафин

ByndyuSoft

[email protected]

twitter.com/razonrus