Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Взаимодействие сервисов через
Advanced Message

Queuing Protocol
Паттерны интеграции
AMQP
2
AMQP (Advanced Message Queuing Protocol) — протокол
обмена сообщениями между компонентами системы.
Основные понятия
3
•Сообщение / Message
•Обменник / Exchange
•Очередь / Queue
•Связка / Binding
•Поставщик / Producer
•Пот...
Пример жизненного цикла сообщения
4
Producer
Exchange
создание
отправка
Consumer
Queue
обработка
получение
Binding
доставка
Сообщение / Message
5
•Единица передаваемой информации

•Состоит из заголовка и тела:
•заголовок содержит служебную информ...
Поставщик / Producer
6
•Сервис (компонент приложения),
формирующий сообщения для
потребителей
•Во время отправки сообщения...
Потребитель / Consumer
7
•Сервис (компонент приложения),
обрабатывающий сообщения,
приходящие от поставщиков
•Для получени...
Обменник / Exchange
8
•Место, в которое отправляются 

сообщения от поставщика или 

из других обменников
•Не хранит сообщ...
Связка / Binding
9
•Связка задает ключ, по которому

очередь или обменник 

привязываются к обменнику,

из которого будут ...
Очередь / Queue
10
•Хранит сообщения до тех пор,

пока их не заберет клиент
Интеграция сервисов
11
•Каналы обмена сообщениями
•Типы сообщений
•Маршрутизация сообщений
•Управление системой
Каналы обмена сообщениями
12
Канал Точка-Точка / Point-to-Point Channel
13
•Имеется один поставщик
•Каждое сообщение будет получено только один раз, да...
Канал Точка-Точка / Point-to-Point Channel
14
Producer Queue
Consumer
Канал Точка-Точка / Point-to-Point Channel
15
Producer Queue
C CC
Канал Публикация-Подписка / 

Publish-Suscribe Channel
16
•Имеется один поставщик — «издатель»
•Поставщик должен оповещать...
17
Exchange
Producer Q С
Канал Публикация-Подписка / 

Publish-Suscribe Channel
Q С
СQ
Запрос-Ответ / Request-Reply
18
•Служит для организации двухстороннего обмена сообщениями
— отправитель может получить отв...
19
E
Requestor
Q
Replier
EQ
Запрос-Ответ / Request-Reply
Типы сообщений
20
Сообщение с командой / Command Message
21
•Используется для удаленного вызова команд
•Поставщик указывает в сообщении кома...
Сообщение с документом / Document Message
22
•Используется для передачи данных между сервисами
•Сообщение содержит только ...
Сообщение о событии / Event Message
23
•Используется для оповещения сервисов о том, что в сервисе-
отправителе произошло н...
Маршрутизация
24
Маршрутизация сообщений / Routing
25
•Сообщения, отправляемые поставщиком, необходимо
распределять разным получателям в со...
26
Exchange

direct
Producer Q С
Q С
СQ
rk_1
rk_2
rk_3
Маршрутизация сообщений / Routing
27
Exchange

topic
Producer Q С
Q С
СQ
p1.*
p2.*
p3.*
Маршрутизация сообщений / Topic
p4.*
Управление системой:
мониторинг и отладка
28
Пульс / Heartbit
29
•Каждый компонент системы периодически отправляет
сообщения сервису мониторинга. Сервис мониторинга
по...
Тестовые сообщения / 

Test Messages
30
•Сервис мониторинга отправляет некоторому компоненту
тестовые сообщения и проверяе...
Отвод / Wire Tap
31
•Предположим, что передача сообщений между парой сервисов
производится по каналу «Точка-Точка»
•Во вре...
Отвод / Wire Tap
32
Exchange
Producer
Queue
Consumer
Wire Tap
Журнал доставки сообщений / 

Message History
33
•Сервис мониторинга собирает информацию о сообщениях
•История сообщений п...
Журнал доставки сообщений / 

Message History
E
P
Q
MessageHistory
E
C/P
Q
С
Дополнительные материалы
35
Enterprise Integration Patterns

Шаблоны интеграции корпоративных приложений
http://www.enterp...
Дополнительные материалы
36
• Как работает AMQP (симулятор RabbitMQ):

http://tryrabbitmq.com
• Реализация базовых шаблоно...
info@elena.rumyantseva.name
@webdeva
Контакты
Upcoming SlideShare
Loading in …5
×

Взаимодействие сервисов через Advanced Message
 Queuing Protocol

1,203 views

Published on

Из чего состоит AMQP. Как реализовать шаблоны обмена сообщениями в AMQP.

Published in: Engineering
  • Be the first to comment

