İletiler kaybından ve çoğaltmadan kaçınarak cihazlar arasında verileri nasıl senkronize edebilirim?


9

Veri bir veritabanında depolanan birbirlerine veri gönderen bir IoT ağım var.

Sırayla 10 paket / API isteği gönderen bir cihazım varsa, bazen yalnızca birkaç tanesi hedeflerine ulaşır. Örneğin, 1, 3 ve 9 numaralı paketler hedeflerine ulaşabilirken diğerleri ulaşamaz.

Bu paketleri nasıl izleyebilir ve çoğaltma veya sızıntı olmadan hepsinin hedeflerine ulaşmasını nasıl sağlayabilirim? Paket kaybeden tek bir cihaz yerine gerçek yaşam senaryosunda binlerce cihaz olmasını bekliyorum.

Yanıtlar:


6

Genellikle, istemcinin herhangi bir paket / ileti alıp almayacağını ve hangi sırayla çoğaltılmasına izin verilip verilmeyeceği konusunda güçlü garantileri olan bir protokol seçmeniz gerekir.

Birbirine küçük - orta büyüklükte mesajlar gönderen bir IoT cihazları ağı için , Hizmet Kalitesi 2 ile MQTT kullanmak, kullanım durumunuza çok uygun gibi görünmektedir. HiveMQ bağlantısında belirtildiği gibi:

En yüksek QoS 2'dir, her mesajın karşı taraf tarafından yalnızca bir kez alınmasını garanti eder. En güvenli ve aynı zamanda en yavaş servis seviyesidir. Garanti, gönderen ve alıcı arasında iki akış tarafından sağlanır.

QoS 2'nin mesajların sırasını koruduğunu ve belirtildiği gibi çoğaltılmış mesajları önlediğini unutmayın.

Bir Orada önemli bir benzer olan standart QoS 0 kıyasla MQTT QoS 2 (kullanmada havai mesaj yangın ve unut, aynı komisyoncu bulmuyor, o zaman mesaj yeniden gönderilmesini almaz ve sonsuza kadar gider ) - QoS 2 için 4 mesaj gerekir ( PUBLISHgönderenden, PUBRECaracıdan, PUBREListemciden, PUBCOMParacıdan), bu nedenle işlenmesi genellikle daha uzun sürer, daha fazla kaynak alır (dolayısıyla daha uzun radyo yayınları ve kısıtlı uç noktalarda daha fazla güç kullanımı).

Bir MQTT QoS 2 mesajı, aracıdan onay alana kadar gönderenden tekrar tekrar gönderilecektir, bu nedenle sonunda bağlantınız kusurlu olsa bile mesajınız iletilmelidir.

Konu tabanlı bir yayınlama-abone olma protokolünün kullanım durumunuz için uygun olup olmadığını belirlemek size bağlıdır; Wikipedia makalesi bir fikir edinmenize yardımcı olabilir.


1
Çalışmanız ve yanıtınız için @ Aurora0001'e teşekkürler. HTTP protokolü tabanlı mesaj iletişimi / zaman uyumsuzluk veya IP paket tabanlı herhangi bir mekanizma ya da bir tür yangın diyebilir ve unutabilir misiniz? Bir senaryo diyelim - Sistem A, Sistem B'ye mesaj gönder. Sistemde - 1,2,3,4,5 gibi sırayla gönderilmek üzere oluşturulmuş / hazırlanmış 5 mesaj. B sisteminde - 1,4,5 gibi bir mesaj aldı. Burada B sistemi 2 3 için kayıt / paket / veri kaçırdı. Peki, minimum trip / bant genişliği / ağ kullanarak System AB arasında eksik, çoğaltma kaydı olmadan senkronizasyon yapmak için mekanizma ne olabilir
user1467280-Satyajit gerçeği
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.