1. MQTT是什麼?
MQTT全稱消息隊列遙測傳輸 (Message Queuing Telemetry Transport)。其主要提供了訂閱/發佈兩種消息模式,更爲簡約、輕量,易於使用,特別適合於受限環境(帶寬低、網絡延遲高、網絡通信不穩定)的消息分發,屬於物聯網(Internet of Thing)的一個標準傳輸協議。
2. MQTT的歷史
IBM公司的安迪·斯坦福-克拉克及Arcom公司的阿蘭·尼普於1999年撰寫了該協議的第一個版本。
IBM公司在2013年就向結構化資訊標準促進組織提交了 MQTT 3.1 版規範,並附有相關章程,以確保只能對規範進行少量更改。
2019年四月,MQTT 發佈v5.0版本,現在是官方的OASIS標準。
3. MQTT有哪些用途
自1999年以來,MQTT已廣泛應用於各個行業。因爲MQTT已經成爲標準的物聯網傳輸協議,很多的物聯網設備都採用這些協議傳輸數據,而各行各業基本上都少不了各種各樣的物聯網設備。
除MQTT協議外,以下協議也是常見的工業協議:
- OPC UA
- Modbus TCP /RTU
- PROFINET
- RS232/RS485
4. MQTT的服務質量
MQTT支持三種消息發佈服務質量(QoS):
- 至多一次”(QoS==0)
消息發佈完全依賴底層 TCP/IP 網絡。會發生消息丟失或重複。這一級別可用於如下情況,環境傳感器數據,丟失一次讀記錄無所謂,因爲不久後還會有第二次發送。 - 至少一次”(QoS==1)
確保消息到達,但消息重複可能會發生。 - 只有一次”(QoS==2)
確保消息到達一次。這一級別可用於如下情況,在計費系統中,消息重複或丟失會導致不正確的結果。小型傳輸,開銷很小(固定長度的頭部是 2 字節),協議交換最小化,以降低網絡流量。
5. 常見的MQTT服務器
- Apache Apollo
- Mosquitto
- Apache ActiveMQ
- RabbitMQ
- EMQTT
在以上常見的MQTT服務器中,emqtt,併發最高,但cpu佔用較高,穩定性高,但是消息發送較慢。moqtuitto,發送消息快,穩定性高,cpu佔用很少,併發比較高。其它的穩定性不太高
6. MQTT實現方式
實現MQTT協議需要客戶端和服務器端通訊完成,在通訊過程中,MQTT協議中有三種身份:發佈者(Publish)、代理(Broker)(服務器)、訂閱者(Subscribe)。其中,消息的發佈者和訂閱者都是客戶端,消息代理是服務器,消息發佈者可以同時是訂閱者。
MQTT傳輸的消息分爲:主題(Topic)和負載(payload)兩部分:
(1)Topic,可以理解爲消息的類型,訂閱者訂閱(Subscribe)後,就會收到該主題的消息內容(payload);
(2)payload,可以理解爲消息的內容,是指訂閱者具體要使用的內容。