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