侯小虎 向逸塵
摘 ?要: 隨著物聯(lián)網(wǎng)技術的飛速發(fā)展,越來越多的物聯(lián)網(wǎng)設備需要接入到軟件平臺,開發(fā)出集成化的大平臺已經是不可避免的趨勢。當一個集成平臺需要面對多種物聯(lián)網(wǎng)設備時,系統(tǒng)就需要利用協(xié)議轉換網(wǎng)關來處理和轉換各種各樣的協(xié)議信息,以達到與設備通信的目的。文章分析了兩種類型的協(xié)議轉換網(wǎng)關,描述了它們在集成系統(tǒng)中的應用,及其負載均衡方案。
關鍵詞: 協(xié)議網(wǎng)關; 物聯(lián)網(wǎng); 系統(tǒng)集成; 負載均衡
中圖分類號:TP311 ? ? ? ? ?文獻標志碼:A ? ? 文章編號:1006-8228(2019)10-50-04
Abstract: With the rapid development of Internet of Things technology, more and more Internet of Things devices need to be connected to the software platform, and it is an inevitable trend to develop an integrated platform. When an integrated platform needs to face a variety of Internet of Things devices, the system needs to use protocol conversion gateway to process and transform a variety of protocol information in order to achieve the purpose of communication with devices. This paper analyses two types of protocol conversion gateways, describes their applications in integrated systemsand their load balancing scheme.
Key words: protocol gateway; Internet of Things; system integration; load balancing
0 引言
軟件協(xié)議轉換網(wǎng)關(簡稱協(xié)議網(wǎng)關)是大型信息化集成系統(tǒng)設計中的重點,也是設計難點。協(xié)議網(wǎng)關是溝通軟件系統(tǒng)和硬件設備的橋梁,十分重要;協(xié)議網(wǎng)關需要接入大批量的硬件設備,需要具備很高的穩(wěn)定性和并發(fā)處理能力[1]。
大型信息化集成系統(tǒng)一般會為每一種硬件設備分別設計一個獨立的網(wǎng)關程序,以免其中某個網(wǎng)關出現(xiàn)問題會影響其他網(wǎng)關的運行,最大限度地保持系統(tǒng)整體穩(wěn)定。
在實際應用過程中,根據(jù)與硬件交互數(shù)據(jù)方式的不同,可以對協(xié)議網(wǎng)關進行分類,分為TCP/UDP型協(xié)議網(wǎng)關和WebService、SDK型協(xié)議網(wǎng)關兩種[2]。
1 協(xié)議轉換網(wǎng)關介紹
1.1 TCP/UDP類型網(wǎng)關
TCP/UDP類型網(wǎng)關:TCP/UDP類型網(wǎng)關基于Netty實現(xiàn)高性能的網(wǎng)絡接入程序,單個網(wǎng)關可接受的業(yè)務并發(fā)量可以達到萬級。通過RocketMQ的Cluster機制,設備指令可以平均的分配到網(wǎng)關上,網(wǎng)關再將指令發(fā)送到設備上[3]。
在網(wǎng)關和硬件設備之間,已部署了LVS負載均衡處理。LVS建立在OSI七層模型中的第四層“傳輸層”之上,支持TCP/UDP的負載均衡,它能夠很好的支持網(wǎng)關層的負載均衡[4]。
如果設備接入量實在過大,接近或達到了單個網(wǎng)關的處理極限,就可以多部署一套或多套網(wǎng)關程序,使用LVS來進行命令的分發(fā)。負載均衡技術是大型信息化集成系統(tǒng)開發(fā)過程中不可缺少的一種技術,在本文第3節(jié)中將有詳細描述。
TCP/UDP型協(xié)議網(wǎng)關結構圖如圖1所示。
1.2 ?WebService和SDK型協(xié)議網(wǎng)關
WebService和SDK類型網(wǎng)關:通過RocketMQ的Cluster機制來實現(xiàn)擴展,同一種設備的網(wǎng)關,部署在多個服務器上,同時訂閱這個設備的RocketMQ Topic,當消息隊列里面有設備指令,將會被平均的分配到不同服務器上的網(wǎng)關上,當某一種設備網(wǎng)關處理設備指令過載時,可以通過部署一個新的網(wǎng)關實例,進而起到分擔該網(wǎng)關的壓力,達到性能最優(yōu)[3]。WebService和SDK型協(xié)議網(wǎng)關結構圖如圖2所示。
WebService和SDK類型網(wǎng)關:通過RocketMQ的Cluster機制來實現(xiàn)擴展,同一種設備的網(wǎng)關,部署在多個服務器上,同時訂閱這個設備的RocketMQ Topic,當消息隊列里面有設備指令,將會被平均地分配到不同服務器上的網(wǎng)關,當某一種網(wǎng)關處理設備指令過載時,可以通過部署一個新的網(wǎng)關實例,進而做到分擔該網(wǎng)關的壓力,達到性能最優(yōu)。
2 協(xié)議網(wǎng)關的應用
對于上文介紹的兩種不同類型的協(xié)議轉換網(wǎng)關,除了最后如何和硬件設備通信的方式有所區(qū)別,其他應用流程大體一致。在大型信息化集成系統(tǒng)中,協(xié)議網(wǎng)關的操作時序圖如圖3所示。
具體操作流程如下。
⑴ 分節(jié)點系統(tǒng)把Java message object轉換為 JSON, 然后放入對應的MQ Topic。
⑵ Polling Job從 MQ Topic 提取 JSON。
⑶ Polling Job轉換JSON為Java message object并調用對應的Listener。
⑷ Listener將Java message object轉換為設備可識別的byte[]/String。
⑸ Polling Job調用對應的Client,并傳入byte[]/String。
⑹ Client通過http/SDK/TCP/UDP等方式發(fā)送byte[]/String至設備/服務器。
⑺ 設備/服務器通過http/SDK/TCP/UDP等方式返回結果byte[]/String到網(wǎng)關。
⑻ Handler把byte[]/String轉換為業(yè)務Java message object。
⑼ MS把Java message object轉換為JSON, 然后放入對應的MQ Topic。
⑽ 分節(jié)點從MQ Topic獲取到消息。
3 協(xié)議轉換網(wǎng)關的負載均衡
協(xié)議轉換網(wǎng)關將對接大量的硬件設備,處理大量業(yè)務請求。當單個網(wǎng)關無法滿足使用需要時,就用利用負載均衡來實現(xiàn)橫向擴展。
目前,負載均衡主要分為兩種:一種是硬件負載均衡器,比如F5,一種是軟件負載均衡策略,比如LVS。本文主要介紹如何利用LVS負載均衡技術來應對大規(guī)模業(yè)務數(shù)據(jù)。
LVS是四層負載均衡,建立在傳輸層之上,支持TCP/UDP的負載均衡。所以它能夠很好的支持本系統(tǒng)中網(wǎng)關層的負載均衡[4]。
LVS是Linux Virtual Server的簡稱,也就是Linux虛擬服務器。使用LVS可以達到的效果是:通過LVS達到的負載均衡技術和Linux操作系統(tǒng)實現(xiàn)一個高性能高可用的Linux服務器集群,它具有良好的可靠性、可擴展性和可操作性。從而以低廉的成本實現(xiàn)最優(yōu)的性能。LVS是一個實現(xiàn)負載均衡集群的開源軟件項目,LVS架構從邏輯上可分為調度層、Server集群層和共享存儲[4]。
LVS由ipvs和ipvsadm兩部分組成,其中,ipvs(ip virtual server)是真正生效實現(xiàn)調度的代碼;而ipvsadm負責為ipvs內核框架編寫規(guī)則,定義誰是集群服務,而誰是后端真實的服務器[4]。
● LVS的優(yōu)點有以下三點:
⑴ 抗負載能力強、是工作在網(wǎng)絡層第四層上,僅用來進行數(shù)據(jù)分發(fā),不產生實際的流量,對內存和CPU資源消耗很低,可以應對大規(guī)模的數(shù)據(jù);
⑵ 可配置性比較低,沒有可太多配置的東西,和配置復雜的其他負載均衡軟件相比,減少了人為出錯的幾率;
⑶ 工作穩(wěn)定,通過Keepalived可以實現(xiàn)完整的雙機熱備方案[5]。
● LVS有多種轉發(fā)邏輯,包括:
⑴ LVS-NAT:修改請求報文的目標IP;
⑵ LVS-DR:操縱封閉新的MAC地址;
⑶ LVS-TUN:在原請求IP報文之外新加一個IP首部;
⑷ LVS-FULLNAT:修改請求報文的源和目標IP[2]。
● 本系統(tǒng)中采用的是LVS-DR轉發(fā)模式,其特性有:
⑴ RIP與DIP在同一IP網(wǎng)絡,RS可以使用私有地址,也可以使用公網(wǎng)地址,此時可以直接通過互聯(lián)網(wǎng)連入RS,以實現(xiàn)配置、監(jiān)控等;
⑵ RS的網(wǎng)關一定不能指向DIP;
⑶ RS跟Director要在同一物理網(wǎng)絡內(不能有路由器分隔,因為要將報文封裝MAC首部進行報文轉發(fā));
⑷ 請求報文必須經過Director,但響應報文不能經過Director而是由RS直接發(fā)往Client以釋放Directory的壓力;
⑸ 不支持端口映射(因為響應報文不經過Director);
⑹ RS可以使用大多數(shù)的操作系統(tǒng);
⑺ Director的VIP對外可見,RS的VIP對外不可見;
⑻ RS跟Director都得配置使用VIP;
⑼ 確保前端路由器將目標IP為VIP的請求報文發(fā)往Director[5]。
網(wǎng)關層使用LVS實現(xiàn)負載均衡和高可用,LVS會提供一個虛擬IP,使用主、備用負載均衡服務器進行設備連接轉發(fā)。當一臺負載均衡服務器服務中斷后,另外一臺可以繼續(xù)提供服務,實現(xiàn)網(wǎng)關的高可用[5]??紤]到所有網(wǎng)關服務器配置相同,所以LVS會采用RR輪詢算法將設備的連接請求按網(wǎng)關順序進行輪流分配,即平均分配每個網(wǎng)關的設備連接數(shù)量。當設備連接數(shù)量增長到一定程度后,可以直接增加網(wǎng)關服務,實現(xiàn)水平擴展,對架構及業(yè)務處理不產生影響[5]。
對LVS的性能可以進行多方面測試,包括高流量壓力測試、高并發(fā)壓力測試、響應時間測試、RR算法預期值測試(連接數(shù)是否正確分布測試)等,LVS都能夠很好地通過這些測試,可以實現(xiàn)系統(tǒng)對于負載均衡的需求[5]。
4 結論
本文介紹了兩種類型的軟件轉換網(wǎng)關,并針對性地通過數(shù)據(jù)流程圖,說明了軟件協(xié)議轉換網(wǎng)關在大型信息化集成系統(tǒng)中的應用方式。
軟件轉換網(wǎng)關可以有效提升系統(tǒng)開發(fā)效率,有效去耦合,為實現(xiàn)系統(tǒng)互聯(lián)互通打下了良好的基礎。在業(yè)務量很大時,也可以通過負載均衡的方式來進行橫向擴展,使系統(tǒng)的可用性大幅提高,具備很高的實際應用價值。
參考文獻(References):
[1] 薄慕婷,丁立波,張合.智能網(wǎng)關軟件設計與實現(xiàn)[J].兵器裝備工程學報,2016.37(12).
[2] 佟立飛,李龍華.通用網(wǎng)關協(xié)議數(shù)據(jù)轉換軟件開發(fā)[J].自動化技術與應用,2012.31(1):16-18
[3] 謝小云.基于敏捷開發(fā)及多V模型的嵌入式溫室網(wǎng)關的軟件開發(fā)[J].電子技術與軟件工程,2015.1:75-76
[4] 網(wǎng)絡作者.使用 LVS 實現(xiàn)負載均衡原理及安裝配置詳解-會飛的魚-博客頻道-CSDN.NET[EB/OL]. https://blog.csdn.net/a494303877/article/details/59576924/.
[5] 網(wǎng)絡作者.軟件級負載均衡器(LVS/HAProxy/Nginx)的特點簡介和對比-博客頻道-CSDN.NET[EB/OL]. https://blog.csdn.net/huaishu/article/details/17022175.