MQTT selalu terhubung dan memuat data 4G


10

Saya sedang mengerjakan proyek IoT yang melibatkan ribuan klien MQTT yang terhubung ke broker (mosquitto) melalui router / modem 4G / WiFi. Kurang dari 10 klien terhubung ke router yang sama, dan router berasal dari tempat yang berbeda (kota yang berbeda).

Saat ini kami memiliki sangat sedikit klien dan mereka selalu terhubung dengan broker. Saya tahu dari diskusi ini bahwa tidak akan ada masalah bahkan ketika mereka akan tumbuh hingga 1000+ unit.

Pertanyaan saya adalah tentang beban lalu lintas pada koneksi 4G. Pengguna akhir takut tentang konsumsi data dengan semua "saluran" yang dibuka dan tidak digunakan. Sejauh yang saya mengerti ketika tidak ada kegiatan hanya paket keep- live yang dikirim , meskipun saya tidak dapat menemukan informasi ini dengan pasti dalam dokumentasi MQTT.

Bisakah saya menganggap lalu lintas ketika tidak ada paket yang diterbitkan diabaikan?

Jawaban:


6

The MQTT spesifikasi daftar rincian PINGREQ dan PINGRESP paket yang membentuk transaksi tetap-hidup.

Masing-masing berukuran hanya 2 byte sehingga total peristiwa tetap-hidup menggunakan total 4 byte. Karena Anda dapat mengontrol seberapa sering paket tetap hidup dikirim untuk setiap klien berdasarkan seberapa cepat Anda perlu tahu bahwa koneksi telah terputus, Anda memiliki kendali penuh seberapa banyak data yang digunakan ketika tidak ada pesan yang benar-benar dipublikasikan.

Jika Anda ingin mengurangi data lebih banyak lagi, Anda bisa menjalankan pialang terpisah sebelum router 4G yang terhubung dengan 10 perangkat yang kemudian dijembatani dengan pialang pusat. Ini akan mengurangi jumlah paket yang tetap hidup menjadi 1 per router 4G daripada 1 per klien. Ini memiliki keuntungan bahwa 10 perangkat lokal dapat terus menyampaikan pesan antara satu sama lain jika tautannya turun dan Anda dapat menggunakan pesan yang disimpan / Pesan Terakhir dan pesan Testement untuk dilacak ketika masing-masing klien turun.


Menggunakan broker perantara adalah saran yang bagus, bahkan saya khawatir itu tidak cocok dalam kasus khusus ini. Berguna untuk tahu!
Tandai

Lagi pula, saya tahu perilaku PINGREQ / RESP, tetapi yang tidak saya temukan adalah bahwa mereka adalah satu - satunya paket yang dipertukarkan ketika tidak ada aktivitas nyata (yaitu diprakarsai oleh aplikasi pengguna). Saya dapat menyimpulkan ini dari jawaban Anda, tetapi dokumen tersebut tampaknya tidak secara eksplisit menyatakan itu.
Tandai

Timer tetap-hidup disetel ulang setiap kali paket diterima, saya tidak ingat di mana dalam spesifikasi ini dikatakan di atas kepala saya
hardillb

2
Hanya ingin menunjukkan bahwa saran untuk memperkenalkan broker lokal lebih masuk akal jika kita tidak berbicara tentang 2 byte per pesan tetapi karena TCP / IP itu lebih seperti 42 byte per pesan sehingga 84 untuk satu siklus ping.
xwoker

1
@ Mark Fakta bahwa hanya paket Ping adalah satu-satunya hal yang dikirim jika tidak ada pesan yang dikirim tersirat oleh kalimat setelah tabel ini: docs.oasis-open.org/mqtt/mqtt/v3.1.1/os/…
hardillb
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.