KubeEdge 边缘设备管理系列(三):Mapper-Framework 设计与实现
作者:王彬丞 &杨志佳 &刘家伟
针对新版本 Device-IoT 领域的更新,我们计划推出一系列的文章对这些特性进行详细的介绍,大致的文章大纲为:
Mapper 开发框架 Mapper-Framework 设计与实现
如何使用 Mapper 完成视频流数据处理
如何使用 Mapper 实现设备数据写入
如何从头开发一个 Mapper(以 modbus 为例)
在上一篇文章中,我们针对边缘设备海量数据管理,完成了 DMI 数据面能力增强,能够使用多种方式处理设备数据。在 KubeEdge 的实际设备管理中,设备管理插件 Mapper 需要实现 DMI 中的标准接口来完成自身向集群的注册以及设备的纳管,开发难度大。
因此,在 v1.15.0 版本中,为简化用户创建 Mapper 的流程,KubeEdge 推出了 Mapper 开发框架 Mapper-Framework,能够自动生成 Mapper 工程供用户使用,有效降低 Mapper 的开发门槛。
Mapper-Framework 框架简介
1.15 版本中为简化用户创建 Mapper 的流程,提出 Mapper 开发框架 Mapper-Framework。Mapper-Framework 中集成了 DMI 管理面和数据面能力。
▍管理面提供的能力
Mapper-Framework 在管理面主要实现北向设备管理的能力,包括:
1、Mapper 向云端注册
2、云端向 Mapper 下发设备信息,并实现后续设备创建、更新、删除功能
3、预留南向的设备驱动接口
▍数据面提供的能力
Mapper-Framework 在数据面主要实现设备数据推送的能力,包括:
1、Mapper-Framework 数据面内置 HTTP 以及 MQTT 等协议,能够将设备数据推送至用户应用
2、Mapper-Framework 数据面内置 InfluxDB、Redis、TDengine、MySQL 数据库的数据推送方式,能够将设备数据推送至用户数据库中存储
3、Mapper-Framework 能够将设备数据上报云端
4、Mapper-Framework 提供 API 接口,供用户主动拉取设备数据
➤ Mapper-Framework 功能架构图如下图所示:
用户可以根据 Mapper-Framework 自动生成 Mapper 工程,在生成的 Mapper 工程中已经预先集成上图中 Mapper 向集群注册自身的 upstream 流以及 EdgeCore 下发设备管理信息的 downstream 流,还内置集成 Mapper 推送设备数据的数据面能力。
用户在生成的 Mapper 工程中只需要自行实现设备驱动相关的功能,主要包含设备初始化、获取设备数据等,就可以完成对设备生命周期全流程管理。
Mapper-Framework 工作原理
用户使用 Mapper-Framework 实现自定义 Mapper 时,需要将 KubeEdge 的 Mapper-Framework 仓库[1] 克隆至本地,切换到合适的版本后在命令行中执行 make generate 命令,输入自定义 Mapper 的名称,就可以在上一级目录中找到自动生成的 Mapper 工程文件。
➤ 生成的 Mapper 工程结构如下:
用户只需要实现其中 driver 设备驱动层的功能,填充 Mapper 的 config 配置文件即可实现完整功能的 Mapper。当 Mapper 被启动后,会通过 grpcClient 向 EdgeCore DMI 接口进行注册,EdgeCore 主要接收来自 cloud 端的 Device Model 与 Device Instance 信息,根据协议名将 Device Model 与 Device Instance 以列表的形式下发给 Mapper,由 Mapper 对设备进行管理。
后续用户在云端提交的设备更新、删除等指令,会在云端通过云边通道传递给 EdgeCore 后,由 EdgeCore 通过 DMI 接口传递给 Mapper,实现设备管理面能力。同时,Mapper 数据面会调用用户实现的设备驱动能力定时采集设备数据,并按照用户在 Device Instance 配置文件中的定义,通过 HTTP、MQTT 等协议向用户应用推送设备数据,或者将设备数据保存至用户数据库中,完成设备数据的采集上报。
Mapper 数据面能以多种方式处理边缘设备数据,适用于较多的边缘场景,例如温湿度监测、酸碱度监测等。这些场景下设备数据是离散的,能够定时采集上报单点数值。但在边缘计算中,摄像头之类流数据设备的管理也是不可或缺的部分,在本系列的下一篇文章中,我们会对 Mapper 视频流数据处理的功能进行详细的介绍。
▍相关链接
[1] KubeEdge Mapper-Framework 仓库:https://github.com/kubeedge/mapper-framework
【更多 KubeEdge 资讯推荐】玩转 KubeEdge 保姆级攻略——环境搭建篇
玩转 KubeEdge 保姆级攻略——环境搭建篇
《玩转 KubeEdge 保姆级攻略——环境搭建篇》课程主要介绍如何通过华为云服务快速搭建一套 KubeEdge 边缘计算开发平台及部署 Sedna、EdgeMesh 等 KubeEdge 生态组件。
课程免费学习链接:https://connect.huaweicloud.com/courses/learn/course-v1:HuaweiX+CBUCNXNX022+Self-paced/about
KubeEdge 社区介绍:KubeEdge 是业界首个云原生边缘计算框架、云原生计算基金会内部唯一孵化级边缘计算开源项目,社区已完成业界最大规模云原生边云协同高速公路项目(统一管理 10 万边缘节点/50 万边缘应用)、业界首个云原生星地协同卫星、业界首个云原生车云协同汽车、业界首个云原生油田项目,开源业界首个分布式协同 AI 框架 Sedna 及业界首个边云协同终身学习范式,并在持续开拓创新中。
KubeEdge 网站 : https://kubeedge.io
GitHub 地址 : https://github.com/kubeedge/kubeedge
Slack 地址 : https://kubeedge.slack.com
邮件列表 : https://groups.google.com/forum/#!forum/kubeedge
每周社区例会 : https://zoom.us/j/4167237304
Twitter : https://twitter.com/KubeEdge
评论