В чем разница между каналами и ссылками в AMQP? - PullRequest
2 голосов
/ 25 февраля 2020

Я пытаюсь понять составляющую часть протокола AMQP. Я понял, что AMQP сначала открывает TCP-соединение, а затем использует несколько каналов внутри этого соединения, чтобы предотвратить накладные расходы на установку нескольких TCP-соединений (это очень хорошо объяснено здесь ). Сейчас я пытаюсь понять, как ссылки вступают в игру. Насколько я понимаю, это работает следующим образом:

  1. Соединение (большую часть времени TCP) устанавливается между двумя контейнерами (в основном две программы)
  2. Создано несколько каналов , Они не привязаны ни к каким узлам
  3. Сеанс объединяет два канала каждого направления, но не привязан к каким-либо узлам
  4. «Связи» связывают сеанс с двумя узлами с каждого конца

Правильно ли мое понимание? Зачем нам нужна концепция «Ссылки», когда у нас уже есть каналы? Почему бы просто не сделать канал соединением между двумя узлами? Чем, в простом английском sh, является разница между каналом и ссылкой?

Microsoft заявляет:

Канал является однонаправленным, исходящим виртуальный путь передачи поверх соединения.

и

Ссылка - это канал связи, созданный во время сеанса, который позволяет передавать сообщения в одном направлении

Это звучит в основном для меня то же. Я был бы очень рад, если бы кто-то мог объяснить в простых терминах, как связаны каналы, сеансы и ссылки.

1 Ответ

3 голосов
/ 28 февраля 2020

Короче говоря

Соединения сделаны из однонаправленных каналов, которые соединяют два узла.

Каналы , следовательно, являются однонаправленной связью между узлами, которые могут составлять соединение

Сеанс состоит из двух каналов (входящий и исходящий)

Ссылка * Протокол 1016 * является ядром AMQP. Линия обеспечивает однонаправленный транспорт между двумя узлами. Ссылка присоединяется к узлу на конце . Существует два вида терминалов: источники и цели. Терминал отвечает за отслеживание состояния определенного потока входящих или исходящих сообщений. Источники отслеживают исходящие сообщения, а цели отслеживают входящие сообщения.

Примечание: вы можете думать о терминале как о сокете в клиенте, с которым вы можете связать точную функцию, такую ​​как источник / цель.

Полное объяснение

Вся информация и следующие изображения взяты из спецификации протокола OASIS Advanced Message Queuing Protocol (AMQP) версии 1.0. Для получения дополнительной информации вы должны прочитать this .

Сеть AMQP состоит из узлов, соединенных через ссылки. Узлы - это именованные объекты, ответственные за безопасное хранение и / или доставку сообщений. Сообщения могут исходить, заканчиваться или ретранслироваться узлами.

Для установления связи между узлами в разных контейнерах необходимо установить соединение. Соединение AMQP состоит из полнодуплексной, надежно упорядоченной последовательности кадров. Кадр - это единица работы, выполняемая по проводу.

enter image description here

Соединение AMQP разделено на согласованное количество независимых однонаправленных каналов. Сеанс AMQP коррелирует два однонаправленных канала для формирования двунаправленного последовательного диалога между двумя контейнерами.

enter image description here

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

enter image description here

В порядке для передачи сообщений между узлами необходимо установить связь между узлами. Линк - это однонаправленный маршрут между двумя узлами. Ссылка присоединяется к узлу на конце. Есть два вида терминалов: источники и цели. Терминал отвечает за отслеживание состояния определенного потока входящих или исходящих сообщений.

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

enter image description here

...