Zwróciłem na to uwagę niedawno, gdy znalazłem niesamowite wideo na Youtube:
Slajdy z jego przemówienia są dostępne tutaj
Na slajdzie 26 i 41 minutach filmu omawia, w jaki sposób (pozwólcie, że sparafrazuję):
Operatorzy komórkowi wolą, aby ich konsumenci IoT używali wiadomości typu HTML , XML lub JSON, ponieważ zużywają więcej danych. Więcej danych oznacza, że mogą obciążyć konsumentów większą kwotą za usługę.
Rozumiem, że jest wiele protokołów własności. SigFox , Wireless HART lub Z Wave mają niższe prędkości transmisji danych, a przesyłanie nieporęcznych danych przez takich nośników może być kosztowną sprawą.
Pytanie
Czy istnieją inne lekkie formaty wiadomości używane w protokołach zastrzeżonych, co czyni je ekonomicznymi rozwiązaniami dla obecnych i przyszłych konsumentów Internetu Rzeczy? (Strzał w ciemność: gdzieś leży jakiś format zwany lekkim XML, HTML lub JSON ?)
Może coś takiego jak CBOR jest lub może jest używane?
źródło
Odpowiedzi:
Czy pytasz o protokół lub format wiadomości ? Często niewłaściwie używamy terminu protokół, gdy mamy na myśli format danych. Robię to sam, często dlatego, że rozróżnienie nie jest jasne dla wszystkich.
Protokoły przesyłania wiadomości używane w IoT są zazwyczaj dość zwarte, przynajmniej bardziej niż http i oferują istotne funkcje, które są ważne w przesyłaniu wiadomości (sesje, kontrola przepływu, niezawodność itp.). Format wiadomości to dane w wiadomości, które zostaną wysłane. Zakładam, że o to pytasz.
Najbardziej kompaktowy format wiadomości to starannie przemyślany, ręcznie zwijany format binarny. Jest często używany w scenariuszach o niskiej przepustowości, gdy chcesz wysłać kilka bajtów i dokładnie wiedzieć, jak te bajty wyglądają. W przypadku większych komunikatów wady są znaczące i ogólnie należy za wszelką cenę unikać.
Przeszedłem szczegółową ocenę wielu różnych opcji serializacji danych. Spodziewałem się, że protobuf, pakiet wiadomości będzie dość zwarty, czym były. Jednak moim drugim problemem było znalezienie bibliotek, które były utrzymywane i dostępne na wielu różnych platformach, w tym C na urządzeniu.
Niespodziewanie formatem, który wybrałem, był skompresowany gzip JSON. Jest łatwy do wdrożenia i zrozumienia, działa wszędzie, a przy danych, których używałem, był mniej więcej taki sam lub mniejszy niż inne metody.
Uważaj również, że jeśli masz bezpieczny kanał, taki jak TLS, i tak zużyjesz porcję danych (> 6 KB) podczas uzgadniania TLS.
Kilka lat temu spodziewałem się, że dominują takie formaty jak bufory protokołów, ale tak naprawdę niewiele się wydarzyło. Prawdopodobnie z powodu łatwości, z jaką json może być zapisany i parsowany (i skompresowany). Podoba mi się wygląd Flatbufferów , ale zaletą jest bardziej szybkość przetwarzania niż kompaktowość.
Ponieważ jesteś na etapie dochodzenia, sugeruję, aby napisać trochę kodu na każdym z nich, używając danych typowych dla twojej sytuacji, i dokonać porównań. Posiadanie twardych danych na początku pomaga potwierdzić twoje wybory.
źródło
Dużą zaletą formatu opartego na znacznikach jest to, że zachowujesz elastyczność w wyborze przesyłanych danych. Jest to niezwykle ważne w ewoluującym ekosystemie, w którym spodziewamy się usług ewoluujących w ciągu kilku lat rozwoju.
Chociaż ściśle zakodowana struktura danych binarnych będzie wydajna do przesyłania, musisz przynajmniej z góry zdecydować, jak będzie wyglądać struktura. Kiedy później zdasz sobie sprawę, że nawet jedno pole wymaga ekspansji, utkniesz. Nawet wdrożenie aktualizacji protokołu jest trudne, ponieważ nie można zdezaktualizować starego kodowania, dopóki każdy punkt końcowy nie zostanie zaktualizowany.
Sugeruje to, że optymalnym podejściem jest mieszanie minimalistycznych pakietów i kodowania opartego na znacznikach (używanie tego drugiego jako rezerwowego). Wartość tego zależy od największych obciążeń przepustowości. Jeśli już przesyłasz często fragmenty wideo, optymalizacja rzadkich danych kontrolnych jest mniej opłacalna. Jeśli masz częste małe transfery (być może temperatura), warto zminimalizować narzut w transmisji - ale może po prostu grupowanie transferów jest równie dobre.
źródło