日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

Linux编程MQTT实现主题发布订阅

發布時間:2023/12/10 linux 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Linux编程MQTT实现主题发布订阅 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

【物聯網阿里云平臺開發項目實戰|附課件資料】智能硬件開發-數據上云,零基礎入門
4G模塊連接阿里云教程
MQTT通信協議(mosquitto)在Linux上的環境構建與測試
MQTT通信協議(mosquitto)發布訂閱例子C語言實現
MQTT客戶端軟件(MQTT.fx)的使用詳解
各類MQTT代理服務器特性對比
Web技術(七):如何使用并實現MQTT 消息訂閱-發布模型? 本機抓包等

目錄

  • 物聯網從云到端實戰開發
    • 實現功能技術介紹
    • 基礎宏觀設計框架搭建
    • 基礎環境搭建

物聯網從云到端實戰開發

參考:【物聯網云端項目實戰】物聯網從云到端實戰開發(附課程資料&項目源碼)
地址:https://www.bilibili.com/video/BV1hf4y1b731?p=10&spm_id_from=pageDriver

實現功能技術介紹

? 物聯網通信技術流程圖

? 上圖中的物聯網通信環境包括以太網、Wi-Fi、RFID、NFC、ZigBee、6LoWPAN,藍牙、GSM、GPRS、3G、4G等。

? 每種通信的應用協議都有到一定的適用范圍,AMQP、JMS、REST/HTTP都是工作在以太網,COAP協議是專門為資源受限設備開發的協議,而DDS和MQTT兼容性是最強的,下面逐一介紹各類通信協議的特點。

REST/HTTP

適用范圍:

  • REST/HTTP主要為了簡化互聯網中的系統架構,快速實現客戶端和服務器之間交互的松耦合,降低了客戶端和服務器之間的交互延遲。因此適合在物聯網的應用層面,通過REST開放物聯網中資源,實現服務被其他應用所調用。

特點:

  • REST 指的是一組架構約束條件和原則。

  • 客戶端和服務器之間的交互在請求之間是無狀態的。

  • 在服務器端,應用程序狀態和功能可以分為各種資源,它向客戶端公開,每個資源都使用 URI 得到一個唯一的地址。所有資源都共享統一的界面,以便在客戶端和服務器之間傳輸狀態。

  • 使用的是標準的 HTTP 方法,比如:GET、PUT、POST 和 DELETE。

  • REST/HTTP其實是互聯網中服務調用API封裝風格,物聯網中數據采集到物聯網應用系統中,在物聯網應用系統中,可以通過開放REST API的方式,把數據服務開放出去,被互聯網中其他應用所調用。

CoAP(Constrained Application Protocol)

適用范圍:

? CoAP是簡化了HTTP協議的RESTful API,CoAP是6LowPAN協議棧中的應用層協議,它適用于在資源受限的通信的IP網絡。

特點:

  • 報頭壓縮:CoAP包含一個緊湊的二進制報頭和擴展報頭。它只有短短的4Bit的基本報頭,基本報頭后面跟擴展選項。一個典型的請求報頭為10~20Bit。

  • 方法和URIs:為了實現客戶端訪問服務器上的資源,CoAP支持GET、PUT、POST和DELETE等方法。CoAP還支持URIs,這是Web架構的主要特點。

  • 傳輸層使用UDP協議:CoAP協議是建立在UDP協議之上,以減少開銷和支持組播功能。它也支持一個簡單的停止和等待的可靠性傳輸機制。

  • 支持資源發現:為了自主的發現和使用資源,它支持內置的資源發現格式,用于發現設備上的資源列表,或者用于設備向服務目錄公告自己的資源。它支持RFC5785中的格式,在CoRE中用/.well—known/core的路徑表示資源描述。

  • 支持緩存:CoAP協議支持資源描述的緩存以優化其性能。

CoAP和6LowPan,這分別是應用層協議和網絡適配層協議,其目標是解決設備直接連接到IP網絡,也就是IP技術應用到設備之間、互聯網與設備之間的通信需求。因為IPV6技術帶來巨大尋址空間,不光解決了未來巨量設備和資源的標識問題,互聯網上應用可以直接訪問支持IPV6的設備,而不需要額外的網關。

MQTT (Message Queuing Telemetry Transport )

適用范圍:

? 在低帶寬、不可靠的網絡下提供基于云平臺的遠程設備的數據傳輸和監控。

? MQTT協議一般適用于設備數據采集到端(Device-》Server,Device-》Gateway),集中星型網絡架構(hub-and-spoke),不適用設備與設備之間通信,設備控制能力弱,另外實時性較差,一般都在秒級。

特點:

  • 使用基于代理的發布/訂閱消息模式,提供一對多的消息發布
  • 使用 TCP/IP 提供網絡連接
  • 小型傳輸,開銷很小(固定長度的頭部是 2 字節),協議交換最小化,以降低網絡流量
  • 支持QoS,有三種消息發布服務質量:“至多一次”, “至少一次”, “只有一次”

