什么是MQTT?
MQTT是一種輕量級消息傳遞協(xié)議,由IBM開發(fā),于1999年首次發(fā)布。它使用發(fā)布/訂閱模式并在設備、服務器和應用程序之間轉(zhuǎn)換消息。最初,MQTT的創(chuàng)建目的是為了將石油管道上的傳感器與通信衛(wèi)星連接起來,重點是最大限度地減少電池使用和帶寬消耗。MQTT自誕生以來一直在不斷發(fā)展。2018年5月發(fā)布的5.0版本為MQTT協(xié)議帶來了重大變化和增強。
在MQTT協(xié)議中,連接的設備稱為“客戶端”,它們與稱為“代理”的服務器進行通信。代理處理客戶端之間的數(shù)據(jù)傳輸任務。
每當客戶端(也稱為“發(fā)布者”)想要分發(fā)信息時,它就會發(fā)布特定主題。然后,代理將此信息轉(zhuǎn)發(fā)給已訂閱該主題的任何客戶端(稱為“訂閱者”) 。
發(fā)布者不需要有關訂閱者數(shù)量或位置的數(shù)據(jù),訂閱者也不需要有關發(fā)布者的任何數(shù)據(jù)。任何客戶端都可以充當發(fā)布者、訂閱者或兩者。通常情況下,客戶彼此不認識,只知道充當中介的經(jīng)紀人。這種設置通常稱為“發(fā)布/訂閱模型”。
MQTT協(xié)議中的方法
MQTT協(xié)議中定義了一些方法(也被稱為動作), 來于表示對確定資源所進行操作。 這個資源可以代表預先存在的數(shù)據(jù)或動態(tài)生成數(shù)據(jù),這取決于服務器的實現(xiàn)。通常來說,資源指服務器上的文件或輸出。
Connect,等待與服務器建立連接
Disconnect,等待MQTT客戶端完成所做的工作,并與服務器斷開TCP/IP會話
Subscribe,等待完成訂閱
UnSubscribe,等待服務器取消客戶端的一個或多個topics訂閱
Publish,MQTT客戶端發(fā)送消息請求,發(fā)送完成后返回應用程序線程
mqtt協(xié)議和http協(xié)議區(qū)別
MQTT(Message Queuing Telemetry Transport)協(xié)議和HTTP(Hypertext Transfer Protocol)協(xié)議是兩種不同的通信協(xié)議,它們在很多方面有著明顯的區(qū)別,主要包括以下幾點:
1. **通信方式**:
- MQTT 是一種發(fā)布/訂閱(Publish/Subscribe)協(xié)議,它基于消息隊列的模式,消息的發(fā)布者和訂閱者是解耦的,消息通過消息代理(Broker 服務器)進行傳遞。
- HTTP 是一種請求/響應(Request/Response)協(xié)議,客戶端通過請求消息與服務器通信,服務器收到請求后返回響應消息。
2. **實時性**:
- MQTT 協(xié)議支持實時消息傳遞,具有較低的延遲和節(jié)省網(wǎng)絡帶寬的特點。
- HTTP 協(xié)議通常是短連接方式,每次請求需要建立連接、發(fā)送請求、收到響應后斷開連接,傳輸效率不如 MQTT。
3. **連接性質(zhì)**:
- MQTT 支持客戶端保持長連接,可以隨時發(fā)送和接收消息,適合實時性要求高的場景。
- HTTP 是一種短連接協(xié)議,每次請求都需要建立連接,適用于間歇性的請求和響應通信。
4. **消息格式**:
- MQTT 的消息格式較輕量,頭部信息較小,適合在網(wǎng)絡帶寬有限的情況下傳輸小量數(shù)據(jù)。
- HTTP 的消息格式較重,每次請求的頭部信息較多,適合傳輸較大量的數(shù)據(jù)和資源。
5. **應用場景**:
- MQTT 更適合物聯(lián)網(wǎng)設備之間的實時通信,如傳感器數(shù)據(jù)的實時監(jiān)控和控制。
- HTTP 更適合傳統(tǒng)的網(wǎng)頁瀏覽和數(shù)據(jù)傳輸,如網(wǎng)頁的訪問和內(nèi)容下載等。
MQTT 和 HTTP 在通信方式、實時性、連接性質(zhì)、消息格式和應用場景等方面有明顯的區(qū)別,開發(fā)人員在選擇使用哪種協(xié)議時應根據(jù)具體需求和應用場景來進行選擇。
審核編輯:黃飛
-
HTTP
+關注
關注
0文章
504瀏覽量
31194 -
客戶端
+關注
關注
1文章
290瀏覽量
16683 -
MQTT
+關注
關注
5文章
650瀏覽量
22487
發(fā)布評論請先 登錄
相關推薦
評論