Mosquitto birden fazla aracıyı destekleyebilir mi?


20

Ben Üzerine düşündüğünüz mosquitto bir ev IOT ağı için MQTT mesajı komisyoncu için, ama tüm mesajları geçmek zorunda beri komisyoncu, başarısız olursa benim bütün şebekeyi çökertmek olabilir başarısızlık tek nokta olabileceğini endişeleniyorum aracı herhangi bir nedenle çevrimdışı olursa (örneğin yanlışlıkla fişten çıkarma, donanım arızası, vb.) hiçbir aracı iletilmez ve iletiler iletilemez.

Ağın güvenilirliğini artırmak için Mosquitto yüklü birden fazla aracı kullanmak mümkün müdür? Mümkünse, birden fazla aracı kullanmanın dezavantajları / önemli ek yükleri var mı?

Yanıtlar:


12

Evet, Mosquitto birden fazla aracıyı destekliyor.

Mosquitto , birden fazla aracıyı bağlamak ve böylece bu sivrisinek aracıları arasındaki mesajları yönlendirmek için MQTT Köprüleri kullanır . Bu şekilde, birincil aracı ile yedek sistem arasında bir köprü kurulabilir. Gerçi döngüler oluşturmaktan kaçının. Her iki aracı da istemcilerinizi çalıştırırsa, birincil aracıda yayımlanır ve bu da konuyu köprülü ikincil aracı da dahil olmak üzere her bir aboneye yayınlar. Birincil başarısız olursa, istemcileriniz not edilir (Bağlantı Reddedildi, Sunucu kullanılamıyor) ve doğrudan ikincilde yayınlamak için geri dönebilir. (Diğer yol boyunca nasıl düzeltebileceğimden henüz emin değilim.) İstemcinin nezaketle bağlantısını kesmesini beklemediğiniz için "Son İrade ve Ahit" in burada geçerli olmadığını düşünüyorum (komisyoncu bilgilendirmek için kullanılır bağlantısı kesilmiş bir müşteri adına).

Ancak bu yazı , özellikle ölçeklenebilirlik ve kullanılabilirlik açısından bu yaklaşımın dezavantajlarını listelemektedir:

  • Tüm iletileri diğer köprülere yönlendirirseniz köprü yönlendirme mekanizmaları iyi ölçeklenmez
  • Köprüler arasında QoS 2 kullanıyorsanız (farklı köprülere bağlı istemciler arasında mesajlar yaymak istiyorsanız yapmanız gereken) köprüler arasındaki iletişim yükü önemlidir.
  • Yük devretme ve yüksek kullanılabilirlik yoktur. Aracı köprüsü çökerse, iletiler kaybolabilir
  • MQTT istemcileri diğer köprü düğümlerine geçirilemez. MQTT oturumları köprüler arasında çoğaltılmaz, bu nedenle MQTT kalıcı oturumları kullanıyorsanız, sıraya alınan tüm iletilerinizi ve aboneliklerinizi kaybedersiniz.

10

.NET'te uygulama bir istemciyi bir aracıya bağlamaya izin verir, bu yüzden neden olmasın diyebilirim ki ...

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

Şey, diğer aracının ileti göndermeye başlayacağı veya istemcileri uyaracağı bir yedek durumunda kopyaları yönetmeniz gerekir .

Her brokerın birbirlerine abone olması ve kendilerini ve müşterilerini bir geri dönüş olacağı konusunda uyarmak için bir Son İrade ve Ahit belirleme gibi çeşitli olasılıklar olabilir!


Bir broker nasıl abone olabilir veya daha fazlası başka bir broker'a bağlanabilir?
Bence Kaulics

1
Aracının sunucusunda yuvalanmış bir istemci düşünüyordum.
Goufalite

@ Goufalite, bu genel olarak MQTT için gerçekten yararlı, teşekkürler. Soruda tartıştığım komisyoncu Mosquitto hakkında daha fazla şey biliyor musun ?
Aurora0001

Bu MQTT hakkında bildiğim en düşük şey (IoT SE'ye gelmeden önce HiveMQ gibi başka bir broker olduğunu fark etmedim). Başka ne bilmek istersiniz? Uygulama mı demek istiyorsun?
Goufalite

@ Goufalite sadece Mosquitto'nun kendisinin paralel olarak birden fazla broker çalıştırmanın bir yolu olup olmadığıyla ilgileniyordu. Eğer Mosquitto ile yapmak için bir yol önerebilir veya harika olurdu bağlantı belgeleri.
Aurora0001
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.