MQTT her zaman bağlı ve 4G veri yükü


10

4G / WiFi yönlendirici / modem aracılığıyla bir broker (mosquitto) bağlı binlerce MQTT istemcisi içeren bir IoT projesi üzerinde çalışıyorum. Aynı yönlendiriciye 10'dan az istemci bağlı ve yönlendiriciler farklı yerlerden (farklı şehirler) geliyor.

Şu anda çok az müşterimiz var ve bunlar her zaman aracıya bağlı. Bu tartışmadan 1000'den fazla birime kadar büyüyecek olsalar bile sorun olmayacağını biliyorum .

Benim sorum 4G bağlantısındaki trafik yükü hakkında. Son kullanıcı, tüm bu "kanallar" açılmış ve kullanılmamış olarak veri tüketiminden korkmaktadır. Hiçbir etkinlik olmadığında anladığım kadarıyla, sadece canlı tutma paketleri gönderilir , ancak MQTT belgelerinde bu bilgileri kesin olarak bulamıyorum.

Hiçbir paket yayınlanmadığında trafiğin önemsiz olduğunu varsayabilir miyim?

Yanıtlar:


6

MQTT spesifikasyonu, canlı tutma işlemini oluşturan PINGREQ ve PINGRESP paketlerinin ayrıntılarını listeler .

Her biri yalnızca 2 bayt boyutundadır, bu nedenle tam canlı bir etkinlik toplamda 4 bayt kullanır. Bağlantının kesildiğini ne kadar hızlı bilmeniz gerektiğine bağlı olarak her istemci için canlı tutma paketlerinin ne sıklıkta gönderileceğini kontrol edebildiğiniz için, hiçbir mesaj yayınlanmadığında ne kadar verinin kullanıldığını tam olarak kontrol edebilirsiniz.

Veri yükünü daha da azaltmak isterseniz, 10 cihazın bağlandığı 4G yönlendiriciden önce çalışan ve daha sonra merkezi brokere köprülenen ayrı bir aracı olabilir. Bu, canlı tutma paketlerinin sayısını istemci başına 1 yerine 4G yönlendirici başına 1'e düşürür. Bunun avantajı, bağlantının kopması durumunda 10 yerel cihazın birbirinden mesaj geçirmeye devam edebilmesi ve istemcilerin ne zaman çöktüğünü izlemek için tutulan mesajları / Son İrade ve Test mesajlarını kullanabilmenizdir.


Bir ara broker kullanmak iyi bir tavsiye, korkarım ki bu özel duruma uymuyor. Bilmenizde fayda var!
Mark

Her neyse, PINGREQ / RESP'nin davranışını biliyordum, ama bulamadığım şey, gerçek bir etkinlik olmadığında (yani kullanıcı uygulamaları tarafından başlatıldığında) değiştirilen tek paketler oldukları . Bunu cevabınızdan çıkarabilirim, ancak dokümanlar bunu açıkça belirtmiş gibi görünmüyor.
Mark

Canlı tutma zamanlayıcısı her paket alındığında sıfırlanır, spesifikasyonda bunun kafamın üst kısmından söylendiğini hatırlayamıyorum
hardillb

2
Sadece mesaj başına 2 bayttan bahsetmiyorsak yerel bir broker tanıtmak için önerinin daha mantıklı olduğunu belirtmek istedim, ancak TCP / IP nedeniyle mesaj başına 42 bayt gibi, yani bir ping döngüsü için 84.
xwoker

1
@Mark Hiçbir mesaj gönderilmezse gönderilen sadece Ping paketlerinin olması, bu tablodan sonra verilen cümleler tarafından ima edilmektedir: docs.oasis-open.org/mqtt/mqtt/v3.1.1/os/…
hardillb
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.