談榮強 吳森



摘 要:“十三五”規(guī)劃重點項目指出了建設(shè)物聯(lián)網(wǎng)應(yīng)用基礎(chǔ)設(shè)施和服務(wù)平臺,在此基礎(chǔ)上各大物聯(lián)網(wǎng)平臺廠商推出自己的產(chǎn)品,如阿里云物聯(lián)網(wǎng)平臺、中國移動OneNET平臺、中國電信Wing平臺等。同樣,電動汽車產(chǎn)業(yè)的發(fā)展推動著共享充電樁需求的急劇增速,文中以共享充電樁物聯(lián)網(wǎng)軟件平臺架構(gòu)建設(shè)思路為依托,提出一種物聯(lián)網(wǎng)軟件平臺系統(tǒng)架構(gòu)設(shè)計方案。
關(guān)鍵詞:物聯(lián)網(wǎng);軟件架構(gòu);平臺架構(gòu);共享充電樁;分布式架構(gòu);雙向異步通信
中圖分類號:TP39文獻標識碼:A文章編號:2095-1302(2019)12-0-03
0 引 言
物聯(lián)網(wǎng)實現(xiàn)了物質(zhì)世界的數(shù)字化,以互聯(lián)網(wǎng)為基礎(chǔ),結(jié)合通信技術(shù)與傳感器達到感知萬物的能力。物聯(lián)網(wǎng)具有數(shù)量龐大、通信頻繁、實時性高、海量存儲等特點,傳統(tǒng)軟件技術(shù)無法滿足物聯(lián)網(wǎng)設(shè)備的接入要求,需采用新一代信息技術(shù),如云計算、大數(shù)據(jù)、分布式等技術(shù)手段,將單機無法承載的海量通信接入和海量數(shù)據(jù)存儲分散,從而滿足物聯(lián)網(wǎng)應(yīng)用的要求。共享充電樁行業(yè)伴隨新能源汽車產(chǎn)業(yè)的發(fā)展而快速崛起,2015年出臺的《關(guān)于加快電動汽車充電基礎(chǔ)設(shè)施建設(shè)的指導(dǎo)意見》使共享充電樁行業(yè)迎來發(fā)展的機會。大量充電樁設(shè)備的接入對軟件系統(tǒng)平臺提出了更高的要求,本文基于共享充電樁軟件系統(tǒng)平臺,設(shè)計出一套適合物聯(lián)網(wǎng)設(shè)備接入的通用型物聯(lián)網(wǎng)軟件系統(tǒng)平臺架構(gòu),為物聯(lián)網(wǎng)平臺建設(shè)提供解決方案。
1 總體架構(gòu)設(shè)計
系統(tǒng)平臺主要由充電樁物理感知層、網(wǎng)絡(luò)接入層、網(wǎng)絡(luò)通信層、業(yè)務(wù)處理層、應(yīng)用層五個層次組成,架構(gòu)如圖1所示。
在充電樁物理感知層,電動汽車首先通過汽車自身的電池管理系統(tǒng)與充電樁CAN總線進行感知與交互,包括充電槍連接狀態(tài)感知、BMS運行狀態(tài)感知、電動車充電電量感知等,電動汽車將自身相關(guān)狀態(tài)上報到充電樁,充電樁根據(jù)狀態(tài)做出對應(yīng)的處理。例如,充電樁感知到電動汽車處于插槍狀態(tài)時,充電樁生成插槍狀態(tài)的報文并發(fā)送到軟件管理后臺。
在網(wǎng)絡(luò)接入層,以物聯(lián)網(wǎng)卡為基礎(chǔ),TCP/IP協(xié)議作為網(wǎng)絡(luò)傳輸協(xié)議。充電樁通過外部或內(nèi)部感知各種設(shè)備的連接及運行狀態(tài),根據(jù)通信報文協(xié)議生成對應(yīng)的狀態(tài)報文。報文經(jīng)物聯(lián)網(wǎng)卡以網(wǎng)絡(luò)傳輸?shù)姆绞絺鬏數(shù)杰浖芾砗笈_。
在網(wǎng)絡(luò)通信層,軟件管理后臺與充電樁之間建立TCP Socket通信連接。由充電樁發(fā)起Socket通信連接請求,首先經(jīng)過負載均衡服務(wù)器對通信連接服務(wù)器進行負載計算,選擇其中一個通信服務(wù)器與充電樁完成Socket連接,并將充電樁注冊信息存儲在分布式緩存系統(tǒng)中。通信服務(wù)器負責(zé)維持Socket通信狀態(tài),實現(xiàn)與充電樁之間的雙工通信。
在業(yè)務(wù)處理層,網(wǎng)絡(luò)通信層的通信服務(wù)器經(jīng)由分布式消息隊列系統(tǒng)發(fā)送消息到集群業(yè)務(wù)處理服務(wù)器,集群業(yè)務(wù)處理服務(wù)器根據(jù)自身負載情況選擇是否消費隊列消息。業(yè)務(wù)處理服務(wù)器根據(jù)消息內(nèi)容判斷業(yè)務(wù)類型及處理方式,并將數(shù)據(jù)及時存入分布式數(shù)據(jù)庫中(如HBase,MongoDB)。業(yè)務(wù)處理服務(wù)器處理完消息后從分布式緩存系統(tǒng)中獲取到負責(zé)對應(yīng)充電樁Socket通信連接的通信服務(wù)器,并向該通信服務(wù)器專屬隊列通道發(fā)送回應(yīng)消息,從而實現(xiàn)與充電樁之間異步可靠的雙向通信。
在應(yīng)用層,各種相關(guān)應(yīng)用與業(yè)務(wù)處理服務(wù)器之間以Restful接口進行無狀態(tài)通信。應(yīng)用可通過業(yè)務(wù)處理服務(wù)器對外開放的接口,實現(xiàn)向充電樁發(fā)送指令以及接收充電樁傳送過來的消息,系統(tǒng)也可實現(xiàn)各種定制化功能,如APP掃碼充電、刷卡充電等。
2 負載均衡調(diào)度
常用的負載均衡調(diào)度算法主要有輪詢、最小連接、散列等,考慮到不同服務(wù)器的性能、網(wǎng)絡(luò)環(huán)境、物理條件等因素,可在這些算法基礎(chǔ)上做相應(yīng)加權(quán),從而達到負載均衡的目的。整個系統(tǒng)平臺在Socket通信服務(wù)、隊列消費、Restful接口服務(wù)部分都實現(xiàn)了負載均衡,需要根據(jù)具體實際情況選擇合適的調(diào)度算法。
在通信服務(wù)器和Restful接口服務(wù)層,通常可選擇加權(quán)輪詢或加權(quán)最小連接的方式實現(xiàn)。具體算法如下。
(1)加權(quán)輪詢
假設(shè)有一組服務(wù)器S,服務(wù)器數(shù)量為n,則:
指定一個指示變量i表示上一次選擇的服務(wù)器,初始值為-1,指示變量w為當(dāng)前調(diào)度的權(quán)值,則服務(wù)器i的權(quán)值為Wi,則:
Wmax=max(W0, W1, W2, ..., Wn-1),表示所有服務(wù)器集合的最大權(quán)值;
Gmax=(W0, W1, W2, ..., Wn-1),表示所有服務(wù)器集合的權(quán)值的最大公約數(shù)。
當(dāng)一次請求進入時,執(zhí)行如下:
while (true) {
i= (i+1) mod n;
if (i == 0) {
w = w - Gmax;
if (w<= 0) {
w = Wmax;
if (w == 0)
return NULL;
}
}
if (Wi>= w)
return Si;
}
(2)加權(quán)最小連接
假設(shè)有一組服務(wù)器S,服務(wù)器數(shù)量為n,則:
S={S0, S1, S2, ..., Sn-1}
指定一個指示變量i,指示變量Ci為服務(wù)器Si的當(dāng)前連接數(shù),則服務(wù)器i的權(quán)值為Wi,則:
表示所有服務(wù)器當(dāng)前連接數(shù)總和。
當(dāng)一次請求進入時,執(zhí)行如下:
for (m = 0;m < n; m++) {
if (Wm> 0) {
for (i = m+1; i < n; i++) {
if (Cm*Wi>Ci*Wm)
m = i;
}
return Sm;
}
}
return NULL;
在業(yè)務(wù)處理層,每個業(yè)務(wù)處理服務(wù)器的消費能力不一致,任務(wù)的處理時間也會存在差異,輪詢的方式導(dǎo)致消費能力不足的服務(wù)器無法達到預(yù)期效果,消息不能及時處理。本文推薦使用公平分發(fā)調(diào)度方式,使消息都可得到正確的處理及反饋。具體算法如下。
公平分發(fā):
假設(shè)有一組服務(wù)器S,服務(wù)器數(shù)量為n,則:
S={S0, S1, S2, ..., Sn-1}
指定一個指示變量i,初始值為-1,初始狀態(tài)下空閑服務(wù)器Sempty={S0, S1, S2, ..., Sn-1},當(dāng)隊列中產(chǎn)生一條消息時,執(zhí)行如下:
while (true) {
i= (i+ 1) mod n;
if(Si∈Sempty){
Sempty remove Si;
return Si;
}
}
當(dāng)消費服務(wù)器完成消息消費時,執(zhí)行如下:
Sempty add Si;
3 平臺優(yōu)勢與特點
(1)分布式架構(gòu)。平臺整體采用分布式架構(gòu)設(shè)計方案,支持各個節(jié)點的單一部署與集群部署,伸縮性強,從而避免了單點故障問題。
(2)服務(wù)粒度細。整個系統(tǒng)平臺劃分為幾個層次,不是大而全的系統(tǒng)架構(gòu),更偏向微服務(wù)架構(gòu)方案,每個服務(wù)負責(zé)具體單一的業(yè)務(wù)方向,系統(tǒng)維護更加簡單。
(3)跨平臺通信。平臺節(jié)點支持跨平臺通信,不限制平臺與開發(fā)語言,對外應(yīng)用服務(wù)接口采用Restful,協(xié)議友好,具備平臺無關(guān)性,使用簡單。
4 結(jié) 語
本文設(shè)計了基于分布式架構(gòu)的物聯(lián)網(wǎng)應(yīng)用基礎(chǔ)設(shè)施和服務(wù)平臺,解決了傳統(tǒng)單體系統(tǒng)工程架構(gòu)工程量大、維護復(fù)雜等問題。該系統(tǒng)平臺架構(gòu)方案能夠很好地解決傳統(tǒng)單體系統(tǒng)工程的問題,在架構(gòu)設(shè)計方面充分考慮不同節(jié)點能最大支撐的負載量,支持服務(wù)水平擴展,方便根據(jù)不同節(jié)點自身情況選擇合適的硬件以及硬件數(shù)量。通信服務(wù)與業(yè)務(wù)服務(wù)之間采用分布式隊列的方式實現(xiàn)服務(wù)間的通信與消息傳遞,從而達到消息的異步傳遞與處理,保障通信服務(wù)的高可用。分布式緩存解決了業(yè)務(wù)服務(wù)與通信服務(wù)之間的消息通信,保障消息的雙向異步通信。通過該系統(tǒng)平臺的架構(gòu)設(shè)計方案,緩解了現(xiàn)有物聯(lián)網(wǎng)軟件平臺負載量低、性能不高的情況,為百萬級物聯(lián)網(wǎng)軟件平臺建設(shè)提供了思路。
參 考 文 獻
[1]楊世敬.基于智慧路燈的智慧城市系統(tǒng)研究[J].科技風(fēng),2019(11):86.
[2]吳振宇.基于Web的物聯(lián)網(wǎng)應(yīng)用體系架構(gòu)和關(guān)鍵技術(shù)研究[D].北京:北京郵電大學(xué),2013.
[3]屈鋼,鄧健青,韓云路.Linux集群技術(shù)研究[J].計算機應(yīng)用研究,2005(5):100-101.
[4]劉博偉,黃瑞章.基于HBase的金融時序數(shù)據(jù)存儲系統(tǒng)[J].中國科技論文,2016,11(20):2387-2392.
[5]楊揚,田茂,高士木,等.基于Netty的城市智慧路燈管理系統(tǒng)[J].物聯(lián)網(wǎng)技術(shù),2018,8(4):84-86.
[6]陳強,武佳佳.基于Netty高并發(fā)物聯(lián)網(wǎng)服務(wù)器研究與設(shè)計[J].電子技術(shù)與軟件工程,2018(7):34-35.
[7]佘鵬.LVS集群加權(quán)最小連接調(diào)度算法的研究[J].計算機與數(shù)字工程,2019,47(4):794-798.
[8]王亮,高曉佳,王宏國,等.基于LVS的大規(guī)模網(wǎng)絡(luò)負載均衡技術(shù)研究[J].科技傳播,2018,10(23):115-117.
[9]馬巍,武欣嶸,鄭翔,等.Rabbit MQ在實時監(jiān)控系統(tǒng)中的應(yīng)用[J].軍事通信技術(shù),2017,38(1):82-85.
[10]楊博雄,倪玉華,劉琨,等. 現(xiàn)代物聯(lián)網(wǎng)體系架構(gòu)中核心技術(shù)標準及其發(fā)展應(yīng)用研究[J].物聯(lián)網(wǎng)技術(shù),2013,3(1):71-76.