DDS協議(Data Distribution Service for Real-Time Systems)

適用范圍:

分布式高可靠性、實時傳輸設備數據通信。目前DDS已經廣泛應用于國防、民航、工業控制等領域。

特點:

  • 以數據為中心

  • 使用無代理的發布/訂閱消息模式,點對點、點對多、多對多

  • 提供多大21種QoS服務質量策略

協議主要實現:

  • OpenDDS 是一個開源的 C++ 實現
  • OpenSplice DDS

DDS很好地支持設備之間的數據分發和設備控制,設備和云端的數據傳輸,同時DDS的數據分發的實時效率非常高,能做到秒級內同時分發百萬條消息到眾多設備。DDS在服務質量(QoS)上提供非常多的保障途徑,這也是它適用于國防軍事、工業控制這些高可靠性、可安全性應用領域的原因。但這些應用都工作在有線網絡下,在無線網絡,特別是資源受限的情況下,沒有見到過實施案例。

AMQP協議(互操作性)

AMQP(Advanced Message Queuing Protocol),先進消息隊列協議,用于業務系統例如PLM,ERP,MES等進行數據交換。

適用范圍:

最早應用于金融系統之間的交易消息傳遞,在物聯網應用中,主要適用于移動手持設備與后臺數據中心的通信和分析。

特點:

  • Wire級的協議,它描述了在網絡上傳輸的數據的格式,以字節為流

  • 面向消息、隊列、路由(包括點對點和發布/訂閱)、可靠性、安全

協議實現:

· Erlang中的實現有 RabbitMQ

· AMQP的開源實現,用C語言編寫OpenAMQ

· Apache Qpid

· stormMQ

XMPP協議(即時通信)

? XMPP(Extensible Messaging and Presence Protocol)可擴展通訊和表示協議,一個開源形式組織產生的網絡即時通信協議。

適用范圍:

即時通信的應用程序,還能用在網絡管理、游戲、遠端系統監控等。

特點:

  • 客戶機/服務器通信模式

  • 分布式網絡

  • 簡單的客戶端,將大多數工作放在服務器端進行

  • 標準通用標記語言的子集XML的數據格式

XMPP是基于XML的協議,由于其開放性和易用性,在互聯網及時通訊應用中運用廣泛。相對HTTP,XMPP在通訊的業務流程上是更適合物聯網系統的,開發者不用花太多心思去解決設備通訊時的業務通訊流程,相對開發成本會更低。但是HTTP協議中的安全性以及計算資源消耗的硬傷并沒有得到本質的解決。

JMS

JMS (Java Message Service),即消息服務,這是JAVA平臺中著名的消息隊列協議。

Java消息服務應用程序接口,是一個Java平臺中關于面向消息中間件(MOM)的API,用于在兩個應用程序之間,或分布式系統中發送消息,進行異步通信。Java消息服務是一個與具體平臺無關的API,絕大多數MOM提供商都對JMS提供支持。

JMS是一種與廠商無關的 API,用來訪問消息收發系統消息,它類似于JDBC(Java Database Connectivity)。這里,JDBC 是可以用來訪問許多不同關系數據庫的 API,而 JMS 則提供同樣與廠商無關的訪問方法,以訪問消息收發服務。許多廠商都支持 JMS,包括 IBM 的 MQSeries、BEA的 Weblogic JMS service和 Progress 的 SonicMQ。 JMS 能夠通過消息收發服務(有時稱為消息中介程序或路由器)從一個 JMS 客戶機向另一個 JMS客戶機發送消息。消息是 JMS 中的一種類型對象,由兩部分組成:報頭和消息主體。報頭由路由信息以及有關該消息的元數據組成。消息主體則攜帶著應用程序的數據或有效負載。根據有效負載的類型來劃分,可以將消息分為幾種類型,它們分別攜帶:簡單文本(TextMessage)、可序列化的對象 (ObjectMessage)、屬性集合 (MapMessage)、字節流 (BytesMessage)、原始值流 (StreamMessage),還有無有效負載的消息 (Message)。

基礎宏觀設計框架搭建

? 從宏觀到圍觀,掌握全局設計及技術篩選和代碼實現,同時體驗面向對象的思維理念,先整體后局部,物聯網通信技術多數采用MQTT的通信方式,同時MQTT服務器又提供了多種的服務插件,在整體交互過程中,MQTT通信協議將被作為中心點進行延申對接其他服務,如數據庫,WEB。。。。

1、整體簡易框架示意圖:

2、終端框架示意圖

3、MQTT服務框架

4、數據庫框架示意圖

5、WEB框架示意圖

基礎環境搭建

開發主機:win10_64位操作系統、16G內存、CPU 4Ghz x 8

開發環境:Vmware16、Ubuntu20.04

開發工具:VsCode、Pycharm、git

鏡像下載:http://releases.ubuntu.com/20.04/

總結

以上是生活随笔為你收集整理的Linux编程MQTT实现主题发布订阅的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。