Ini menarik perhatian saya baru-baru ini ketika saya menemukan video luar biasa di Youtube oleh:
Micheal E. Anderson: Membandingkan Teknik Perpesanan untuk IoT, OpenIoTSummit, Linux Foundation .
Slide untuk ceramahnya Tersedia di Sini
Pada Slide 26 dan 41 menit dari video dia sedang mendiskusikan tentang bagaimana (biarkan saya parafrase):
Operator seluler lebih suka konsumen IoT mereka menggunakan jenis pesan HTML , XML atau JSON karena mereka mengkonsumsi lebih banyak data. Lebih banyak data berarti mereka dapat membebani konsumen lebih banyak uang untuk layanan ini.
Saya mengerti bahwa banyak protokol eksklusif. SigFox , Wireless HART atau Z Wave memiliki kecepatan data yang lebih rendah dan mengirim data besar melalui operator tersebut bisa menjadi urusan yang mahal.
Pertanyaan
Apakah ada beberapa format pesan ringan lainnya yang digunakan untuk penggunaan dalam Protokol Proprietary yang menjadikannya solusi hemat biaya untuk konsumen IoT saat ini dan di masa depan? (Dipotret dalam gelap: beberapa format yang disebut XML atau HTML ringan atau JSON terletak di suatu tempat?)
Mungkin sesuatu seperti CBOR atau mungkin digunakan?
sumber
Jawaban:
Apakah Anda bertanya tentang protokol atau format pesan ? Kami sering keliru menggunakan istilah protokol ketika kami memaksudkan format data. Saya melakukan ini sendiri, seringkali karena perbedaannya tidak jelas bagi semua orang.
Protokol perpesanan yang digunakan dalam IoT cenderung cukup kompak, setidaknya lebih dari http dan menawarkan fitur signifikan yang penting dalam olahpesan (sesi, kontrol aliran, keandalan, dll). Format pesan adalah data dalam pesan yang dikirim. Saya berasumsi bahwa inilah yang Anda tanyakan.
Format pesan yang paling ringkas adalah format biner linting yang dipertimbangkan dengan cermat. Ini sering digunakan ketika dalam skenario bandwidth rendah ketika Anda ingin mengirim beberapa byte, dan tahu persis seperti apa byte itu. Untuk pesan yang lebih besar kerugiannya signifikan dan, secara umum, harus dihindari di semua biaya.
Saya telah melalui penilaian terperinci tentang berbagai opsi serialisasi data. Saya berharap protobuf, paket pesan menjadi cukup kompak, yang mereka. Namun, masalah kedua saya adalah menemukan perpustakaan yang dikelola dan tersedia di sejumlah platform yang berbeda, termasuk C pada perangkat.
Format yang saya setujui, secara mengejutkan, adalah JSON yang dikompresi gzip. Mudah diimplementasikan dan dipahami, berjalan di mana-mana, dan, dengan data yang saya gunakan, hampir sama, atau lebih kecil, daripada metode lain.
Berhati-hatilah juga bahwa jika Anda memiliki saluran aman seperti TLS, Anda akan tetap mengkonsumsi sepotong data (> 6KB) dalam jabat tangan TLS.
Beberapa tahun yang lalu, saya berharap format seperti buffer protokol mendominasi, tetapi tidak banyak yang benar-benar terjadi. Mungkin karena kemudahan di mana json dapat ditulis dan diuraikan (dan dikompresi). Saya suka tampilan Flatbuffers , tetapi keuntungannya lebih pada kecepatan parsing daripada kompak.
Karena Anda berada pada tahap investigasi, saya sarankan Anda menulis sedikit kode pada masing-masing, menggunakan data yang khas untuk situasi Anda, dan melakukan beberapa perbandingan. Memiliki data yang sulit ketika Anda mulai membantu mengonfirmasi pilihan Anda.
sumber
Keuntungan besar dari format berbasis markup adalah Anda mempertahankan fleksibilitas dalam memilih data apa yang Anda kirimkan. Ini sangat penting dalam ekosistem yang berkembang di mana Anda mengantisipasi layanan yang berkembang selama beberapa tahun pembangunan.
Meskipun struktur data biner yang dikodekan dengan ketat akan efisien untuk ditransmisikan, Anda harus memutuskan di muka seminimal apa strukturnya. Ketika, kemudian Anda menyadari bahwa bahkan satu bidang membutuhkan ekspansi, Anda terjebak. Bahkan meluncurkan pembaruan ke protokol itu sulit, karena Anda tidak dapat menghapus pengkodean lama sampai setiap titik akhir diperbarui.
Ini menunjukkan bahwa pendekatan optimal adalah dengan menggabungkan paket-paket minimalis dan pengkodean berbasis markup (menggunakan yang terakhir sebagai fallback). Nilai ini tergantung pada muatan bandwidth tertinggi. Jika Anda sudah sering mentransfer potongan berukuran video, mengoptimalkan data kontrol yang jarang terjadi kurang bermanfaat. Jika Anda sering melakukan transfer kecil (suhu mungkin), masuk akal untuk meminimalkan overhead dalam transmisi - tetapi mungkin hanya batching transfer yang baik.
sumber