Чи може 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.