Лекція 2.2. Передача даних в архітектурі IIoT: MQTT

5. Рівні якості обслуговування MQTT

У MQTT є три рівня якості обслуговування:

  • QoS-0 (незавірена передача) - це мінімальний рівень QoS. Це аналогічно моделі «спалити і забути», докладно описаної в деяких бездротових протоколах. Це найефективніший процес доставки без підтвердження одержувачем повідомлення і без повторної передачі повідомлення відправником;
  • QoS-1 (гарантована передача) - цей режим гарантує доставку повідомлення хоча б один раз одержувачу. Повідомлення може бути доставлено кілька разів, і одержувач відправить назад підтвердження з відповіддю PUBACK;
  • QoS-2 (гарантований сервіс для додатків) - це найвищий рівень QoS, який переконується в доставці і інформує відправника і одержувача, що повідомлення було передано правильно. Цей режим генерує більше трафіку через багатокрокове рукостискання між відправником і отримувачем. Якщо одержувач отримує повідомлення з рівнем обслуговування QoS-2, він відповість відправнику повідомленням PUBREC. Це підтверджує повідомлення, і відправник відповість повідомленням PUBREL. PUBREL дозволяє одержувачеві безпечно відкинути будь-які повторні передачі цього повідомлення. Потім PUBREL підтверджується одержувачем за допомогою PUBCOMP. Поки повідомлення PUBCOMP передано не буде, приймач буде кешувати вихідне повідомлення для забезпечення безпеки.

QoS в MQTT визначається і контролюється відправником, і у кожного відправника може бути своя політика.

Типові випадки використання:

  • QoS-0 слід використовувати, коли повідомлення не потрібно зберігати в черзі. QoS-0 найкраще підходить для провідного підключення або коли система сильно обмежена в пропускної здатності;
  • Qos-1 слід використовувати за замовчуванням. QoS1 набагато швидше, ніж QoS2, і значно знижує вартість передачі;
  • QoS-2 - для критично важливих застосунків. Крім того, для випадків, коли повторна передача дубльованого повідомлення може привести до помилок.