李小婧,任 勇,晉 濤,裴 楚
(1.國網(wǎng)山西省電力公司電力科學研究院 太原 030001;2.國網(wǎng)山西省電力公司設(shè)備部 太原 030001)
隨著社會經(jīng)濟的建設(shè)發(fā)展,電力網(wǎng)絡(luò)尤其是配電站房及其設(shè)備規(guī)模的持續(xù)增長,對其如何加大安全保障、減少運檢人員勞動強度,以及如何及時發(fā)現(xiàn)故障隱患和安全違規(guī)行為提出了更大挑戰(zhàn)。
本文通過在配電站房部署邊緣物聯(lián)代理裝置,采用輕量型容器化技術(shù),實現(xiàn)各業(yè)務應用APP 前置化及業(yè)務處理,并通過容器內(nèi)置視覺分析算法,以及同云端進行協(xié)同交付,將數(shù)據(jù)采集及業(yè)務應用、智能違章視覺識別處理到前端,提高了數(shù)據(jù)處理效率,增強了配電站房的運行安全水平和事故隱患分析效率[1]。
與常規(guī)的容器化技術(shù)不同,本文通過輕量化設(shè)計,構(gòu)建輕量型的云端和邊緣容器新型架構(gòu)體系,摒棄集群管理等冗余功能,簡化了云邊通信協(xié)議,極大降低了容器管理部署的復雜度。同時針對工業(yè)互聯(lián)網(wǎng)的設(shè)備監(jiān)控特點,重點加強設(shè)備網(wǎng)絡(luò)管理、日志記錄、應用監(jiān)管、實時數(shù)據(jù)采集、數(shù)據(jù)壓縮存儲、數(shù)據(jù)加密傳輸?shù)裙δ?,降低邊緣物?lián)代理對硬件資源的要求,同時滿足了配電網(wǎng)尤其是配電站房運檢業(yè)務在新型電力系統(tǒng)下的信息化發(fā)展形勢需要[2]。
參考《邊緣物聯(lián)代理技術(shù)要求》(Q/GDW 12113-2021),在邊緣物聯(lián)代理中需采用容器運行、管理業(yè)務應用APP。采用容器化技術(shù),可動態(tài)添加、刪除、更新應用程序APP,使邊緣計算平臺有良好的可擴展性和可維護性。同時,通過容器引擎可以限制和監(jiān)控應用程序的資源占用情況,并對程序運行狀態(tài)進行健康檢查,提升整個系統(tǒng)的穩(wěn)健性[3]。
通過邊緣代理,在邊端側(cè)將數(shù)據(jù)處理、業(yè)務分析及視覺智能算法內(nèi)置在容器中,能夠減輕對物聯(lián)網(wǎng)傳輸帶寬的壓力,且當前容器化技術(shù)基本能較好地實現(xiàn)虛擬化支撐各業(yè)務應用APP 管理和部署[4]。通過邊緣計算平臺框架利用虛擬化技術(shù)達到普適性,即不受限于操作系統(tǒng)、編程環(huán)境和硬件平臺的選擇,同時虛擬化技術(shù)還支持系統(tǒng)資源隔離,應用程序只在各自限定的虛擬環(huán)境內(nèi)運行,相互間不受影響,提高了系統(tǒng)的穩(wěn)定性和安全性。容器化技術(shù)原理如圖1 所示,其本質(zhì)是采用docker 容器在虛擬化環(huán)境中實現(xiàn)了分布式系統(tǒng)的部署和管理,并可根據(jù)實際需求部署和管理各業(yè)務應用,實現(xiàn)對業(yè)務的支撐[5]。與虛擬機相比,容器化技術(shù)雖然在普適性和隔離度方面有所減弱,但CPU、內(nèi)存等資源占用少,啟動快,因此當前大部分開源邊緣計算平臺框架都采用容器技術(shù)[6]。
圖1 容器化原理圖
云邊協(xié)同屬于邊緣計算的范疇,核心價值在于將云服務向用戶側(cè)延伸。2019 年開始出現(xiàn)一些影響力較大的云邊協(xié)同項目,以華為KubeEdge 和Rancher K3S 為代表。如圖2 所示,這些項目試圖在容器化技術(shù)和Kubernetes(K8S)平臺調(diào)度系統(tǒng)基礎(chǔ)上統(tǒng)一云端和邊緣側(cè)的軟件分發(fā)、部署、調(diào)度等方式[7]。
圖2 常規(guī)容器化架構(gòu)圖
KubeEdge 等項目設(shè)計架構(gòu)主要由K8S 集群、云端部分和邊緣節(jié)點部分組成。云端主要包含邊緣節(jié)點調(diào)度器、通信組件等,邊緣節(jié)點包含容器調(diào)度器、通信組件等。但邊緣節(jié)點不具備自我調(diào)度能力,其容器部署通過云端下發(fā)指令實現(xiàn)。在邊緣節(jié)點上運行的容器以POD 為最小管理單元,不以容器為基礎(chǔ)單元,POD 是K8S 針對集群調(diào)度設(shè)計的一種容器管理方式[8]。無論是K3S 還是KubeEdge等項目,本身并不負責存儲應用鏡像,應用鏡像存儲在獨立的應用倉庫中。應用開發(fā)人員將開發(fā)的應用打包成鏡像上傳到應用倉庫,K8S 調(diào)度中心將應用信息下發(fā)到邊緣節(jié)點,邊緣節(jié)點從應用倉庫拉取應用進行部署。邊緣節(jié)點支持容器調(diào)度功能,假設(shè)有10 個邊緣節(jié)點,需要在這些節(jié)點上部署8 個相同應用,用戶下發(fā)指令后,容器調(diào)度平臺會自動根據(jù)每個節(jié)點的資源情況,將8 個應用部署在10 個邊緣節(jié)點組成的集群中,具體哪個節(jié)點運行應用是集群自動調(diào)度的,如果某應用意外停止,集群會將該應用在其他合適的邊緣節(jié)點上再次部署[9]。
雖然KubeEdge 等云邊項目正在積極推動云端服務向邊緣側(cè)延伸,但將其應用于電力等傳統(tǒng)工業(yè)互聯(lián)網(wǎng)領(lǐng)域時,存在很多過度設(shè)計和不當設(shè)計的問題,主要有以下兩點:1)常規(guī)架構(gòu)中云端與K8S高度耦合,云邊API 接口設(shè)計復雜。文章所述的配電站房業(yè)務應用場景中,邊緣物聯(lián)代理更多關(guān)注對終端設(shè)備的管理,無需考慮云端復雜的接口和調(diào)度功能;2)常規(guī)架構(gòu)中POD 作為最小容器部署管理單元,對邊緣設(shè)備硬件資源要求較高,而且POD提供的工作節(jié)點動態(tài)擴展功能在文章所述業(yè)務場景中較為冗余。
此外,文章所述業(yè)務場景需考慮結(jié)合配電網(wǎng)的業(yè)務特點,還需考慮實現(xiàn)運檢業(yè)務應用以及深度模型算法的集成需求,如業(yè)務APP 應用及基于AI 視覺分析的算法模型;其次也需考慮如何降低對邊緣物聯(lián)代理的硬件資源要求[10]。
基于前文闡述,本文開展基于邊緣物聯(lián)代理的輕量型容器架構(gòu)體系研究。如圖3 所示,常規(guī)的K8S 架構(gòu)中,K8S 通過一個主節(jié)點和若干工作節(jié)點構(gòu)成的集群,分布在若干服務器上,一個服務器可以裝載多個工作節(jié)點,工作節(jié)點內(nèi)有若干POD,POD 中集成若干容器。K8S 調(diào)度工作節(jié)點在服務器上的部署和POD 在工作節(jié)點的部署,Docker 按照K8S 的調(diào)度指令執(zhí)行容器裝載APP 和容器啟動、運行、停止等操作[11]。
圖3 云端K8S 節(jié)點分布
云端業(yè)務、服務軟件使用K8S 調(diào)度其微服務運行。當業(yè)務量、服務需求增加時,微服務會增加副本投入運行,相應地K8S 主節(jié)點會啟動更多的POD、容器,并把它們部署到工作節(jié)點中。當工作節(jié)點所在的服務器負荷已滿,K8S 在新的服務器上創(chuàng)建新的工作節(jié)點,對POD、容器重新部署,自動實現(xiàn)集群動態(tài)擴展。這種集群、動態(tài)擴展的方式程序代碼量大,占用資源也多。
圖4 為配電站房業(yè)務應用場景,邊緣物聯(lián)代理通過接入感知終端實現(xiàn)數(shù)據(jù)采集,通過接入視頻監(jiān)控實現(xiàn)安全違章等AI 應用,通過容器化技術(shù)實現(xiàn)數(shù)據(jù)采集、告警分析、違章識別等APP 以實現(xiàn)業(yè)務支撐。
圖4 配電站房業(yè)務應用場景
在配電站房的應用場景中,主節(jié)點工作在云端,工作節(jié)點部署在邊緣物聯(lián)代理中,每個邊緣物聯(lián)代理只有一個工作節(jié)點,連接的傳感器和攝像機的數(shù)量、種類較固定,傳感數(shù)據(jù)的存儲、處理、傳輸?shù)華PP 功能也較穩(wěn)定,因此節(jié)點中的容器部署比較穩(wěn)定,用不到集群功能、POD 集成、工作節(jié)點動態(tài)擴展功能[12]。針對上述問題,結(jié)合配電站房的場景特點和功能需求,參照圖2 所示常規(guī)容器化架構(gòu),本文提出輕量化改進架構(gòu),如圖5 所示,具體改進設(shè)計如下:
圖5 輕量化云邊協(xié)同架構(gòu)圖
1) 弱化K8S 集群的調(diào)度能力,通過對K8S API 服務和云調(diào)度功能進行裁剪,將APP 應用調(diào)度下層到云端邊緣節(jié)點調(diào)度器和邊端側(cè)容器調(diào)度器直接管理;
2)對冗余的 POD 組件裁剪,減輕邊緣代理設(shè)備對硬件資源的開銷;
3)結(jié)合業(yè)務需要,增加算法倉庫和算法服務,實現(xiàn)對深度學習模型算法的集成和管理;
4)增加日志管理和時序數(shù)據(jù)存儲組件,實現(xiàn)設(shè)備運維功能和數(shù)據(jù)本地存儲功能。
具體實現(xiàn)方面,本文在深入解讀Docker 和K8S 的基礎(chǔ)上,輕量型容器在原K8S 架構(gòu)基礎(chǔ)上,對其軟件組件節(jié)點進行重組及設(shè)計,輕量型容器架構(gòu)及組件節(jié)點設(shè)計如圖6 所示。
圖6 輕量型容器節(jié)點分布
在邊緣輕量型容器化云邊協(xié)同體系中,云端的主節(jié)點保留K8S 全部功能的同時,需增加SensEdge Manager 軟件模塊來負責與邊緣物聯(lián)代理的交互。
SensEdge Manager 提供對邊緣物聯(lián)代理的統(tǒng)一管理功能,包括:邊緣物聯(lián)代理接入授權(quán)管理、加密通信、云邊鏈接管理、邊緣物聯(lián)代理狀態(tài)查詢。邊緣物聯(lián)代理上容器及容器內(nèi)APP 啟動、停止、創(chuàng)建、刪除、查詢管理。
邊緣物聯(lián)代理上的工作節(jié)點包括SensEdge Agent、 Message Bus 消 息 總 線、 EdgeDaemon、Monitoring、CNI、CSI、Edge Store、Containerd和RunC 這9 個軟件模塊[13]。
1) SensEdge Agent 管理邊緣物聯(lián)代理,功能包括:授權(quán)接入云端、加密通信、保持云邊鏈接;響應云端命令管理本地容器和APP、查詢本地容器和APP 狀態(tài)。
2) Message Bus 消息總線是APP 數(shù)據(jù)的中轉(zhuǎn)站,APP 之間不能直接傳輸數(shù)據(jù),由消息總線匯聚、分發(fā)。
3) EdgeDaemon 監(jiān)控邊緣物聯(lián)代理的本地狀態(tài),功能包括:查詢邊緣物聯(lián)代理的本地網(wǎng)絡(luò)狀態(tài)、Flash 存儲占用率、內(nèi)存占用率,響應SensEdge Agent 的查詢指令。
4) Monitoring 監(jiān)測本地網(wǎng)絡(luò)狀態(tài)、flash 存儲使用狀況、內(nèi)存使用狀況。
5) CNI 提供容器APP 與網(wǎng)絡(luò)的接口。
6) CSI 提供容器APP 與數(shù)據(jù)庫的接口。
7) Edge Store 是邊緣物聯(lián)代理的本地數(shù)據(jù)庫,存儲與容器管理有關(guān)的永久化存儲數(shù)據(jù)在本地的備份及其他數(shù)據(jù)。
8) Containerd 管理完整的容器生命周期,包括容器APP 的下載和備份、容器APP 的執(zhí)行和管理等。
9) RunC 負責運行容器APP。
本文在輕量型容器技術(shù)的基礎(chǔ)上研發(fā)云邊協(xié)同體系,主要通過云端SensEdgeManager 和邊緣SensEdge Agent 之間使用MQTT/HTTPS 協(xié)議的云邊交互,實現(xiàn)如圖7 所示的應用APP 協(xié)同、數(shù)據(jù)協(xié)同、智能協(xié)同[14]。
圖7 配電站房云邊協(xié)同
應用APP 協(xié)同:云端管理應用APP 倉庫,調(diào)度應用APP 在各邊緣物聯(lián)代理的部署;邊緣物聯(lián)代理按照云端的調(diào)度管理運行APP。
數(shù)據(jù)協(xié)同:邊緣物聯(lián)代理主要負責傳感數(shù)據(jù)的采集,并進行本地處理和封裝,上傳給云端;云端提供數(shù)據(jù)關(guān)聯(lián)、融合、綜合分析、存儲和展示。
智能協(xié)同:云端管理深度學習模型算法倉庫及其在邊緣物聯(lián)代理的部署;邊緣物聯(lián)代理按照云端調(diào)度運行深度學習模型,實現(xiàn)邊緣智能[15]。
云邊協(xié)同交付時序設(shè)計和步驟如圖8 所示。
圖8 云邊交互示例
設(shè)計說明:
1) SensEdge Manager 部署在云端,SensEdge Agent 和EdgeDaemon 部署在邊端;
2) SensEdge Manager 創(chuàng)建授權(quán)碼;SensEdge Agent 手動或自動輸入已分配的授權(quán)碼,并將授權(quán)碼發(fā)往SensEdge Manager 進行校驗;
3) SensEdge Manager 校驗成果后進行激活,并將狀態(tài)請求發(fā)往邊緣代理;SensEdge Agent 將狀態(tài)請求發(fā)往EdgeDaemon;
4) EdgeDaemon 獲取邊緣代理CPU 占用率、內(nèi)存占用率等資源信息,并發(fā)回狀態(tài)響應到SensEdge Agent;SensEdge Agent 接收到狀態(tài)響應后傳給SensEdge Manager;
5) SensEdge Manager 下發(fā)安裝容器命令給SensEdge Agent;SensEdge Agent 進行容器文件包下載,并執(zhí)行安裝操作;
6) SensEdge Agent 回復容器安裝完畢響應。
按照《物聯(lián)管理平臺技術(shù)和功能規(guī)范》第4 部分:《邊緣物聯(lián)代理與物聯(lián)管理平臺交互協(xié)議規(guī)范》(Q/GDW12106.4-2021)設(shè)計,對邊端協(xié)同間接口及交互協(xié)議進行定義[16],如表1 所示。
表1 交互接口類別表
為支撐配電站房運檢業(yè)務開展,結(jié)合實際應用需求,對配電站房智能邊緣物聯(lián)代理容器內(nèi)研發(fā)部署的APP 進行規(guī)劃,如圖9 所示。
圖9 配電站房APP 規(guī)劃
各APP 對應的功能設(shè)計說明如下。
1)時序化數(shù)據(jù)封裝APP:將感知數(shù)據(jù)、數(shù)據(jù)處理結(jié)果、視頻分析結(jié)果等附加上時鐘信息、地理信息(或配電站房編號)封裝,傳至云端。
2)環(huán)境APP:溫濕度監(jiān)測、煙霧監(jiān)測、水浸監(jiān)測、臭氧監(jiān)測、SF6+氧氣監(jiān)測等傳感數(shù)據(jù)的處理、異常判別,生成環(huán)境感知數(shù)據(jù)包。
3)中壓開關(guān)柜APP:電流、電壓、局放、溫度等傳感數(shù)據(jù)的處理、異常判別,生成中壓開關(guān)柜感知數(shù)據(jù)包。
4)中壓電纜APP:電纜接頭溫度、局放、接地引下線電流、負荷電流等傳感數(shù)據(jù)的處理、異常判別,生成中壓電纜感知數(shù)據(jù)包。
5)配電變壓器APP:溫度、電流、局放、噪聲等傳感數(shù)據(jù)的處理、異常判別,生成配電變壓器感知數(shù)據(jù)包。
6)低壓配電柜APP:三相電流、溫度等傳感數(shù)據(jù)的處理、異常判別,生成中壓低壓配電柜感知數(shù)據(jù)包。
7)運行分析APP:進行功率因數(shù)、負荷比、電壓水平和三相不平衡等數(shù)據(jù)的處理,對設(shè)備狀態(tài)進行綜合研判和異常判別。
8)告警APP:有異常時報警。
9)違規(guī)判別APP:根據(jù)深度學習模型的識別結(jié)果,判別是否有違反安全規(guī)范的行為,生成違規(guī)判別數(shù)據(jù)包[17]。
為支撐配電站房運檢業(yè)務的開展,需對現(xiàn)場視頻監(jiān)控采集到的人員和環(huán)境視頻數(shù)據(jù)進行視覺AI 智能分析。在本文邊緣代理裝置中,對模型倉庫以及模型并行運算調(diào)度進行設(shè)計。
1)算法及模型倉庫
算法倉庫集成了多種深度學習模型進行統(tǒng)一管理。如圖10 所示,根據(jù)配電站房的需求,算法倉庫集成人員管控、安全違章行為、電流電壓、指示燈狀態(tài)、開關(guān)位置和煙火等深度學習模型。算法倉庫管理包括對深度學習模型使用授權(quán)的管理,并提供深度學習模型添加、刪除、查詢和下載的接口[18]。
圖10 算法倉庫設(shè)計圖
2)模型并行運算調(diào)度
視頻監(jiān)控數(shù)據(jù)接入到邊緣代理后,如何實現(xiàn)多路視頻并發(fā)處理,需設(shè)計視頻數(shù)據(jù)與深度學習模型對應的并行運算及調(diào)度算法,如圖11 所示。
每個深度學習計算IC 按模型的復雜程度及運算時間加載單個或多個深度學習模型。調(diào)度算法根據(jù)算法模型所對應的對象開展不同頻率的識別任務。一般情況下,與人有關(guān)的識別任務優(yōu)先級高,頻度高(10~20 幀/s),輸入的視頻數(shù)據(jù)流流量高。電壓電流、指示燈、開關(guān)等識別任務優(yōu)先級低,頻度低(1 幀/s),輸入的視頻數(shù)據(jù)流流量低。
通過上述調(diào)度算法,將深度學習模型合理部署在各個深度學習計算IC 中,將視頻數(shù)據(jù)合理地分配到各個深度學習計算IC,實現(xiàn)了數(shù)據(jù)、運算不堵塞,各深度學習計算IC 負荷均衡[19]。
將K8S 進行輕量型改造后,在邊緣側(cè)去掉了原集群調(diào)度組件,裁減其部分管理面及控制面的功能。由于改進主要在agent 也即邊緣代理側(cè),無須太關(guān)注云端server 側(cè)資源的消耗。測試方法主要從邊緣側(cè)分別用傳統(tǒng)K8S 容器及輕量型邊緣代理容器部署0~100 個相同的測試應用,分別觀測兩者的內(nèi)存和CPU 占用情況進行資源消耗性能的對比分析,測試機規(guī)格為4vCPU,8GB RAM,操作系統(tǒng)為linux。
1)內(nèi)存消耗測試對比
從圖12 可以看出,對K8S 傳統(tǒng)方式,其agent 的內(nèi)存消耗明顯高于輕量型agent。在不加載應用的情況,K8S agent 占到150+MB 的內(nèi)存,輕量型內(nèi)存大概占用50 MB;滿載情況下,K8S agent 占到230+MB 的內(nèi)存,輕量型內(nèi)存占用70 MB。
2) CPU 消耗測試對比
從圖13 可以看出,輕量型agent CPU 消耗要比K8S agent 低不少。在不加載應用的情況,K8S agent 占到9%的內(nèi)存,輕量型大概占用不到2%;滿載情況下,K8S agent 占到12%+的CPU,輕量型agent CPU 占用不到3%。
圖13 CPU 消耗圖
本文基于配電站房運檢業(yè)務的需求,對基于邊緣物聯(lián)代理容器化技術(shù)進行研究,并對大型軟件容器化及輕量型容器化技術(shù)展開對比分析,結(jié)合本文配電站房運檢業(yè)務特點,進行了輕量型容器技術(shù)的技術(shù)選型。同時,對如何實現(xiàn)容器與云邊有效協(xié)同進行了研究,并對其接口協(xié)議進行了設(shè)計。此外,基于本文研究的業(yè)務特點,對滿足其業(yè)務應用的APP 以及算法模型倉庫進行初步設(shè)計,通過在算法模型倉庫中采用并行運算及調(diào)度算法,可實現(xiàn)視頻監(jiān)控數(shù)據(jù)接入到邊緣代理后,多路視頻的并發(fā)處理[20]。
本文研究基于邊緣代理的輕量型新型云邊端架構(gòu)體系,摒棄集群管理等冗余功能,簡化了云邊通信協(xié)議,極大降低了容器管理部署的復雜度。同時針對工業(yè)互聯(lián)網(wǎng)的設(shè)備監(jiān)控特點,重點加強設(shè)備網(wǎng)絡(luò)管理、日志記錄、應用監(jiān)管、實時數(shù)據(jù)采集、數(shù)據(jù)壓縮存儲、數(shù)據(jù)加密傳輸?shù)裙δ?。?jīng)實驗仿真驗證,與傳統(tǒng)K8S 容器化技術(shù)對比,本文研究成果較大減少了邊緣代理對資源的需求,同時滿足了配電網(wǎng)尤其是配電站房運檢業(yè)務應用的開展,具備較好的先進性和推廣性。