本發明專利技術公開了一種基于MQTT數據交互的方法,方法包括:終端對獲取的信息進行編碼,指定QOS后將編碼后的信息上傳至MQTT服務器;MQTT服務器根據指定的QOS將終端上傳的信息推送到與MQTT服務器連接的服務端;服務端對消息進行解碼,校驗消息的topic是否需要處理;如果是,服務端提交消息至業務線程池進行業務邏輯處理。
A method, terminal and server of data interaction based on mqtt
【技術實現步驟摘要】
一種基于MQTT數據交互的方法、終端及服務端
本專利技術涉及通信領域,尤其涉及一種基于MQTT數據交互的方法、終端及服務端。
技術介紹
現有基于Http協議建立的終端與服務端數據交互過程中,終端會存在很頻繁的GPS位置上報,且Http的三次握手建立連接和四次揮手關閉連接對于服務端來說也是一筆很大的開銷,服務端可能因為網絡原因無法接收到終端上報的數據,更嚴重可能導致故障,高可用性無法保證。而基于MQ中間件的長連接通信建立的終端與服務端數據交互過程中,雖然MQ避免了連接建立和關閉的開銷,其可用性也有所保證,但是MQ適合于連接數少,單個連接吞吐量大的場景,其更多是用于服務端應用之間的解耦和削峰填谷等。對于終端這類一般是連接數多,單個連接吞吐量小的場景需要一種更加輕量級的消息隊列。
技術實現思路
本專利技術要解決的技術問題,在于提供一種基于MQTT數據交互的方法、終端及服務端,保證數據交互的高可用性,且滿足連接數量多、單個連接吞吐量小的應用場景。第一方面,本專利技術提供一種基于MQTT數據交互的方法,所述方法包括:終端對獲取的信息進行編碼,指定QOS后將所述編碼后的信息上傳至MQTT服務器;所述MQTT服務器根據指定的QOS將所述終端上傳的信息推送到與所述MQTT服務器連接的服務端;所述服務端對所述消息進行解碼,校驗所述消息的topic是否需要處理;如果是,所述服務端提交所述消息至業務線程池進行業務邏輯處理。在上述方案中,在所述終端對獲取的信息進行編碼之前,將所述終端注冊到所述MQTT服務器上。在上述方案中,將所述終端注冊到所述MQTT服務器上的方法包括:所述終端通過AES加密后,發送加密后的信息請求服務端;所述服務端通過AES解密獲取所述終端的信息;服務端根據所述終端的信息查詢BD判斷所述終端是否已經注冊;如果否,所述服務端請求MQTT服務器,所述服務端將所述MQTT服務器生成的密鑰信息返回給所述終端;如果是,所述服務端直接返回連接所述MQTT服務器的密鑰信息;所述終端接收所述MQTT服務器生成的密鑰信息緩存在本地,所述終端根據緩存在本地的密鑰信息與所述MQTT服務器連接。在上述方案中,所述方法還包括:所述終端定時向所述MQTT服務器發送心跳包,所述MQTT服務器定時發送所述心跳包至所述服務端。在上述方案中,所述方法還包括:所述MQTT服務器未能接受所述終端上傳的消息時,根據所述指定的QOS控制重試機制。在上述方案中,所述信息包括實時定位、短信、微信、通話記錄、應用權限中的任意一種或多種。在上述方案中,所述方法還包括:所述服務端將所述MQTT服務器上傳的消息記錄于數據庫中。第二方面,本專利技術提供一種終端,包括:獲取單元,用于獲取所述終端上的信息;編碼單元,用于對獲取的信息進行編碼;發送單元,用于發送編碼后的信息或加密后的信息至MQTT服務器和服務端。在上述方案中,所述終端還包括:加密單元,用于對所述終端注冊到MQTT服務器時發送的信息進行AES加密。在上述方案中,所述終端還包括:定時單元,用于控制所述發送單元定時向所述MQTT服務器發送心跳包。第三方面,本專利技術提供一種服務端,所述服務端包括:接收單元,用于接收終端和MQTT服務器發送的信息;解碼單元,用于對所述終端和MQTT服務器發送的信息進行解碼;校驗單元,用于校驗所述消息的topic是否需要處理。在上述方案中,所述服務端還包括:解密單元,用于對所述終端注冊到MQTT服務器時發送的信息進行AES解密;查詢單元,用于根據所述終端注冊到MQTT服務器時發送的信息查詢BD判斷所述終端是否已經注冊;返回單元,用于將所述MQTT服務器生成的密鑰信息返回給所述終端。本專利技術的有益效果是:基于上述技術方案,本專利技術實施例建立基于一種基于MQTT數據交互的方法、終端及服務端,保證數據交互的高可用性,且滿足連接數量多、單個連接吞吐量小的應用場景。1、基于MQTT的微消息隊列服務器,終端可在網絡差的環境中正常上傳數據至服務端;2、基于MQTT的長連接機制,只需建立一次連接和關閉連接,使得服務端連接MQTT服務器,終端連接MQTT,服務端和終端均采用心跳機制斷線重連,保證了上述數據交互方式的高性能和高可用性;3、基于MQTT協議的特性,其有三種消息發布服務質量(至多一次、至少一次和只有一次),可根據終端業務的需要靈活選擇發布質量來保證高可用性;4、終端將數據上報至MQTT服務器,MQTT服務器根據配置的QOS向服務端推送數據,保證了終端發送消息的可靠性;5、由于終端應用場景的特性,存在主要連接數多,但每臺終端的消息量不大的特點,服務端接收到MQTT服務器推送的消息后,轉發到服務端的業務線程池中進行處理,不占用服務端與MQTT服務器通信的線程(讓底層的Selector盡快進行下次輪詢來處理下一波的消息,或者處理本次輪詢出來的尚未開始處理的消息),減少了消息堆積的可能性,保證了上述數據交互方式的高性能。附圖說明圖1為本專利技術提供的一種基于MQTT數據交互的方法的流程示意圖;圖2為本專利技術提供的一種終端的結構示意圖;圖3為本專利技術提供的一種終端的一個示例的結構示意圖;圖4本專利技術提供的一種終端的另一個示例的結構示意圖;圖5本專利技術提供的一種終端的另一個示例的結構示意圖;圖6本專利技術提供的一種服務端的結構示意圖;圖7本專利技術提供的一種服務端的一個示例的結構示意圖。具體實施方式下面通過具體實施例,并結合附圖,對本專利技術的技術方案作進一步的具體描述,顯然,所描述的實施例僅僅是本專利技術一部分實施例,而不是全部的實施例。基于本專利技術中的實施例,本領域普通技術人員在沒有做出創造性勞動前提下所獲得的所有其他實施例,都屬于本專利技術保護的范圍。MQTT(消息隊列遙測傳輸)是ISO標準(ISO/IECPRF20922)下基于發布/訂閱范式的消息協議,MQTT工作在TCP/IP協議族上,是為硬件性能低下的遠程設備以及網絡狀況糟糕的情況下而設計的發布/訂閱型消息協議。MQTT是一個基于客戶端-服務器的消息發布/訂閱傳輸協議。MQTT協議是輕量、簡單、開放和易于實現的,這些特點使它適用范圍非常廣泛。在很多情況下,包括受限的環境中,如:機器與機器(M2M)通信和物聯網(IoT)。其在,通過衛星鏈路通信傳感器、偶爾撥號的醫療設備、智能家居、及一些小型化設備中已廣泛使用。基于上述MQTT協議獲得一種多連接數、每個連接小吞吐量的數據的交互方式,本專利技術實施例將對本專利技術提供的一種基于MQTT數據交互的方法、終端及服務端進行具體說明。參考圖1,如附圖1所示為本專利技術提供的一種基于MQTT數據交互的方法的流程示意圖,包括:本文檔來自技高網...
【技術保護點】
1.一種基于MQTT數據交互的方法,其特征是,所述方法包括:/n終端對獲取的信息進行編碼,指定QOS后將所述編碼后的信息上傳至MQTT服務器;/n所述MQTT服務器根據指定的QOS將所述終端上傳的信息推送到與所述MQTT服務器連接的服務端;/n所述服務端對所述消息進行解碼,校驗所述消息的topic是否需要處理;/n如果是,所述服務端提交所述消息至業務線程池進行業務邏輯處理。/n
【技術特征摘要】
1.一種基于MQTT數據交互的方法,其特征是,所述方法包括:
終端對獲取的信息進行編碼,指定QOS后將所述編碼后的信息上傳至MQTT服務器;
所述MQTT服務器根據指定的QOS將所述終端上傳的信息推送到與所述MQTT服務器連接的服務端;
所述服務端對所述消息進行解碼,校驗所述消息的topic是否需要處理;
如果是,所述服務端提交所述消息至業務線程池進行業務邏輯處理。
2.根據權利要求1所述的一種基于MQTT數據交互的方法,其特征是,在所述終端對獲取的信息進行編碼之前,將所述終端注冊到所述MQTT服務器上。
3.根據權利要求2所述的一種基于MQTT數據交互的方法,其特征是,將所述終端注冊到所述MQTT服務器上的方法包括:
所述終端通過AES加密后,發送加密后的信息請求服務端;
所述服務端通過AES解密獲取所述終端的信息;
服務端根據所述終端的信息查詢BD判斷所述終端是否已經注冊;
如果否,所述服務端請求MQTT服務器,所述服務端將所述MQTT服務器生成的密鑰信息返回給所述終端;
如果是,所述服務端直接返回連接所述MQTT服務器的密鑰信息;
所述終端接收所述MQTT服務器生成的密鑰信息緩存在本地,所述終端根據緩存在本地的密鑰信息與所述MQTT服務器連接。
4.根據權利要求1所述的一種基于MQTT數據交互的方法,其特征是,所述方法還包括:
所述終端定時向所述MQTT服務器發送心跳包,所述MQTT服務器定時發送所述心跳包至所述服務端。
5.根據權利要求1所述的一種基于MQTT數據交互的方法,其特征是,所述方法還包括:
所述MQTT服務器未能接受所述終...
【專利技術屬性】
技術研發人員:王磊,
申請(專利權)人:浙江百應科技有限公司,
類型:發明
國別省市:浙江;33
還沒有人留言評論。發表了對其他瀏覽者有用的留言會獲得科技券。