談榮強 吳森



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