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