MQTT

關於mqtt、mosquito的技術交流,可入羣:221779856python

 本文由逍遙子撰寫,轉發請標註原址:mysql

http://blog.csdn.NET/houjixin/article/details/21461225
sql

 

1、  Mosquitto簡介設計模式

mosquitto是一款實現了消息推送協議MQTT v3.1 的開源消息代理軟件,提供輕量級的,支持可發佈/可訂閱的的消息推送模式,使設備對設備之間的短消息通訊變得簡單,例如如今應用普遍的低功耗傳感器,手機、嵌入式計算機、微型控制器等移動設備。服務器

Mosquitto採用出版/訂閱的模式實現MQTT協議,這種設計模式將通訊終端之間的關係統一到服務程序中進行管理,可極大減輕客戶端的開發和維護工做。網絡

1.一、  mqtt協議簡介tcp

MQTT(MessageQueuing Telemetry Transport,消息隊列遙測傳輸)是IBM開發的一個即時通信協議,有可能成爲物聯網的重要組成部分。在某些應用場合中,可經過該協議維持與客戶端的長鏈接。關於mqtt協議更詳細的介紹,請參考其官方網站:http://mqtt.org/網站

其餘版本源碼下載位置:http://mosquitto.org/files/source/ui

1.二、  出版/訂閱模式簡介this

出版/訂閱模式定義瞭如何向一個節點發布和訂閱消息,這些節點被稱做主題(topic)。主題能夠被認爲是消息的傳輸中介,發佈者(publisher)發佈消息到主題,訂閱者(subscriber) 從主題訂閱消息。這種模式使得消息訂閱者和消息發佈者保持互相獨立,不須要接觸便可保證消息的傳送。

Tcp協議中,tcp鏈接只提供一對一的可靠傳輸,例如:主機A與B進行通訊,則發起tcp鏈接的一端只須要知道對方的ip地址和端口號便可,以下圖1-1所示:

 

圖1-1          一對一通訊

每個tcp鏈接都是由下面的五個元素肯定:

<源ip地址,源端口號,目的ip地址,目的端口號,通訊協議>

在實際程序的開發過程當中 一條鏈接創建以後,它可能須要在一段時間內一直被通訊雙方所保持,以備下次數據傳輸使用。另外,通訊的終端數目多是多個,這就須要每一個終端都要維持它全部的通訊關係,以下圖1-2所示

 

圖1-2          多對多通訊

此時,每一個參與通訊的客戶端所需維持的鏈接數量將很是龐大,這很是不利於程序的開發和實現。出版/訂閱模式便是一種解決這種問題的方法,它經過增長一箇中間層的方式,讓中間層來維護這種多對多的關係,這個中間層一般稱之爲服務器,以下圖1-3所示:

 

圖1-3 增長中間層的多對多通訊

經過增長中間層服務器,每一個客戶端都只須要維護本身同服務器之間的鏈接便可,而客戶端之間的關係則交由中間服務器來維護,這種設計模式將複雜的通訊關係維護工做從客戶端剝離出來,很是方便客戶端的開發和維護。

Mosquito程序便是經過這種方式進行工做,在mosquitto程序內部,將客戶端之間的關係經過一棵訂閱樹來維持。

1.三、  Mosquito

Mosquito源碼目錄結構介紹。

|---- mosquitto-1.2

|---- client

|---- examples

     |----mysql_log

     |----temperature_conversion

|---- installer

|---- lib

     |---- cpp

     |---- jsws

     |----Python

|---- logo

|---- man

     |---- po

         |----libmosquitto

         |----mosquitto

         |----mosquitto.conf

         |----mosquitto_pub

         |----mosquitto_sub

         |----mosquitto-tls

         |----mqtt

|---- misc

     |----currentcost

         |----gnome-panel

|---- security

|---- service

     |---- monit

     |----svscan

     |----upstart

|---- src

     |----db_dump

|---- test

     |----broker

         |---- c

     |---- lib

         |---- c

         |----cpp

         |----python

         |----python3

     |---- ssl

         |----demoCA

         |----rootCA

         |----signingCA       

所需關注的目錄有/ mosquitto-1.2/src、/ mosquitto-1.2/lib、/ mosquitto-1.2/client三個目錄,其中src和lib目錄下主要放置mosquitto的實現代碼以及部分底層與網絡相關的操做,client目錄主要爲兩個客戶端程序的實現源碼。

Mosquito的源碼及其相關文檔可從其官方網站獲取,其官方網站爲:http://mosquitto.org/

 

mosquitto客戶端和服務器運行命令

[1] 發佈者客戶端運行命令示例:./mosquitto_pub -h 192.168.6.243 -p 1883 -t "111" -m "this is jason.hou" -u 111 -P 111[2] 訂閱者客戶端運行命令示例:./mosquitto_sub -h 192.168.6.243 -i 111 -p 1883 -t 111 -k 60 -d -c -u hjx -P hjx[3] mosquitto服務器端運行命令示例:./mosquitto

相關文章
相關標籤/搜索