Message Protocol
Список протоколов
MQTT
(Message Queue Telemetry Transport) - упрощенный сетевой протокол, работающий поверх TCP/IP (протоколов транспортного уровня)AMQP
(Advanced Message Queuing Protocol) - протокол обмена сообщениями между компонентами системыXMPP
(Extensible Messagingand Presence Protocol) - расширяемый протокол обмена сообщениями и данными о присутствииSTOMP
(Simple/Streaming Text Oriented Messaging Protocol) - потоковый тексто-ориентированный протокол обмена сообщениямиDDS
(Data Distribution Service Служба распространения данных) - сервис распространений данных для систем реального времени
Описание протоколов
Структура MQTT сети
* Broker
- Брокер является посредником между агентами (серверная часть)
* Agent
- Агент может быть подписчиком или издателем
* Publisher
- агент издатель публикует сообщения в тему (Topic)
* Subscriber
- агент подписчик, подписавшись на тесму (Topic) получает сообщения из них
MQTT поддерживает 3 уровня качества обслуживания (QoS)
* At most once
- уровень качества обслуживания, который задействует стратегию «доставка максимум одного сообщения». То есть, сообщение посылается 1 раз без контроля доставки. Сообщение либо доставлено, либо нет.
* At least once
- уровень, который гарантирует, что как минимум одно сообщение будет доставлено. Издатель публикует дубликаты сообщения с определенной периодичностью до тех пор, пока не получит подтверждения от подписчика, что сообщение доставлено. Таким образом подписчик может получить несколько сообщений. Для обработки таких ситуаций, зачастую дубликаты сообщений помечаются соответствующим образом.
* Exactly once
- подход, при котором сообщение будет доставлено строго один раз. Самый надежный, но при этом самый ресурсоемкий уровень качества обслуживания.
AMQP (Advanced Message Queuing Protocol) - усовершенствованный протокол организации очереди сообщений. Данный протокол ориентирован на пересылку транзакционных сообщений между серверами. Изначально, протокол был создан для банковской отрасли и рассчитан на обработку тысяч транзакций, организованных в очередь.
Протокол AMQP работает поверх транспортного протокола TCP для обеспечения надежного соединения без потери сообщений с подтверждением о получении каждого пакета.
Выделяют три основных понятия протокола.
* Exchange
- точка обмена
* Queue
- очередь
* Routing
- key (маршрут).
XMPP, или Jabber - протокол мгновенного обмена сообщениями, создавался для связи между клиентами с помощью текстовых сообщений и ориентирован в первую очередь на приложения для передачи сообщений по сети, в том числе в компьютерных онлайн-играх с сервисами аутентификации, поддержки статуса присутствия, работы в режиме чата и передаче игровой информации. Протокол передает сообщения используя сокеты TCP. Взаимодействие между сервером и клиентом выполняется асинхронно путем передачи так называемых XML станс (XML Stanzas) Протокол использует SASL и TLS для создания безопасного соединения, в данный момент в том числе развивается подход шифрования end-to-end
STOMP - простой потоковый текст-ориентированной протокол обмена сообщениями, основанный на фреймах на подобие HTTP. Структура фрейма состоит из таких компонент, как команды, опциональные заголовки и содержимое сообщения.
DDS - сервис распространения данных для систем реального времени. Целью протокола является обеспечить масштабируемость, непрерывность, высокую производительность и безопасность, используя модель издатель-подписчик. Протокол способен эффективно доставлять миллионы сообщений в секунду множеству получателей. Протокол призван обеспечить режим реального времени, масштаб которого зачастую измеряется в микросекундах. Устройствам в таких условиях необходимо поддерживать связь с другими устройствами с быстрым обменом данных, надежное TCP соединение сильно ограничивает такую передачу.
Для того, чтобы обеспечить достаточную скорость обмена данными, DDS предлагает несколько уровней качества сервиса. Кроме того, протокол поддерживает методы фильтрации и отбора данных по адресам назначения, при этом количество синхронных адресатов может исчисляться тысячами. DDS реализует шину для связи между устройствами на основе реляционной модели данных. Так же как и в реляционной БД, протокол обеспечивает доступ к чтению и изменению данных одновременно многим клиентам. Протокол призван обеспечить децентрализованную сеть между множеством устройств в топологии «шина», позволяя отправку до 10000 сообщений в секунду на каждое подключенное устройство с задержкой не более 100 микросекунд. За счет использования шины, становится не сложным подключение новых устройств к существующей сети. По-сравнению с протоколом MQTT, DDS имеет гораздо более детальную конфигурацию качества сервиса.
Ссылки:
Денис Валентинович