文/盧永華
現(xiàn)有技術(shù)的處理方法把不同設(shè)備連接到不同端口上,每種端口綁定一種特定設(shè)備,連接到該端口上的設(shè)備使用預(yù)先定義好的數(shù)據(jù)編碼、解碼算法進(jìn)行數(shù)據(jù)解析。該方法需要大量的端口與設(shè)備綁定,某些設(shè)備的數(shù)量多,某些設(shè)備的數(shù)量少,造成有的端口負(fù)載大,有的端口負(fù)載小,有可能造成服務(wù)器性能瓶頸。進(jìn)而影響整個(gè)系統(tǒng)的運(yùn)行,產(chǎn)生不良影響。
設(shè)備虛擬化技術(shù)能夠在一個(gè)端口上實(shí)現(xiàn)多種設(shè)備協(xié)議的綁定,所有設(shè)備可以連接在一個(gè)端口上,在端口連接資源緊張時(shí),新開一個(gè)端口即可實(shí)現(xiàn)設(shè)備處理能力的提升。

圖2:設(shè)備注冊(cè)流程
設(shè)備虛擬化技術(shù)提供一種在單端口綁定多協(xié)議的方法,在單端口上實(shí)現(xiàn)一個(gè)公共接口,該接口實(shí)現(xiàn)以下三種功能:
(1)設(shè)備注冊(cè)協(xié)議;
(2)設(shè)備編碼協(xié)議;
(3)設(shè)備解碼協(xié)議;
(4)設(shè)備注銷協(xié)議。
當(dāng)設(shè)備通過(guò)TCP連接到該端口時(shí),通過(guò)內(nèi)部機(jī)制完成設(shè)備的注冊(cè),設(shè)備通過(guò)注冊(cè)后映射成為虛擬設(shè)備,該虛擬設(shè)備有設(shè)備編碼能力、設(shè)備解碼能力、設(shè)備超時(shí)注銷機(jī)制,通過(guò)這些機(jī)制能夠?qū)υO(shè)備有著完整的對(duì)應(yīng)控制能力。對(duì)于框架來(lái)說(shuō),只需要管理虛擬設(shè)備即可,設(shè)備的協(xié)議內(nèi)置于虛擬設(shè)備中,各種設(shè)備完成了注冊(cè)流程,變轉(zhuǎn)化為一種虛擬設(shè)備,端口與協(xié)議不再有綁定關(guān)系,借此實(shí)現(xiàn)一個(gè)端口下的多協(xié)議設(shè)備兼容。每個(gè)虛擬設(shè)備獨(dú)立運(yùn)行,互不影響,穩(wěn)定性高。如圖1所示。
每個(gè)設(shè)備都有自己的驅(qū)動(dòng)文件,驅(qū)動(dòng)文件繼承上述公共接口,由框架負(fù)責(zé)驅(qū)動(dòng)管理,能夠?qū)崿F(xiàn)驅(qū)動(dòng)的動(dòng)態(tài)加載,當(dāng)設(shè)備連接到服務(wù)器端口上時(shí),要自動(dòng)發(fā)送一條注冊(cè)信息,框架使用該條注冊(cè)信息輪詢所有驅(qū)動(dòng)中的設(shè)備注冊(cè)協(xié)議,當(dāng)某個(gè)驅(qū)動(dòng)中的設(shè)備注冊(cè)協(xié)議能夠正確解析注冊(cè)信息時(shí),鎖定該設(shè)備類型,并根據(jù)注冊(cè)信息填寫相關(guān)屬性、連接保存到驅(qū)動(dòng)中,把驅(qū)動(dòng)映射為虛擬設(shè)備存儲(chǔ)到設(shè)備列表中,后續(xù)針對(duì)虛擬設(shè)備的操作就映射到實(shí)體設(shè)備上。如圖2所示。

圖3:設(shè)備的數(shù)據(jù)解析

圖4:設(shè)備的數(shù)據(jù)編碼
通過(guò)該方法確認(rèn)連接到服務(wù)器的虛擬設(shè)備,后續(xù)該設(shè)備連接發(fā)送過(guò)來(lái)的信息將會(huì)使用虛擬設(shè)備中內(nèi)置的設(shè)備解碼協(xié)議進(jìn)行數(shù)據(jù)的解析,解析出來(lái)的數(shù)據(jù)推送到框架,由框架進(jìn)行后續(xù)處理。如圖3所示。
當(dāng)要與設(shè)備通信時(shí),框架找到該虛擬設(shè)備,調(diào)用虛擬設(shè)備編碼協(xié)議,把控制命令通過(guò)設(shè)備編碼協(xié)議轉(zhuǎn)化為設(shè)備能夠識(shí)別的數(shù)據(jù),并將該數(shù)據(jù)通過(guò)虛擬設(shè)備中的連接發(fā)往設(shè)備端,實(shí)現(xiàn)與設(shè)備的通信。如圖4所示。
服務(wù)端上存儲(chǔ)的虛擬設(shè)備為了保證其有效性,處于激活狀態(tài),需要設(shè)備間隔一定時(shí)間向服務(wù)端發(fā)送心跳包,虛擬設(shè)備內(nèi)置了一個(gè)定時(shí)器進(jìn)行設(shè)備心跳包的檢測(cè),在規(guī)定時(shí)間內(nèi)未收到心跳包,虛擬設(shè)備認(rèn)為該設(shè)備變?yōu)椴豢捎脿顟B(tài),將調(diào)用設(shè)備注銷協(xié)議移除該條設(shè)備驅(qū)動(dòng),并關(guān)閉該連接,并通知框架設(shè)備列表移除該虛擬設(shè)備、釋放內(nèi)存,完成設(shè)備的注銷。如圖5所示。
通過(guò)以上一系列機(jī)制,實(shí)現(xiàn)了實(shí)際設(shè)備與虛擬設(shè)備的映射關(guān)系,只需要對(duì)虛擬設(shè)備進(jìn)行管理就實(shí)現(xiàn)了多真實(shí)設(shè)備的管理,大大提升軟件對(duì)設(shè)備的管理能力。

圖5:設(shè)備的注銷
通過(guò)設(shè)備虛擬化技術(shù),能夠在一個(gè)端口上實(shí)現(xiàn)物聯(lián)網(wǎng)平臺(tái)的多種設(shè)備類型接入,對(duì)端口資源進(jìn)行了有效的利用。設(shè)備虛擬化后實(shí)現(xiàn)了虛擬設(shè)備與真實(shí)設(shè)備的映射關(guān)系,只需要管理虛擬設(shè)備即可實(shí)現(xiàn)對(duì)真實(shí)設(shè)備的操作,操作簡(jiǎn)單方便,易于管理。當(dāng)連接的設(shè)備過(guò)多時(shí),再打開一個(gè)新端口即可實(shí)現(xiàn)處理能力的提升,能夠輕松達(dá)到負(fù)載均衡的目的。因此該技術(shù)特別適合物聯(lián)網(wǎng)平臺(tái)進(jìn)行大量設(shè)備的管理工作。