李小婧,任 勇,晋 涛,裴 楚
(1.国网山西省电力公司电力科学研究院 太原 030001;2.国网山西省电力公司设备部 太原 030001)
随着社会经济的建设发展,电力网络尤其是配电站房及其设备规模的持续增长,对其如何加大安全保障、减少运检人员劳动强度,以及如何及时发现故障隐患和安全违规行为提出了更大挑战。
本文通过在配电站房部署边缘物联代理装置,采用轻量型容器化技术,实现各业务应用APP 前置化及业务处理,并通过容器内置视觉分析算法,以及同云端进行协同交付,将数据采集及业务应用、智能违章视觉识别处理到前端,提高了数据处理效率,增强了配电站房的运行安全水平和事故隐患分析效率[1]。
与常规的容器化技术不同,本文通过轻量化设计,构建轻量型的云端和边缘容器新型架构体系,摒弃集群管理等冗余功能,简化了云边通信协议,极大降低了容器管理部署的复杂度。同时针对工业互联网的设备监控特点,重点加强设备网络管理、日志记录、应用监管、实时数据采集、数据压缩存储、数据加密传输等功能,降低边缘物联代理对硬件资源的要求,同时满足了配电网尤其是配电站房运检业务在新型电力系统下的信息化发展形势需要[2]。
参考《边缘物联代理技术要求》(Q/GDW 12113-2021),在边缘物联代理中需采用容器运行、管理业务应用APP。采用容器化技术,可动态添加、删除、更新应用程序APP,使边缘计算平台有良好的可扩展性和可维护性。同时,通过容器引擎可以限制和监控应用程序的资源占用情况,并对程序运行状态进行健康检查,提升整个系统的稳健性[3]。
通过边缘代理,在边端侧将数据处理、业务分析及视觉智能算法内置在容器中,能够减轻对物联网传输带宽的压力,且当前容器化技术基本能较好地实现虚拟化支撑各业务应用APP 管理和部署[4]。通过边缘计算平台框架利用虚拟化技术达到普适性,即不受限于操作系统、编程环境和硬件平台的选择,同时虚拟化技术还支持系统资源隔离,应用程序只在各自限定的虚拟环境内运行,相互间不受影响,提高了系统的稳定性和安全性。容器化技术原理如图1 所示,其本质是采用docker 容器在虚拟化环境中实现了分布式系统的部署和管理,并可根据实际需求部署和管理各业务应用,实现对业务的支撑[5]。与虚拟机相比,容器化技术虽然在普适性和隔离度方面有所减弱,但CPU、内存等资源占用少,启动快,因此当前大部分开源边缘计算平台框架都采用容器技术[6]。
图1 容器化原理图
云边协同属于边缘计算的范畴,核心价值在于将云服务向用户侧延伸。2019 年开始出现一些影响力较大的云边协同项目,以华为KubeEdge 和Rancher K3S 为代表。如图2 所示,这些项目试图在容器化技术和Kubernetes(K8S)平台调度系统基础上统一云端和边缘侧的软件分发、部署、调度等方式[7]。
图2 常规容器化架构图
KubeEdge 等项目设计架构主要由K8S 集群、云端部分和边缘节点部分组成。云端主要包含边缘节点调度器、通信组件等,边缘节点包含容器调度器、通信组件等。但边缘节点不具备自我调度能力,其容器部署通过云端下发指令实现。在边缘节点上运行的容器以POD 为最小管理单元,不以容器为基础单元,POD 是K8S 针对集群调度设计的一种容器管理方式[8]。无论是K3S 还是KubeEdge等项目,本身并不负责存储应用镜像,应用镜像存储在独立的应用仓库中。应用开发人员将开发的应用打包成镜像上传到应用仓库,K8S 调度中心将应用信息下发到边缘节点,边缘节点从应用仓库拉取应用进行部署。边缘节点支持容器调度功能,假设有10 个边缘节点,需要在这些节点上部署8 个相同应用,用户下发指令后,容器调度平台会自动根据每个节点的资源情况,将8 个应用部署在10 个边缘节点组成的集群中,具体哪个节点运行应用是集群自动调度的,如果某应用意外停止,集群会将该应用在其他合适的边缘节点上再次部署[9]。
虽然KubeEdge 等云边项目正在积极推动云端服务向边缘侧延伸,但将其应用于电力等传统工业互联网领域时,存在很多过度设计和不当设计的问题,主要有以下两点:1)常规架构中云端与K8S高度耦合,云边API 接口设计复杂。文章所述的配电站房业务应用场景中,边缘物联代理更多关注对终端设备的管理,无需考虑云端复杂的接口和调度功能;2)常规架构中POD 作为最小容器部署管理单元,对边缘设备硬件资源要求较高,而且POD提供的工作节点动态扩展功能在文章所述业务场景中较为冗余。
此外,文章所述业务场景需考虑结合配电网的业务特点,还需考虑实现运检业务应用以及深度模型算法的集成需求,如业务APP 应用及基于AI 视觉分析的算法模型;其次也需考虑如何降低对边缘物联代理的硬件资源要求[10]。
基于前文阐述,本文开展基于边缘物联代理的轻量型容器架构体系研究。如图3 所示,常规的K8S 架构中,K8S 通过一个主节点和若干工作节点构成的集群,分布在若干服务器上,一个服务器可以装载多个工作节点,工作节点内有若干POD,POD 中集成若干容器。K8S 调度工作节点在服务器上的部署和POD 在工作节点的部署,Docker 按照K8S 的调度指令执行容器装载APP 和容器启动、运行、停止等操作[11]。
图3 云端K8S 节点分布
云端业务、服务软件使用K8S 调度其微服务运行。当业务量、服务需求增加时,微服务会增加副本投入运行,相应地K8S 主节点会启动更多的POD、容器,并把它们部署到工作节点中。当工作节点所在的服务器负荷已满,K8S 在新的服务器上创建新的工作节点,对POD、容器重新部署,自动实现集群动态扩展。这种集群、动态扩展的方式程序代码量大,占用资源也多。
图4 为配电站房业务应用场景,边缘物联代理通过接入感知终端实现数据采集,通过接入视频监控实现安全违章等AI 应用,通过容器化技术实现数据采集、告警分析、违章识别等APP 以实现业务支撑。
图4 配电站房业务应用场景
在配电站房的应用场景中,主节点工作在云端,工作节点部署在边缘物联代理中,每个边缘物联代理只有一个工作节点,连接的传感器和摄像机的数量、种类较固定,传感数据的存储、处理、传输等APP 功能也较稳定,因此节点中的容器部署比较稳定,用不到集群功能、POD 集成、工作节点动态扩展功能[12]。针对上述问题,结合配电站房的场景特点和功能需求,参照图2 所示常规容器化架构,本文提出轻量化改进架构,如图5 所示,具体改进设计如下:
图5 轻量化云边协同架构图
1) 弱化K8S 集群的调度能力,通过对K8S API 服务和云调度功能进行裁剪,将APP 应用调度下层到云端边缘节点调度器和边端侧容器调度器直接管理;
2)对冗余的 POD 组件裁剪,减轻边缘代理设备对硬件资源的开销;
3)结合业务需要,增加算法仓库和算法服务,实现对深度学习模型算法的集成和管理;
4)增加日志管理和时序数据存储组件,实现设备运维功能和数据本地存储功能。
具体实现方面,本文在深入解读Docker 和K8S 的基础上,轻量型容器在原K8S 架构基础上,对其软件组件节点进行重组及设计,轻量型容器架构及组件节点设计如图6 所示。
图6 轻量型容器节点分布
在边缘轻量型容器化云边协同体系中,云端的主节点保留K8S 全部功能的同时,需增加SensEdge Manager 软件模块来负责与边缘物联代理的交互。
SensEdge Manager 提供对边缘物联代理的统一管理功能,包括:边缘物联代理接入授权管理、加密通信、云边链接管理、边缘物联代理状态查询。边缘物联代理上容器及容器内APP 启动、停止、创建、删除、查询管理。
边缘物联代理上的工作节点包括SensEdge Agent、 Message Bus 消 息 总 线、 EdgeDaemon、Monitoring、CNI、CSI、Edge Store、Containerd和RunC 这9 个软件模块[13]。
1) SensEdge Agent 管理边缘物联代理,功能包括:授权接入云端、加密通信、保持云边链接;响应云端命令管理本地容器和APP、查询本地容器和APP 状态。
2) Message Bus 消息总线是APP 数据的中转站,APP 之间不能直接传输数据,由消息总线汇聚、分发。
3) EdgeDaemon 监控边缘物联代理的本地状态,功能包括:查询边缘物联代理的本地网络状态、Flash 存储占用率、内存占用率,响应SensEdge Agent 的查询指令。
4) Monitoring 监测本地网络状态、flash 存储使用状况、内存使用状况。
5) CNI 提供容器APP 与网络的接口。
6) CSI 提供容器APP 与数据库的接口。
7) Edge Store 是边缘物联代理的本地数据库,存储与容器管理有关的永久化存储数据在本地的备份及其他数据。
8) Containerd 管理完整的容器生命周期,包括容器APP 的下载和备份、容器APP 的执行和管理等。
9) RunC 负责运行容器APP。
本文在轻量型容器技术的基础上研发云边协同体系,主要通过云端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 创建授权码;SensEdge Agent 手动或自动输入已分配的授权码,并将授权码发往SensEdge Manager 进行校验;
3) SensEdge Manager 校验成果后进行激活,并将状态请求发往边缘代理;SensEdge Agent 将状态请求发往EdgeDaemon;
4) EdgeDaemon 获取边缘代理CPU 占用率、内存占用率等资源信息,并发回状态响应到SensEdge Agent;SensEdge Agent 接收到状态响应后传给SensEdge Manager;
5) SensEdge Manager 下发安装容器命令给SensEdge Agent;SensEdge Agent 进行容器文件包下载,并执行安装操作;
6) SensEdge Agent 回复容器安装完毕响应。
按照《物联管理平台技术和功能规范》第4 部分:《边缘物联代理与物联管理平台交互协议规范》(Q/GDW12106.4-2021)设计,对边端协同间接口及交互协议进行定义[16],如表1 所示。
表1 交互接口类别表
为支撑配电站房运检业务开展,结合实际应用需求,对配电站房智能边缘物联代理容器内研发部署的APP 进行规划,如图9 所示。
图9 配电站房APP 规划
各APP 对应的功能设计说明如下。
1)时序化数据封装APP:将感知数据、数据处理结果、视频分析结果等附加上时钟信息、地理信息(或配电站房编号)封装,传至云端。
2)环境APP:温湿度监测、烟雾监测、水浸监测、臭氧监测、SF6+氧气监测等传感数据的处理、异常判别,生成环境感知数据包。
3)中压开关柜APP:电流、电压、局放、温度等传感数据的处理、异常判别,生成中压开关柜感知数据包。
4)中压电缆APP:电缆接头温度、局放、接地引下线电流、负荷电流等传感数据的处理、异常判别,生成中压电缆感知数据包。
5)配电变压器APP:温度、电流、局放、噪声等传感数据的处理、异常判别,生成配电变压器感知数据包。
6)低压配电柜APP:三相电流、温度等传感数据的处理、异常判别,生成中压低压配电柜感知数据包。
7)运行分析APP:进行功率因数、负荷比、电压水平和三相不平衡等数据的处理,对设备状态进行综合研判和异常判别。
8)告警APP:有异常时报警。
9)违规判别APP:根据深度学习模型的识别结果,判别是否有违反安全规范的行为,生成违规判别数据包[17]。
为支撑配电站房运检业务的开展,需对现场视频监控采集到的人员和环境视频数据进行视觉AI 智能分析。在本文边缘代理装置中,对模型仓库以及模型并行运算调度进行设计。
1)算法及模型仓库
算法仓库集成了多种深度学习模型进行统一管理。如图10 所示,根据配电站房的需求,算法仓库集成人员管控、安全违章行为、电流电压、指示灯状态、开关位置和烟火等深度学习模型。算法仓库管理包括对深度学习模型使用授权的管理,并提供深度学习模型添加、删除、查询和下载的接口[18]。
图10 算法仓库设计图
2)模型并行运算调度
视频监控数据接入到边缘代理后,如何实现多路视频并发处理,需设计视频数据与深度学习模型对应的并行运算及调度算法,如图11 所示。
每个深度学习计算IC 按模型的复杂程度及运算时间加载单个或多个深度学习模型。调度算法根据算法模型所对应的对象开展不同频率的识别任务。一般情况下,与人有关的识别任务优先级高,频度高(10~20 帧/s),输入的视频数据流流量高。电压电流、指示灯、开关等识别任务优先级低,频度低(1 帧/s),输入的视频数据流流量低。
通过上述调度算法,将深度学习模型合理部署在各个深度学习计算IC 中,将视频数据合理地分配到各个深度学习计算IC,实现了数据、运算不堵塞,各深度学习计算IC 负荷均衡[19]。
将K8S 进行轻量型改造后,在边缘侧去掉了原集群调度组件,裁减其部分管理面及控制面的功能。由于改进主要在agent 也即边缘代理侧,无须太关注云端server 侧资源的消耗。测试方法主要从边缘侧分别用传统K8S 容器及轻量型边缘代理容器部署0~100 个相同的测试应用,分别观测两者的内存和CPU 占用情况进行资源消耗性能的对比分析,测试机规格为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 消耗图
本文基于配电站房运检业务的需求,对基于边缘物联代理容器化技术进行研究,并对大型软件容器化及轻量型容器化技术展开对比分析,结合本文配电站房运检业务特点,进行了轻量型容器技术的技术选型。同时,对如何实现容器与云边有效协同进行了研究,并对其接口协议进行了设计。此外,基于本文研究的业务特点,对满足其业务应用的APP 以及算法模型仓库进行初步设计,通过在算法模型仓库中采用并行运算及调度算法,可实现视频监控数据接入到边缘代理后,多路视频的并发处理[20]。
本文研究基于边缘代理的轻量型新型云边端架构体系,摒弃集群管理等冗余功能,简化了云边通信协议,极大降低了容器管理部署的复杂度。同时针对工业互联网的设备监控特点,重点加强设备网络管理、日志记录、应用监管、实时数据采集、数据压缩存储、数据加密传输等功能。经实验仿真验证,与传统K8S 容器化技术对比,本文研究成果较大减少了边缘代理对资源的需求,同时满足了配电网尤其是配电站房运检业务应用的开展,具备较好的先进性和推广性。