Przypadki użycia MQTT: Do czego służy MQTT?
Published: 2024-02-07 02:08:22

Do czego służy MQTT?
--------------------

[MQTT](https://www.pubnub.com/guides/mqtt/) to lekki protokół przesyłania wiadomości używany zazwyczaj w urządzeniach IoT, które zostały zaprojektowane tak, aby były energooszczędne i zużywały minimalną przepustowość.

Protokół MQTT działa za pośrednictwem protokołu [TCP/IP](https://www.pubnub.com/guides/tcp-ip/) i opiera się na dwukierunkowym modelu [publikowania i subskrybowania](https://www.pubnub.com/guides/everything-you-need-to-know-about-pub-sub/) z bezstratną komunikacją, zapewniając, że wiadomości MQTT są dostarczane wydajnie i bez strat.

MQTT został zbudowany jako protokół o niskim narzucie, który mocno uwzględnia ograniczenia przepustowości i procesora. Został zaprojektowany z myślą o działaniu w środowisku wbudowanym, gdzie niezawodnie i skutecznie zapewniałby drogę komunikacji.

MQTT jest zasadniczo protokołem typu publikuj/subskrybuj (pub/sub). Pozwala klientom łączyć się jako wydawca, subskrybent lub obaj z określonymi tematami. Użytkownik łączy się z brokerem, który obsługuje przekazywanie wszystkich wiadomości, gdzie każdy klient jest identyfikowany przez unikalny identyfikator klienta.

### **Rzeczywisty przykład i przypadek użycia MQTT**

MQTT jest powszechnie używany w [aplikacjach IoT](https://www.pubnub.com/solutions/iot-device-control/) do łączenia się i komunikowania z urządzeniami o niskim poborze mocy, takimi jak czujniki, siłowniki i urządzenia domowe, efektywnie zarządzając ładunkiem przesyłanych danych.

W rolnictwie MQTT służy do monitorowania czynników środowiskowych, takich jak wilgotność gleby, temperatura i wilgotność, umożliwiając rolnikom podjęcie odpowiednich działań. W automatyce przemysłowej MQTT może monitorować kompleksowy proces produkcyjny, zapewniając stałą jakość i identyfikując problemy systemowe w łańcuchu produkcyjnym. W transporcie MQTT jest używany do monitorowania sygnalizacji świetlnej, parkometrów i lokalizacji transportu publicznego w czasie rzeczywistym, przy jednoczesnym zachowaniu ekosystemu i niskich wymagań dotyczących przepustowości.

### **Dlaczego warto używać MQTT zamiast HTTP?**

[HTTP](https://www.pubnub.com/guides/http/) i MQTT to dwa bardzo różne protokoły komunikacyjne wykorzystywane do różnych celów.

HTTP to protokół typu żądanie/odpowiedź, który dostarcza dane tylko w odpowiedzi na żądanie klienta. Jest przeznaczony dla dużych ilości danych i jest powszechnie używany do przesyłania stron internetowych, obrazów i filmów. MQTT to protokół pub/sub, który umożliwia asynchroniczne dostarczanie wiadomości, przy czym wielu klientów może subskrybować pojedynczy temat i odbierać wiadomości od wydawcy lub wydawców. MQTT jest zoptymalizowany pod kątem niewielkich ilości danych, ale jest bardziej wydajny niż HTTP pod względem narzutu sieciowego i zużycia energii przez urządzenie, co czyni go odpowiednim wyborem dla aplikacji wymagających niskiej przepustowości i minimalnego zużycia energii, takich jak te zarządzane przez usługi AWS IoT.

### W jakich językach napisany jest MQTT?

MQTT jest tylko protokołem i może być napisany w wielu językach. Jednak biblioteki klienckie MQTT - które są używane do komunikacji za pomocą protokołu MQTT - są dostępne w wielu językach, takich jak [C/C++](https://www.pubnub.com/docs/sdks/windows-cpp/api-reference/publish-and-subscribe), [Java](https://www.pubnub.com/docs/sdks/java/api-reference/publish-and-subscribe), Python i [JavaScript - w tym](https://www.pubnub.com/guides/javascript/) [Node.js](https://www.pubnub.com/blog/nodejs-websocket-programming-examples/), Ruby, Go, PHP i Swift. Biblioteka kliencka MQTT komunikuje się za pośrednictwem brokera MQTT, który jest również dostępny w kilku językach programowania.

**Jak działa MQTT?**
--------------------

MQTT jest niezwykle elastycznym protokołem, ale istnieją tylko dwa podstawowe podmioty: klient MQTT i broker MQTT.

### Jak działają klienci MQTT?

Klientem MQTT może być dowolny punkt końcowy, który implementuje protokół MQTT. W przypadku IoT klientem jest podłączone urządzenie, takie jak czujnik, monitor lub płytka Arduino, ale MQTT nie ogranicza się do IoT, klientem może być również na przykład smartfon lub laptop.

Klienci MQTT nie komunikują się bezpośrednio ze sobą. Mimo to wszystkie interakcje są "pośredniczone" przez komponent serwerowy określany jako Broker MQTT, który znajduje się pomiędzy klientami i obsługuje routing wiadomości.

### Czym jest grupowanie MQTT?

Cała komunikacja w MQTT jest pogrupowana w "tematy". Klienci MQTT mogą publikować wiadomości w tematach i subskrybować otrzymywanie wiadomości od innych. Temat może być dowolnym ciągiem znaków i jest przeznaczony do grupowania tematów o wspólnym zainteresowaniu, na przykład aktualizacje czujników byłyby publikowane w temacie, podobnie jak wiadomości na czacie grupowym, w zależności od przypadku użycia.

### Czym jest broker MQTT?

Broker jest odpowiedzialny za zarządzanie tym, którzy klienci są subskrybentami poszczególnych tematów, odbieranie wiadomości publikowanych w danym temacie i wysyłanie tej wiadomości do każdego klienta subskrybującego aktualizacje. Gdy połączenie między klientem a brokerem zostanie utracone, broker jest również odpowiedzialny za buforowanie wiadomości i dostarczanie jej do klienta po ponownym nawiązaniu połączenia.

![](https://pubnub.com/cdn/3prze68gbwl1/010wxh2h4hFBh3nJ3bSSfV/5534ff8b8041c7634edf9a9e430213cb/MQTT_Brokers.png)

### **Jakie brokery MQTT są dostępne?**

Broker MQTT ma fundamentalne znaczenie dla protokołu MQTT i może być uważany za serwer MQTT. Jak wspomniano wcześniej, broker znajduje się pomiędzy wszystkimi klientami i ułatwia komunikację.

Istnieje wiele brokerów MQTT, zarówno open source, jak i zastrzeżonych, a jedną z najważniejszych decyzji architektonicznych każdego wdrożenia opartego na MQTT jest sposób hostowania brokera. Ponieważ MQTT został zaprojektowany do działania na bardzo dużą skalę, każda architektura brokera będzie musiała się odpowiednio skalować. Większość wdrożeń korporacyjnych będzie polegać na hostowanych w chmurze, zastrzeżonych ofertach, więc nie mają one żadnych obaw związanych z infrastrukturą, chociaż dostępne są również opcje samodzielnego hostowania.

Siedząc pomiędzy całą komunikacją, broker może przechowywać wiadomości i prowadzić bezpieczny rejestr wszystkich sesji; klienci są od siebie odizolowani, więc bezpieczeństwo klienta i luki w zabezpieczeniach mogą być sandboxowane, a w zależności od topologii sieci, broker może zmniejszyć ruch w sieci jako całości i pozwala na bardziej wydajny routing.

Jak korzystać z MQTT i Pub/Sub
------------------------------

Każdy klient obsługujący protokół MQTT może subskrybować i publikować tematy, ale cała komunikacja odbywa się za pośrednictwem brokera, jak pokazano w przykładowym modelu poniżej.

![](https://pubnub.com/cdn/3prze68gbwl1/1ydm5PYB4ietnpbnz0faTk/6995f5a911c1e73da1b6936c39ac1a7c/MQTT_and_Pub_sub.png)

**Mamy własnego brokera MQTT,** [**most MQTT**](https://www.pubnub.com/docs/sdks/mqtt)**, aby płynnie zintegrować PubNub z rozwiązaniem MQTT. Więcej informacji można znaleźć na końcu tego artykułu**.

**Funkcje protokołu MQTT**

MQTT, choć często uważany za rozwiązanie IoT, jest po prostu protokołem, na którym opiera się wiele znanych produktów IoT. Wiele cech MQTT sprawia, że szczególnie dobrze nadaje się do wydajnej komunikacji między urządzeniami:

**Łatwość uruchomienia**

MQTT istnieje już od dłuższego czasu i istnieje wiele solidnych, niezawodnych i skalowalnych rozwiązań własnych i open-source. Te istniejące wcześniej komponenty MQTT mogą być używane we wszystkich projektach, od dużych rozwiązań po projekty pasjonackie, bez modyfikacji i niezależnie od doświadczenia programisty.

**Niezawodność i konfiguracja**

MQTT ma koncepcję jakości usług (QoS), omówioną szczegółowo później, która kolejkuje i buforuje wiadomości na brokerze MQTT, dostarczając je do klienta po ponownym nawiązaniu połączenia. Działa to szczególnie dobrze w przypadku częściowo podłączonych urządzeń lub klientów z przerywaną łącznością, takich jak urządzenia IoT.

**Klient nie musi brać pod uwagę architektury rozwiązania**

Dzięki MQTT publikujesz wiadomości do tematu i odbierasz je, gdy są dostępne. Jako klient nie musisz się martwić o nawiązanie lub ponowne nawiązanie połączenia ani o to, czy odbiorca (odbiorcy) nasłuchują twoich wiadomości, to "po prostu działa".

**Zaprojektowany z myślą o skalowalności**

MQTT może poradzić sobie z dowolną skalą wymaganego rozwiązania, od startupów po globalne firmy. Najbardziej znany Facebook Messenger używa MQTT do komunikacji.

### **Cykl życia sesji MQTT**

MQTT opiera się na protokole [TCP/IP](https://www.geeksforgeeks.org/tcp-ip-model/) w zakresie łączności, więc podąża za podobnym cyklem życia

**Połączenie**

Klient MQTT inicjuje połączenie z brokerem MQTT. Zazwyczaj odbywa się to za pośrednictwem standardowych portów MQTT[(1883/883](https://5gcroco.eu/images/templates/rsvario/images/5GCroCo_MQTT_webseminar.pdf) odpowiednio dla bezpiecznych i niezabezpieczonych połączeń).

**Uwierzytelnianie**

Protokół MQTT nie ma żadnych względów uwierzytelniania poza [TLS](https://www.pubnub.com/guides/ssl-tls/) dla bazowego połączenia TCP/IP, co jest wystarczające dla większości przypadków użycia.

**Publikowanie / subskrybowanie**

Po nawiązaniu połączenia klienci mogą publikować lub subskrybować tematy w celu wysyłania i odbierania wiadomości.

**Rozłączanie**

Rozłączenie może być zainicjowane przez klienta lub brokera i spowoduje zakończenie sesji MQTT po przetworzeniu wszystkich trwających żądań.

![](https://pubnub.com/cdn/3prze68gbwl1/1jvUkts6It8DfsYNqDpLDx/78c82a87b78a21684b6549c7ff66d536/MQTT_lifecycle_chart.png)

### **Jakość usług MQTT (QoS)**

[Quality of](http://www.steves-internet-guide.com/mqtt-which-qos-to-use/) Service pozwala projektantowi rozwiązania określić, jak niezawodne powinno być połączenie MQTT, ogólnie rzecz biorąc, im bardziej niezawodne połączenie, tym większy potencjalny narzut pamięci dla ponawiania prób i przechowywania wiadomości.

**QoS -1**

Wiadomość jest wysyłana tylko raz, a klient i broker nie podejmują żadnych dodatkowych kroków w celu potwierdzenia dostarczenia. Jest to również znane jako "odpal i zapomnij".

Dotyczy to tylko wiadomości wysyłanych przez klienta. Po odebraniu wiadomości przez brokera są one traktowane jako QoS 0

**QoS 0**

Nadawca i odbiorca angażują się w uzgadnianie, aby upewnić się, że otrzymano tylko jedną kopię wiadomości. Zapewnia to dostawę i pozwala uniknąć wysyłania wielu kopii wiadomości.

**QoS 1**

Wiadomość jest wysyłana wielokrotnie, dopóki odbiorca nie potwierdzi jej otrzymania. Działa to najlepiej w przypadku wiadomości wrażliwych na czas, ale może prowadzić do otrzymywania zduplikowanych wiadomości.

**Przypadki użycia MQTT i IoT**
-------------------------------

MQTT to lekki i energooszczędny protokół, który przez lata był używany w rozwiązaniach, w których są to kluczowe kwestie.

IoT jest najpopularniejszym przykładem, w którym MQTT doskonale się sprawdza. Urządzenia IoT są zazwyczaj zasilane bateryjnie i mogą być bardzo drogie w utrzymaniu, więc preferowany jest długi czas między wymianami baterii. Podczas gdy w środowisku domowym nie jest trudno wymienić baterię od czasu do czasu, w środowisku przemysłowym, z tysiącami czujników, rozmieszczonych na dużym obszarze i często w bardzo trudno dostępnych miejscach, ich konserwacja może bardzo szybko stać się kosztowna.

Przypadki użycia[MQTT IoT](https://www.pubnub.com/blog/new-improved-pubnub-mqtt-support-and-iot-capabilities/) obejmują czujniki przeciwpożarowe, śledzenie kradzieży, monitorowanie lokalizacji, czujniki, stan silnika itp. MQTT ma również bardzo niski narzut danych, więc w środowiskach, w których dane są drogie lub w których rozmieszczone są tysiące urządzeń, więc przepustowość jest problemem, MQTT jest idealnym rozwiązaniem.

**PubNub i MQTT świetnie sprawdzają się w IoT. Zobacz nasze** [**demo IoT**](https://www.pubnub.com/demos/iot-dashboard/) **i** [**samouczek IoT**](https://www.pubnub.com/tutorials/iot-dashboard/)**, aby dowiedzieć się więcej o tym, jak PubNub i MQTT mogą zapewnić niezawodne, skalowalne i wydajne rozwiązanie IoT**.

MQTT jest również bardzo popularny w komunikacji w czasie rzeczywistym, czego najbardziej znanym przykładem jest Facebook Messenger. Dlaczego Facebook zdecydował się na użycie MQTT? Ponieważ nie wyczerpuje baterii telefonu, nie zużywa nadmiernej ilości danych, działa na bezpiecznych protokołach, umożliwia skalowanie, łatwo ułatwia czaty grupowe i dystrybuuje wszystkie dane za pośrednictwem centralnej infrastruktury szkieletowej brokera MQTT.

**Czy PubNub obsługuje przypadki użycia MQTT?**
-----------------------------------------------

Jak najbardziej! PubNub zapewnia [most MQTT](https://www.pubnub.com/docs/sdks/mqtt) oferujący [bardzo niskie opóźnienia](https://www.pubnub.com/guides/whats-so-important-about-low-latency/), co pozwala uniknąć konieczności wdrażania niestandardowego brokera MQTT i zapewnia prostą integrację z innymi funkcjami PubNub, takimi jak [funkcje](https://www.pubnub.com/docs/general/portal/functions) i [przesyłanie strumieniowe danych](https://www.pubnub.com/docs/channels/subscribe).

Ponieważ PubNub został zaprojektowany wokół modelu publikuj-subskrybuj, bardzo dobrze odwzorowuje MQTT:

-   Publish / Subscribe: Pojęcia te są identyczne zarówno dla PubNub, jak i MQTT.
    
-   Kanały PubNub: Odpowiednikiem w MQTT jest "temat".
    
-   UUID: Zarówno PubNub, jak i MQTT mają koncepcję unikalnego identyfikatora przypisanego do każdego klienta.
    

Symbole wieloznaczne: Zarówno PubNub, jak i MQTT obsługują symbole wieloznaczne podczas subskrybowania kanałów/tematów. Zobacz dokumenty PubNub [dokumenty](https://www.pubnub.com/docs/sdks/mqtt#wildcard-subscribe) po więcej szczegółów.

Jak wykorzystać przypadki użycia MQTT
-------------------------------------

Sercem korzystania z MQTT jako drogi komunikacji jest temat. Jest to niezwykle prosty pomysł, który nie jest unikalny dla MQTT; jednak protokół MQTT dość dobrze wykorzystuje jego moc. Temat pośrednio realizuje kilka zadań, z których najważniejszym jest zapewnienie, że wiadomość jest dostarczana do właściwych słuchaczy. MQTT traktuje temat jako ścieżkę do pliku. Myśląc o temacie jako prostym filtrze komunikacyjnym, aplikacja ścieżki może stać się bardzo potężna.

Możesz być zainteresowany konkretnym wyższym poziomem ścieżki lub elementem liścia. Nie mówiąc tego wprost, MQTT filtruje wiadomości na podstawie miejsca subskrypcji w ścieżce drzewa. To prosty pomysł, który może być bardzo efektywnie wykorzystany.

Specyfikacje techniczne MQTT w zależności od przypadku użycia
-------------------------------------------------------------

Przyjrzyjmy się nieco bliżej technicznym aspektom MQTT. Po pierwsze, protokół działa na szczycie stosu sieciowego TCP/IP. Kiedy klienci łączą się i publikują/subskrybują, MQTT ma różne typy wiadomości, które pomagają w uzgadnianiu tego procesu. Nagłówek MQTT składa się z dwóch bajtów, z których pierwszy jest stały.

W pierwszym bajcie określa się typ wysyłanej wiadomości, a także poziom QoS, flagi retain i DUP (duplikacja). Drugi bajt to pozostałe pole długości. Jeśli jesteś zainteresowany, możesz uzyskać więcej informacji ze [specyfikacji MQTT](http://public.dhe.ibm.com/software/dw/webservices/ws-mqtt/mqtt-v3r1.html).

Jak korzystać z PubNub i MQTT
-----------------------------

Ponieważ PubNub [obsługuje teraz MQTT](https://www.pubnub.com/blog/new-improved-pubnub-mqtt-support-and-iot-capabilities/) w naszej globalnej [sieci strumieni danych](https://www.pubnub.com/products/pubnub-platform/) w czasie rzeczywistym [,](https://www.pubnub.com/products/pubnub-platform/) chcieliśmy przedstawić przegląd protokołu i dlaczego można go używać lub nie z naszej perspektywy.

Być może już wdrożyłeś urządzenia oparte na MQTT. Możesz też rozważać nowe wdrożenie IoT. Tak czy inaczej, pojawia się pytanie, &#8220;Kiedy powinienem używać MQTT, a kiedy PubNub? &#8221; A kiedy ma sens używanie obu? Jeśli rozważasz solidne, dwukierunkowe opcje komunikacji dla swoich urządzeń opartych na MQTT, PubNub zapewnia bezpieczeństwo, skalowalność i niezawodność klasy korporacyjnej, a także wiele funkcji o wartości dodanej, takich jak funkcje jako usługa, wykrywanie obecności oraz przechowywanie i odtwarzanie wiadomości. A cała ta moc jest dostępna za pomocą prostego polecenia publikuj-subskrybuj.

Podobnie jak przysłowiowe masło orzechowe i czekolada, PubNub i MQTT razem mogą elegancko rozwiązać wiele przypadków użycia urządzeń wbudowanych. Możesz wykorzystać PubNub z MQTT, aby zaspokoić przypadki użycia, takie jak niskie opóźnienia, wydajne wykrywanie anomalii. Załóżmy na przykład, że masz [czujniki oparte na MQTT na przemysłowych turbinach wytwarzających energię](https://thenewstack.io/tutorial-implementing-predictive-maintenance-connected-devices-pubnub-azure-ml-part-1/). Możesz wykorzystać PubNub &#8211; w tym funkcje "Functions-as-a-Service" &#8211; do reagowania i przesyłania danych z czujników w czasie rzeczywistym, dzięki czemu zespół operacyjny może zidentyfikować problemy z turbiną, zanim dane dotrą do scentralizowanego centrum danych. Możesz także wykorzystać PubNub z alarmami domowymi opartymi na MQTT, aby przeglądać sygnały z alarmów i identyfikować, czy istnieje zły alarm, który wysyła fałszywe alarmy. W różnych przypadkach użycia można wykorzystać integrację PubNub z wieloma usługami uczenia maszynowego w celu wykrywania anomalii.

Jeśli MQTT nie jest częścią Twojej obecnej infrastruktury, możesz rozważyć wykorzystanie PubNub Data Stream Network bezpośrednio wraz z licznymi [zestawami IoT SDK](https://www.pubnub.com/docs/) PubNub dla całej Twojej łączności z [Internetem rzeczy](https://www.pubnub.com/solutions/iot-device-control/). Sieć PubNub Network z MQTT może być świetnym wyborem dla urządzeń o niskim poborze mocy.

Aby korzystać z sieci PubNub Network z urządzeniami obsługującymi MQTT, należy zasubskrybować swoje urządzenia w PubNub na stronie mqtt.pubnub.com. Nasz [przewodnik PubNub Improves MQTT Support &amp; IoT Capabilities](https://www.pubnub.com/blog/new-improved-pubnub-mqtt-support-and-iot-capabilities/) przeprowadzi Cię przez etapy subskrypcji bardziej szczegółowo.

Dodatkowe zasoby dotyczące MQTT
-------------------------------

-   [Protokół MQTT](https://mqtt.org/)
    
-   [Projekt Paho](https://eclipse.dev/paho/) (klient MQTT)
    

Jak PubNub może ci pomóc?
=========================

Ten artykuł został pierwotnie opublikowany na [PubNub.com](https://www.pubnub.com/blog/what-is-mqtt-use-cases/)

Nasza platforma pomaga programistom tworzyć, dostarczać i zarządzać interaktywnością w czasie rzeczywistym dla aplikacji internetowych, aplikacji mobilnych i urządzeń IoT.

Fundamentem naszej platformy jest największa w branży i najbardziej skalowalna sieć przesyłania wiadomości w czasie rzeczywistym. Dzięki ponad 15 punktom obecności na całym świecie obsługującym 800 milionów aktywnych użytkowników miesięcznie i niezawodności na poziomie 99,999%, nigdy nie będziesz musiał martwić się o przestoje, limity współbieżności lub jakiekolwiek opóźnienia spowodowane skokami ruchu.

Poznaj PubNub
-------------

Sprawdź [Live Tour](https://www.pubnub.com/tour/introduction/), aby zrozumieć podstawowe koncepcje każdej aplikacji opartej na PubNub w mniej niż 5 minut.

Rozpocznij konfigurację
-----------------------

Załóż [konto](https://admin.pubnub.com/signup/) PubNub, aby uzyskać natychmiastowy i bezpłatny dostęp do kluczy PubNub.

Rozpocznij
----------

[Dokumenty](https://www.pubnub.com/docs) PubNub pozwolą Ci rozpocząć pracę, niezależnie od przypadku użycia lub [zestawu SDK](https://www.pubnub.com/docs).