Протокол AMQP в интернете вещей

AMQP протокол

В век, когда человека окружает большое количество ограниченно «интеллектуальных» вещей, возникает вопрос передачи данных между ними, для того чтобы в зависимости от полученной информации они производили совместные действия. К примеру, светофор как прибор изменял алгоритм работы, в зависимости от плотности потока машин, данные по которому приходят к нему от специализированных датчиков. Кроме аппаратной составляющей, этот вопрос решают коммуникационные протоколы. Наиболее распространенные из них, которые предназначены для связи между устройствами, или программными компонентами — MQTT, AMQP, WAMP, STOMP.
AMQP или Advanced Message Queuing Protocol — относительно молодая технология, изначально разработанная John O’Hara для нужд банка «JP Morgan Chase & Co». Впоследствии информация о структуре сети и исходные тексты библиотек ПО были предоставлены организации OASIS. С ее помощью, с 2014 года, этот протокол получил призвание в виде международного официального стандарта ISO/IEC 19464.

Характеристики протокола

AMQP
Логотип сети

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

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

Тут необходимо маленькое уточнение. AMQP — протокол высокого уровня, он не затрагивает вопросы физической коммуникации устройств или программных компонентов. Транспорт доставки пакетов — порты TCPIP, то есть он работает поверх них.

Последовательность действий: XML-данные кодируются в бинарный пакет, который и передается по каналам уровнем ниже.

Отношения в AMQP сети
Отношения между подписчиком, брокером и отправителем сообщения

Определения, принятые для AMQP сети:

  • consumer — получатель сообщения;
  • producer — создатель публикации;
  • routing key — уникальный ключ очереди, в которую требуется поместить сообщение;
  • queue — очередь, хранящая само сообщение
  • exchange — так называется точка обмена, которая производит распределение данных по очередям;
  • message — собственно передаваемые данные.

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

  1. Topic — использует данные о ключе очереди.
  2. Fanout — копирует сообщения во все созданные очереди вне зависимости от указанной информации.
  3. Direct — циклически распределяет информацию по расширенным сведениям в ключах маршрутизации. Помогает разгрузить очереди.
  4. Headers — расширенный вариант предыдущего, для движения цифровых потоков по очередям использует сведения в дополнительных атрибутах xml-структуры пакета.

Отличия протокола AMQP от подобных сетей — использование в XML синтаксиса при формировании пакетов сообщений. Такой вид передаваемых данных разрешает отправлять и принимать в них не только текстовую информацию, но и бинарную (с кодированием по алгоритму base64). Кроме того, сама структура сети – асинхронна, нет необходимости быть онлайн все время тому, кто отправляет данные, или тому, кто их получает. Главное, чтобы узел-брокер был в сети и готов обмениваться информацией.

Оборудование

виды оборудования в amqp
Виды оборудования, поддерживающего AMQP

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

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

Преимущества

Преимущество AMQP – конечно же в открытости. Исходные коды библиотек доступны, стандарт хорошо описан в сопутствующей документации. Множество различных фирм-разработчиков как программного, так и аппаратного обеспечения участвуют в его развитии, выпуская совместимые продукты.

фирмы развивающие протокол AMQP
Фирмы, помогающие развитию протокола

Кроме того, специалистам в штате организаций-потребителей, даже просто используя библиотеки, очень легко писать совместимый софт для этой сети. Дополнительно к этому AMQP поддерживает частичную совместимость на основе JMS (Java Message Service), что дает легко его интегрировать в уже действующие программные решения.

Применение

Применений подобной системе – множество, ведь в своей основе она похожа на интернет рассылки. Это и чат программы, и обмен данными между специфичными компонентами, используемыми в организации. Да и собственно перемещение информации, как в среде одной ОС, так и между разными можно проводить, используя AMQP.

Решения на основе Advanced Message Queuing Protocol применяются в больших и известных банковских структурах, таких как Bank of America, Barklays, Credit Suisse, JPMorgan Change & Co, Goldman Sachs, Deutsche Börse Group. Применяется протокол и крупными ИТ организациями, среди которых Microsoft, Cisco, RedHat, Vmware™. Все это означает только одно: протокол устоялся и надежность передачи данных проверена в достаточной степени, чтобы использовать его в больших инфраструктурах предприятия.

future2day.ru