Чи може Mosquitto підтримувати декількох брокерів?


20

Я розглядав Mosquitto для брокера MQTT повідомлень для домашньої мережі IoT, але я стурбований тим, що брокер може стати єдиною точкою відмови, яка може збити всю мою мережу, якщо вона не вдасться, оскільки всі повідомлення мають пройти через брокер і жодні повідомлення взагалі не можуть передаватися, якщо брокер переходить в офлайн з будь-якої причини (наприклад, випадкове відключення, несправність обладнання тощо)

Чи вдасться використовувати декількох брокерів із встановленим Mosquitto для підвищення надійності мережі? Якщо це можливо, чи є якісь недоліки / значні накладні витрати на використання декількох брокерів?

Відповіді:


12

Так, Mosquitto підтримує декількох брокерів.

Mosquitto використовує MQTT Bridges для з'єднання декількох посередників, таким чином, маршрутизуючи повідомлення між цими брокерами-комарами. Таким чином можна встановити міст між вашим основним брокером до резервної системи. Однак не створюйте циклів. Якщо обидва брокери працюють, ваші клієнти публікують у первинному брокері, який потім публікує тему кожному абоненту, включаючи мостовий вторинний брокер. Якщо первинне не вдається, ваші клієнти відзначають (З'єднання відмовлено, сервер недоступний) і можуть резервно опублікувати безпосередньо в другорядних. (Я ще не впевнений, як це виправити навпаки.) Оскільки ви не очікуєте, що клієнт буде несанкціоновано відключитись, я думаю, що "Остання воля та заповіт" тут не застосовуються (це використовувалося б для того, щоб повідомляти брокера від імені відключеного клієнта).

Однак у цій публікації перелічені недоліки такого підходу, особливо щодо масштабованості та доступності:

  • Механізми маршрутизації мосту не мають масштабування, якщо ви пересилаєте всі повідомлення на інші мости
  • Частка зв'язку між мостами є важливою, якщо ви використовуєте QoS 2 між мостами (що вам потрібно зробити, якщо ви хочете поширювати повідомлення між клієнтами, підключеними до різних мостів)
  • Немає відмови та високої доступності. Якщо брокерський міст провалиться, повідомлення можуть загубитися
  • Клієнти MQTT не можуть бути переміщені до інших вузлів мосту. Сеанси MQTT не копіюються через мости, тому ви втратите всі свої повідомлення в черзі та підписки, якщо будете використовувати постійні сеанси MQTT.

10

У .NET реалізація дозволяє підключити одного клієнта до одного брокера, тому я б сказав, чому б ні ...

MqttClient mqtt;
string broker = ini.getData("MQTT", "hostname");
mqtt = new MqttClient(broker);
mqtt.MqttMsgPublishReceived += mqtt_received;
mqtt.Connect(Guid.NewGuid().ToString());

Річ у тому, що ви повинні керувати дублікатами у разі відмови, коли інший брокер почне надсилати повідомлення або попередити клієнтів.

Існує декілька можливостей, як кожен брокер підписується один на одного і встановлює Останню волю та Заповіт, щоб попередити себе та своїх клієнтів про те, що відбудеться резервний запас!


Як брокер може підписатися або більше подібний до підключення до іншого брокера?
Бенс Каулікс

1
Я думав про клієнта, вкладеного на сервер брокера.
Гуфаліт

@Goufalite, це дійсно корисно для MQTT загалом, дякую. Чи трапляється вам дізнатися більше про Mosquitto , брокера, про якого я обговорював у питанні?
Aurora0001

Це найнижча річ, яку я знаю про MQTT (я не розумів, що існував інший брокер, як HiveMQ, перш ніж прийти на IoT SE). Що ще ви хотіли б знати? Ви маєте на увазі реалізацію?
Гуфаліт

@Goufalite просто зацікавив, чи має сам Mosquitto спосіб паралельної роботи декількох брокерів. Якщо ви можете запропонувати спосіб зробити це за допомогою Mosquitto або посилання на документацію, це було б чудово.
Aurora0001
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.