写点什么

KubeEdge 边缘设备管理系列(三):Mapper-Framework 设计与实现

  • 2025-01-21
    中国香港
  • 本文字数:2919 字

    阅读完需:约 10 分钟

作者:王彬丞 &杨志佳 &刘家伟


针对新版本 Device-IoT 领域的更新,我们计划推出一系列的文章对这些特性进行详细的介绍,大致的文章大纲为:

  1. 基于物模型的设备管理 API 设计与实现

  2. DMI 数据面能力设计与实现

  3. Mapper 开发框架 Mapper-Framework 设计与实现

  4. 如何使用 Mapper 完成视频流数据处理

  5. 如何使用 Mapper 实现设备数据写入

  6. 如何从头开发一个 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 工程结构如下:

├── cmd ------------------------ Main process.│ └── main.go ------------------ Almost need not change.├── config.yaml ---------------- Configuration file including DMI's grpc setting├── data ----------------------- Publish data and database implementation layer, almost need not change│ ├── dbmethod ----------------- Provider implement database interfaces to save data│ │ ├── influxdb2 -------------- Implementation of Time Series Database(InfluxDB)│ │ │ └── client.go  │ │ └── redis  ----------------- Implementation of K/V Database(Redis)│ │     └── client.go  │ └── publish ------------------ Publisher implement push interfaces to push data,will add more protocols in the future│     ├── http ----------------- HTTP client will push data to server│     │ └── client.go  --------- │     └── mqtt ----------------- MQTT client will push data to broker│         └── client.go  ├── device --------------------- Implementation device layer, almost need not change│ ├── device.go ---------------- Device control, almost need not change│ └── devicetwin.go ------------ Push twin data to EdgeCore, almost need not change├── Dockerfile├── driver --------------------- Device driver layer, complete TODO item in this │ ├── devicetype.go ------------ Refine the struct as your CRD│ └── driver.go ---------------- Fill in the functions like getting data/setting register.├── hack│ └── make-rules│     └── mapper.sh└── Makefile
复制代码

用户只需要实现其中 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

文档地址 : https://docs.kubeedge.io/en/latest/

用户头像

还未添加个人签名 2020-02-11 加入

还未添加个人简介

评论

发布
暂无评论
KubeEdge边缘设备管理系列(三):Mapper-Framework设计与实现_云计算_华为云原生团队_InfoQ写作社区