Краткий обзор протокола AMQP

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

Данный мануал поможет разобраться с протоколом AMQP (Advanced Message Queueing Protocol). AMQP – это промежуточное программное обеспечение, которое выступает посредником для передачи сообщений между различными процессами, приложениями или даже несвязанными системами, которые должны взаимодействовать друг с другом.

Что такое технические и открытые стандарты?

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

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

Что такое OSI?

OSI (Open System Interconnection) – это стандарт ISO (International Organization for Standardization), разработанный в 1970-х для стандартизации взаимодействия разных сетей – и, следовательно, компьютерных систем, сообщающихся через них.

Этот стандарт представляет собой фреймворк (базу для разработки) для реализации протоколов связи в семи последовательных уровнях:

  1. Физический уровень: физическая база OSI (аппаратное обеспечение).
  2. Канальный уровень: передает данные между нодами.
  3. Сетевой уровень: направляет трафик (переадресовывает его).
  4. Транспортный уровень: обеспечивает надежный поток данных, управляет им.
  5. Сеансовый уровень: отвечает за управление сеансами между приложениями.
  6. Уровень представления: формирует и представляет данные, которые нужно обработать.
  7. Прикладной уровень: состоит из набора протоколов, с помощью которых пользователи могут получить доступ к ресурсам (файлам, веб-страницам и т.п.), а также организовать свою совместную работу. На этом уровне и работает AMQP.

Что такое прикладной уровень?

Прикладной уровень – это один из компонентов стандарта OSI. Это единственный уровень, с которым взаимодействуют пользователи; он определяет, как происходит связь между процессами или приложениями.

На прикладном уровне, кроме AMQP, также могут быть:

  • IRC
  • DNS
  • FTP
  • IMAP
  • SSH

Что такое протокол обмена данными?

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

Элементами этих протоколов являются форматы данных, маршрутизация и управление потоком.

Что такое AMQP?

AMQP (Advanced Message Queuing Protocol) обеспечивает взаимодействие между клиентами и брокерами (промежуточным ПО для обмена сообщениями). Он создан для того, чтобы путем стандартизации сообщений предоставить возможность широкому кругу различных приложений и систем работать вместе независимо от их внутренней структуры.

AMQP – широкий термин, который подразумевает как способ организации сетей, так работу брокеров сообщений. AMQP также относится:

  • К маршрутизации и хранению сообщений брокерами и наборам правил для определения поведения компонентов.
  • И к протоколу для реализации связей между клиентами и брокерами, выполняющими вышеуказанные операции.

Как появился протокол AMQP?

До AMQP были разные брокеры и приложения передачи данных. Однако у них была одна большая проблема – отсутствие взаимодействия. У них просто не было возможности работать друг с другом. Единственным методом заставить разные системы с разными протоколами взаимодействовать друг с другом был мост обмена сообщениями – дополнительный уровень для преобразования сообщений. Используя отдельные адаптеры для приема сообщений, такие системы позволяют объединить несколько разных систем обмена сообщениями.

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

Где используется AMQP?

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

AMQP обеспечивает:

  • Надежность доставки сообщений
  • Высокую скорость доставки сообщений
  • Подтверждение приема сообщений

Протокол AMQP идеально подходит для:

  • Мониторинга и совместного использования обновлений.
  • Настройки взаимодействия между разными системами.
  • Обеспечения быстрой реакции сервера на запросы и передачи трудоемких задач для последующей обработки.
  • Распространения сообщений нескольким получателям.
  • Подключения офлайн клиентов для дальнейшего извлечения данных.
  • Обеспечения асинхронной функциональности системы.
  • Повышения надежности и бесперебойной работы приложений.

Основные термины AMQP

Чтобы понять, как работает AMQP, нужно ознакомиться с базовой терминологией протокола.

  • Брокер – это приложение, реализующее модель AMQP, которое принимает соединения клиентов для маршрутизации сообщений и т.п.
  • Сообщение – это единица передаваемых данных (включая полезные данные и атрибуты сообщения).
  • Потребитель – приложение, которое получает сообщения из очередей.
  • Производитель – приложение, которое отправляет сообщения в очередь через обмен.

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

Основные компоненты AMQP

Модель AMQP, которая предоставляет способы приема, маршрутизации, хранения сообщений, добавления сообщений в очередь и их обработки, основана на четких определениях следующих компонентов:

  • Точка обмена: часть брокера (то есть сервер), которая получает сообщения и направляет их в очереди.
  • Очередь сообщений: именованный объект, с которым связаны сообщения и откуда их получают потребители.
  • Привязки: правила распространения сообщений из точек обмена в очереди.

Как работают брокеры сообщений AMQP?

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

ПРИЛОЖЕНИЕ      ТОЧКА ОБМЕНА    СПИСОК ЗАДАЧ       ВОРКЕР
[ДАННЫЕ] -------> [ДАННЫЕ] ---> [Д]+[Д][Д][Д] ---> [ДАННЫЕ]
производитель   точка обмена      очередь         потребитель

Как работают точки обмена AMQP?

После получения сообщений от производителей (т. е. клиентов) точки обмена обрабатывают и направляют их в одну или несколько очередей. Тип выполняемой маршрутизации зависит от типа точки обмена, в настоящее время их четыре:

  1. Direct – доставляет сообщения в очереди по ключам маршрутизации. Ключи маршрутизации – это дополнительные данные, которые определяют, в какую очередь нужно отправить сообщение. Обычно точки обмена такого типа используются в балансировке нагрузки round-robin.
  2. Fanout – полностью игнорирует ключи маршрутизации и отправляет сообщения во все привязанные очереди. Точки обмена этого типа используются для распространения сообщений нескольким клиентам (рассылки уведомлений, обновлений, конфигураций и т.п.).
  3. Topic – используется в шаблонах pub/sub. В этом случае ключ маршрутизации используется вместе с привязкой очередей к точке обмена.
  4. Headers – вместо ключей и привязок использует дополнительные заголовки (атрибуты сообщений). Имея возможность использовать другие типы данных, кроме строк (которыми являются ключи маршрутизации), такие точки обмена предоставляют гибкий механизм обмена сообщениями, очень похожий на direct.

Чем AMQP отличается от электронной почты?

Учитывая, что работа электронной почты подразумевает отправку сообщений, их прием и маршрутизацию в соответствующие почтовые ящики (то есть очереди), а также запрос и получение указанного сообщения, электронная почта и передача сообщений AMQP могут рассматриваться как схожие.

Помимо существенных отличий, главное, что отделяет AMQP от электронной рассылки, — это целевое качество обслуживания (QoS). AMQP по своей природе стремится к надежности, безопасности, соблюдению стандартов и безопасности.

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

Tags: