文/盧永華
現(xiàn)有技術的處理方法把不同設備連接到不同端口上,每種端口綁定一種特定設備,連接到該端口上的設備使用預先定義好的數(shù)據(jù)編碼、解碼算法進行數(shù)據(jù)解析。該方法需要大量的端口與設備綁定,某些設備的數(shù)量多,某些設備的數(shù)量少,造成有的端口負載大,有的端口負載小,有可能造成服務器性能瓶頸。進而影響整個系統(tǒng)的運行,產(chǎn)生不良影響。
設備虛擬化技術能夠在一個端口上實現(xiàn)多種設備協(xié)議的綁定,所有設備可以連接在一個端口上,在端口連接資源緊張時,新開一個端口即可實現(xiàn)設備處理能力的提升。
圖2:設備注冊流程
設備虛擬化技術提供一種在單端口綁定多協(xié)議的方法,在單端口上實現(xiàn)一個公共接口,該接口實現(xiàn)以下三種功能:
(1)設備注冊協(xié)議;
(2)設備編碼協(xié)議;
(3)設備解碼協(xié)議;
(4)設備注銷協(xié)議。
當設備通過TCP連接到該端口時,通過內(nèi)部機制完成設備的注冊,設備通過注冊后映射成為虛擬設備,該虛擬設備有設備編碼能力、設備解碼能力、設備超時注銷機制,通過這些機制能夠?qū)υO備有著完整的對應控制能力。對于框架來說,只需要管理虛擬設備即可,設備的協(xié)議內(nèi)置于虛擬設備中,各種設備完成了注冊流程,變轉(zhuǎn)化為一種虛擬設備,端口與協(xié)議不再有綁定關系,借此實現(xiàn)一個端口下的多協(xié)議設備兼容。每個虛擬設備獨立運行,互不影響,穩(wěn)定性高。如圖1所示。
每個設備都有自己的驅(qū)動文件,驅(qū)動文件繼承上述公共接口,由框架負責驅(qū)動管理,能夠?qū)崿F(xiàn)驅(qū)動的動態(tài)加載,當設備連接到服務器端口上時,要自動發(fā)送一條注冊信息,框架使用該條注冊信息輪詢所有驅(qū)動中的設備注冊協(xié)議,當某個驅(qū)動中的設備注冊協(xié)議能夠正確解析注冊信息時,鎖定該設備類型,并根據(jù)注冊信息填寫相關屬性、連接保存到驅(qū)動中,把驅(qū)動映射為虛擬設備存儲到設備列表中,后續(xù)針對虛擬設備的操作就映射到實體設備上。如圖2所示。
圖3:設備的數(shù)據(jù)解析
圖4:設備的數(shù)據(jù)編碼
通過該方法確認連接到服務器的虛擬設備,后續(xù)該設備連接發(fā)送過來的信息將會使用虛擬設備中內(nèi)置的設備解碼協(xié)議進行數(shù)據(jù)的解析,解析出來的數(shù)據(jù)推送到框架,由框架進行后續(xù)處理。如圖3所示。
當要與設備通信時,框架找到該虛擬設備,調(diào)用虛擬設備編碼協(xié)議,把控制命令通過設備編碼協(xié)議轉(zhuǎn)化為設備能夠識別的數(shù)據(jù),并將該數(shù)據(jù)通過虛擬設備中的連接發(fā)往設備端,實現(xiàn)與設備的通信。如圖4所示。
服務端上存儲的虛擬設備為了保證其有效性,處于激活狀態(tài),需要設備間隔一定時間向服務端發(fā)送心跳包,虛擬設備內(nèi)置了一個定時器進行設備心跳包的檢測,在規(guī)定時間內(nèi)未收到心跳包,虛擬設備認為該設備變?yōu)椴豢捎脿顟B(tài),將調(diào)用設備注銷協(xié)議移除該條設備驅(qū)動,并關閉該連接,并通知框架設備列表移除該虛擬設備、釋放內(nèi)存,完成設備的注銷。如圖5所示。
通過以上一系列機制,實現(xiàn)了實際設備與虛擬設備的映射關系,只需要對虛擬設備進行管理就實現(xiàn)了多真實設備的管理,大大提升軟件對設備的管理能力。
圖5:設備的注銷
通過設備虛擬化技術,能夠在一個端口上實現(xiàn)物聯(lián)網(wǎng)平臺的多種設備類型接入,對端口資源進行了有效的利用。設備虛擬化后實現(xiàn)了虛擬設備與真實設備的映射關系,只需要管理虛擬設備即可實現(xiàn)對真實設備的操作,操作簡單方便,易于管理。當連接的設備過多時,再打開一個新端口即可實現(xiàn)處理能力的提升,能夠輕松達到負載均衡的目的。因此該技術特別適合物聯(lián)網(wǎng)平臺進行大量設備的管理工作。