Взаимодействие сервисов через Advanced Message
 Queuing Protocol

  1. 1. Взаимодействие сервисов через Advanced Message
 Queuing Protocol Паттерны интеграции
  2. 2. AMQP 2 AMQP (Advanced Message Queuing Protocol) — протокол обмена сообщениями между компонентами системы.
  3. 3. Основные понятия 3 •Сообщение / Message •Обменник / Exchange •Очередь / Queue •Связка / Binding •Поставщик / Producer •Потребитель / Consumer
  4. 4. Пример жизненного цикла сообщения 4 Producer Exchange создание отправка Consumer Queue обработка получение Binding доставка
  5. 5. Сообщение / Message 5 •Единица передаваемой информации
 •Состоит из заголовка и тела: •заголовок содержит служебную информацию (в какой обменник и с каким ключом отправить, из какой очереди получить) •тело содержит непосредственно данные
  6. 6. Поставщик / Producer 6 •Сервис (компонент приложения), формирующий сообщения для потребителей •Во время отправки сообщения задает обменник и ключ маршрутизации
  7. 7. Потребитель / Consumer 7 •Сервис (компонент приложения), обрабатывающий сообщения, приходящие от поставщиков •Для получения сообщений указывает очередь, из которой хочет получать сообщения
  8. 8. Обменник / Exchange 8 •Место, в которое отправляются 
 сообщения от поставщика или 
 из других обменников •Не хранит сообщения •Бывает трех типов (логика): •fanout — во все привязанные q/e •direct — в q/e по совпадению с ключом маршрутизации •topic — в q/e по маске на ключ маршрутизации
  9. 9. Связка / Binding 9 •Связка задает ключ, по которому
 очередь или обменник 
 привязываются к обменнику,
 из которого будут получать
 сообщения
  10. 10. Очередь / Queue 10 •Хранит сообщения до тех пор,
 пока их не заберет клиент
  11. 11. Интеграция сервисов 11 •Каналы обмена сообщениями •Типы сообщений •Маршрутизация сообщений •Управление системой
  12. 12. Каналы обмена сообщениями 12
  13. 13. Канал Точка-Точка / Point-to-Point Channel 13 •Имеется один поставщик •Каждое сообщение будет получено только один раз, даже если имеется несколько потребителей •Сообщение получает или один потребитель, или конкурирующие потребители
  14. 14. Канал Точка-Точка / Point-to-Point Channel 14 Producer Queue Consumer
  15. 15. Канал Точка-Точка / Point-to-Point Channel 15 Producer Queue C CC
  16. 16. Канал Публикация-Подписка / 
 Publish-Suscribe Channel 16 •Имеется один поставщик — «издатель» •Поставщик должен оповещать всех подписчиков, например, о каком-то событии •Каждое сообщение должны получить все потребители
  17. 17. 17 Exchange Producer Q С Канал Публикация-Подписка / 
 Publish-Suscribe Channel Q С СQ
  18. 18. Запрос-Ответ / Request-Reply 18 •Служит для организации двухстороннего обмена сообщениями — отправитель может получить ответ от получателя •Отправитель называется «инициатором запроса» (Requestor) •Получатель называется «ответчиком», т.к. отправляет сообщение в ответ на пришедшее (Replier) •Каждое сообщение идет по собственному каналу
  19. 19. 19 E Requestor Q Replier EQ Запрос-Ответ / Request-Reply
  20. 20. Типы сообщений 20
  21. 21. Сообщение с командой / Command Message 21 •Используется для удаленного вызова команд •Поставщик указывает в сообщении команду, которую должен выполнить потребитель •Для передачи обычно используется канал «Точка-Точка»
  22. 22. Сообщение с документом / Document Message 22 •Используется для передачи данных между сервисами •Сообщение содержит только данные, потребитель сам должен решить, что с ними дальше делать •Данные более значимы, чем своевременность доставки •Для передачи используются каналы «Точка-Точка» или «Публикация-Подписка»
  23. 23. Сообщение о событии / Event Message 23 •Используется для оповещения сервисов о том, что в сервисе- отправителе произошло некоторое событие •Сообщения могут не содержать данных, в этом случае важен сам факт отправки сообщения (факт наступления события) •Для передачи используются каналы «Точка-Точка» или «Публикация-Подписка»
  24. 24. Маршрутизация 24
  25. 25. Маршрутизация сообщений / Routing 25 •Сообщения, отправляемые поставщиком, необходимо распределять разным получателям в соответствии с некоторой логикой •При отправке сообщений указывается ключ маршрутизации (routing key), на основе которого обменник понимает, в какую очередь (или какие очереди) сообщение должно попасть •Типы маршрутизации: fanout, direct, topic
  26. 26. 26 Exchange
 direct Producer Q С Q С СQ rk_1 rk_2 rk_3 Маршрутизация сообщений / Routing
  27. 27. 27 Exchange
 topic Producer Q С Q С СQ p1.* p2.* p3.* Маршрутизация сообщений / Topic p4.*
  28. 28. Управление системой: мониторинг и отладка 28
  29. 29. Пульс / Heartbit 29 •Каждый компонент системы периодически отправляет сообщения сервису мониторинга. Сервис мониторинга понимает, что компонент функционирует. •Сообщения могут содержать какие-то дополнительные сведения о компоненте (кол-во обработанных сообщений, кол- во потребляемой памяти и т. д.)
  30. 30. Тестовые сообщения / 
 Test Messages 30 •Сервис мониторинга отправляет некоторому компоненту тестовые сообщения и проверяет, правильно ли компонент на них реагирует.
  31. 31. Отвод / Wire Tap 31 •Предположим, что передача сообщений между парой сервисов производится по каналу «Точка-Точка» •Во время тестирования, мониторинга или отладки необходимо отслеживать все сообщения, перемещающиеся по каналу
  32. 32. Отвод / Wire Tap 32 Exchange Producer Queue Consumer Wire Tap
  33. 33. Журнал доставки сообщений / 
 Message History 33 •Сервис мониторинга собирает информацию о сообщениях •История сообщений помогает понять, как сервисы взаимодействуют между собой •Message Store — сохраняем историю сообщений в отдельном хранилище. По этой истории можно строить аналитику.
  34. 34. Журнал доставки сообщений / 
 Message History E P Q MessageHistory E C/P Q С
  35. 35. Дополнительные материалы 35 Enterprise Integration Patterns
 Шаблоны интеграции корпоративных приложений http://www.enterpriseintegrationpatterns.com
  36. 36. Дополнительные материалы 36 • Как работает AMQP (симулятор RabbitMQ):
 http://tryrabbitmq.com • Реализация базовых шаблонов интеграции на разных ЯП:
 https://www.rabbitmq.com/getstarted.html
  37. 37. info@elena.rumyantseva.name @webdeva Контакты

×