Взаимодействие сервисов через advanced message queuing protocol

37
Взаимодействие сервисов через Advanced Message Queuing Protocol Паттерны интеграции

Upload: elena-rumyantseva

Post on 08-Jul-2015

315 views

Category:

Engineering


3 download

DESCRIPTION

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

TRANSCRIPT

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

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

Queuing ProtocolПаттерны интеграции

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

AMQP

2

AMQP (Advanced Message Queuing Protocol) — протокол обмена сообщениями между компонентами системы.

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

Основные понятия

3

•Сообщение / Message

•Обменник / Exchange

•Очередь / Queue

•Связка / Binding

•Поставщик / Producer

•Потребитель / Consumer

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

Пример жизненного цикла сообщения

4

Producer

Exchange

создание

отправка

Consumer

Queue

обработка

получение

Binding

доставка

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

Сообщение / Message

5

•Единица передаваемой информации

•Состоит из заголовка и тела:

•заголовок содержит служебную информацию (в какой обменник и с каким ключом отправить, из какой очереди получить)

• тело содержит непосредственно данные

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

Поставщик / Producer

6

•Сервис (компонент приложения), формирующий сообщения для потребителей

•Во время отправки сообщения задает обменник и ключ маршрутизации

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

Потребитель / Consumer

7

•Сервис (компонент приложения), обрабатывающий сообщения, приходящие от поставщиков

•Для получения сообщений указывает очередь, из которой хочет получать сообщения

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

Обменник / Exchange

8

•Место, в которое отправляются сообщения от поставщика или из других обменников

•Не хранит сообщения

•Бывает трех типов (логика):

• fanout — во все привязанные q/e

• direct — в q/e по совпадению с ключом маршрутизации

• topic — в q/e по маске на ключ маршрутизации

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

Связка / Binding

9

•Связка задает ключ, по которому очередь или обменник привязываются к обменнику,из которого будут получать сообщения

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

Очередь / Queue

10

•Хранит сообщения до тех пор, пока их не заберет клиент

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

Интеграция сервисов

11

•Каналы обмена сообщениями

•Типы сообщений

•Маршрутизация сообщений

•Управление системой

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

Каналы обмена сообщениями

12

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

Канал Точка-Точка / Point-to-Point Channel

13

•Имеется один поставщик

•Каждое сообщение будет получено только один раз, даже если имеется несколько потребителей

•Сообщение получает или один потребитель, или конкурирующие потребители

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

Канал Точка-Точка / Point-to-Point Channel

14

Producer Queue

Consumer

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

Канал Точка-Точка / Point-to-Point Channel

15

Producer Queue

C CC

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

Канал Публикация-Подписка / Publish-Suscribe Channel

16

•Имеется один поставщик — «издатель»

•Поставщик должен оповещать всех подписчиков, например, о каком-то событии

•Каждое сообщение должны получить все потребители

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

17

Exchange

Producer Q С

Канал Публикация-Подписка / Publish-Suscribe Channel

Q С

СQ

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

Запрос-Ответ / Request-Reply

18

•Служит для организации двухстороннего обмена сообщениями — отправитель может получить ответ от получателя

•Отправитель называется «инициатором запроса» (Requestor)

•Получатель называется «ответчиком», т.к. отправляет сообщение в ответ на пришедшее (Replier)

•Каждое сообщение идет по собственному каналу

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

19

E

Requestor

Q

Replier

EQ

Запрос-Ответ / Request-Reply

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

Типы сообщений

20

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

Сообщение с командой / Command Message

21

•Используется для удаленного вызова команд

•Поставщик указывает в сообщении команду, которую должен выполнить потребитель

•Для передачи обычно используется канал «Точка-Точка»

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

Сообщение с документом / Document Message

22

•Используется для передачи данных между сервисами

•Сообщение содержит только данные, потребитель сам должен решить, что с ними дальше делать

•Данные более значимы, чем своевременность доставки

•Для передачи используются каналы «Точка-Точка» или «Публикация-Подписка»

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

Сообщение о событии / Event Message

23

•Используется для оповещения сервисов о том, что в сервисе-отправителе произошло некоторое событие

•Сообщения могут не содержать данных, в этом случае важен сам факт отправки сообщения (факт наступления события)

•Для передачи используются каналы «Точка-Точка» или «Публикация-Подписка»

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

Маршрутизация

24

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

Маршрутизация сообщений / Routing

25

•Сообщения, отправляемые поставщиком, необходимо распределять разным получателям в соответствии с некоторой логикой

•При отправке сообщений указывается ключ маршрутизации (routing key), на основе которого обменник понимает, в какую очередь (или какие очереди) сообщение должно попасть

•Типы маршрутизации: fanout, direct, topic

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

26

Exchangedirect

Producer Q С

Q С

СQ

rk_1

rk_2

rk_3

Маршрутизация сообщений / Routing

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

27

Exchangetopic

Producer Q С

Q С

СQ

p1.*

p2.*

p3.*

Маршрутизация сообщений / Topic

p4.*

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

Управление системой: мониторинг и отладка

28

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

Пульс / Heartbit

29

•Каждый компонент системы периодически отправляет сообщения сервису мониторинга. Сервис мониторинга понимает, что компонент функционирует.

•Сообщения могут содержать какие-то дополнительные сведения о компоненте (кол-во обработанных сообщений, кол-во потребляемой памяти и т. д.)

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

Тестовые сообщения / Test Messages

30

•Сервис мониторинга отправляет некоторому компоненту тестовые сообщения и проверяет, правильно ли компонент на них реагирует.

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

Отвод / Wire Tap

31

•Предположим, что передача сообщений между парой сервисов производится по каналу «Точка-Точка»

•Во время тестирования, мониторинга или отладки необходимо отслеживать все сообщения, перемещающиеся по каналу

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

Отвод / Wire Tap

32

Exchange

Producer

Queue

Consumer

Wire Tap

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

Журнал доставки сообщений / Message History

33

•Сервис мониторинга собирает информацию о сообщениях

•История сообщений помогает понять, как сервисы взаимодействуют между собой

• Message Store — сохраняем историю сообщений в отдельном хранилище. По этой истории можно строить аналитику.

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

Журнал доставки сообщений / Message History

E

PQ

MessageHistory

E

C/PQ

С

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

Дополнительные материалы

35

Enterprise Integration Patterns Шаблоны интеграции корпоративных приложений

http://www.enterpriseintegrationpatterns.com

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

Дополнительные материалы

36

• Как работает AMQP (симулятор RabbitMQ): http://tryrabbitmq.com

• Реализация базовых шаблонов интеграции на разных ЯП: https://www.rabbitmq.com/getstarted.html