边缘计算开源项目解读-kubeedge metamanager实现

news2024/11/26 8:54:30

0 背景

        笔者在前面的几篇文章从设备管理和运维的角度解读了kubeedge的相关代码流程和架构。本文将切入kubeedge edgecore的另一个核心业务,即边云协同处理设备元数据相关代码的解读。如果说前面的设备管理和运维并不能体现kubeedge作为边缘计算数据处理平台的特点,本文开始的元数据处理将真正展现kubeedge边云协同处理数据的能力。它可以像在云上使用kubernents一样,对云原生API接口进行调用,实现应用在边缘设备上的快速部署,在云端和边缘侧的无缝迁移。这一系列解读的主题包含MetaManager、edged、servicebus和edgehub几个模块,笔者将依然按照前面逆向的思路,从代码架构、上下文通信,主流程和业务的视角进行解读。

1 MetaManager代码架构

        MetaManager翻译过来就是元数据管理,它是部署在kubeedge edgecore中非常重要的数据管理模块,无论是来自云端还是边缘侧设备本身处理的数据,都需要通过这个模块操作边缘侧的数据库或者是K8S。它是数据库访问和边云数据协同的枢纽,屏蔽了平台差异,实现了边云数据的同步,上送云端的数据可以在边缘侧灵活控制,比如先清洗再上送云端。它实现了轻量级kubernents在边缘侧的部署,屏蔽了应用在云端和边缘侧的平台差异,可以很方便地将应用从云端卸载到边缘侧,而边云协同和应用的灵活卸载,是边缘计算平台一个非常重要的特性。

        如上图所示左边是MetaManager实现的代码文件和文件夹,我们将其按照逻辑关系映射到右边的代码架构。从上到下依次是模块入口,即metamanager文件,实现了整个模块的注册和主流程的控制。接下来是消息收发处理process,负责对来自edged或者edgehub的消息进行处理,调用数据库操作接口保存或者同步数据到云端。再接下来是meta服务端,主要接收来自云端的http请求处理,对k8s进行操作。最后就是meta客户端,这是站在edged的视角看的,edged在这种场景下充当服务端。将来自edged的元数据保存在数据库中,并同步到云端。这些模块之间是如何交互的呢,下一节将详述。

2 MetaManager上下文

        如下图所示是MetaManager在edgecore中所处的位置。从图中可以看出MetaManager是整个边缘侧数据操作的核心,控制来自云端或者边缘侧的数据操作。在南向方向跟edged相关联,主要作为edged的客户端,转换edged的消息,发送dao的操作消息,进而操作数据库。北向跟edgehub关联,接收来自云端或者手机端的app操作,可以方便应用灵活卸载到边缘侧,接收来自云端对数据的操作。东向作为模块入口,实现了MetaManager注册到edgecore的消息处理模块beehivecontext,打通MetaManager和上下文的通信通道。西向则主要是对数据库进行增删改查操作,可以让边缘侧应用操作数据,也可以让云端的应用无缝操作该边缘侧的数据。

        上图中几条红色的虚箭头代表了几个数据处理的方向。首先是控制入口可以来自云端或者边缘侧的app,MetaManager屏蔽了在云端和边缘侧操作的差异,让开发者无需关注数据处理的API是在云端使用还是在边缘侧使用,应用可以在需要的时候被卸载到边缘上来。这得益于kubernents的跨平台部署,而在MetaManager中恰恰部署了一个裁剪后的kubernents。此时的边缘设备实际上就是一个kubernents中的nodes,在应用部署上,可以跟在云端操作一样。解决了数据处理的模型灵活卸载,接下来就是数据存储的问题,同样的MetaManager围绕边缘侧和云侧的数据,按照就近处理的边缘计算特点,在边缘设备上为数据准备了存储环境,pod可以根据自己的需求,选择将数据在本地处理或者上送云端处理。

3 MetaManager主流程交互

        上面给出了MetaManager的数据处理方案,那整个MetaManager是怎么跑起来的呢?如下图所示是MetaManager的注册和启动过程。首先这个模块是属于edgecore,在edgecore中采用的消息分发的机制,内部各个模块之间通过beehive这套消息框架进行交互。所以在edgecore运行初始阶段,就要将MetaManager注册到消息框架上。需要注意的是,edgehub是MetaManager运行的前置条件,因此edgehub需要先初始化,接下来就可以初始化数据库,最后才是调用core注册到消息框架上。

        注册完成后,就可以让MetaManager运行起来,跑起来的MetaManager会监听来自云端或者是edgecore模块内部的消息,如果是来自云端,就调用metaserver进行处理;如果是来自edged的消息,就调metaclient进行处理。处理后的结果都会同步到另一侧。图中红色和绿色圆圈标注的流程就是这两个方向的数据处理过程,在上一节中我们已经介绍过,此处就不再赘述。

        再进一步分析数据处理的过程,其实就跟我们操作数据库或者处理http请求的一般过程类似,如下图所示,这部分不是MetaManager的核心,此处就不再详述。

4 小结

        本文从edgecore的数据的就近处理这一路径切入,介绍了MetaManager的代码架构,上下文和主流程。下一步笔者将深入解读edged模块,敬请期待。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/460835.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Andoroid】之【APK瘦身】

一、如何查看 APK 的组成 如果要优化 APK 的大小,我们首先需要知道我们编译出来的 APK 都包含哪些东西,然后针对占用大的做裁剪,或者删除不需要的东西,从而达到瘦身的目的。 查看 APK 的内容占用情况很简单,打开 AS …

进程间通信,有名管道(pipe)与无名管道(fifo)的解析与运用,以及代码实现

🎊【进程通信与并发】专题正在持续更新中,进程,线程,IPC,线程池等的创建原理与运用✨,欢迎大家前往订阅本专题,获取更多详细信息哦🎏🎏🎏 🪔本系列…

API网关:开源Apinto网关-应用管理篇

需求痛点 在这互联网高速发展的时代,企业业务系统多、渠道广,如何管理内外部调用端系统具有极大的挑战。 数量方面:API网关需要对各端应用统一管理,例如对企业自身很多的前端应用,包括不限于web应用、移动APP、小程序&…

AI边缘计算智能分析网关灭火器缺失检测与告警的实现过程

AI智能分析网关基于边缘智能,部署了多种AI深度学习算法,可对接入的多路视频流进行智能检测、智能识别等,包括人脸检测与识别、车辆检测与识别、车牌识别、烟火识别、安全帽识别、区域入侵检测等。今天我们来介绍下关于灭火器缺失检测与告警的…

基于Yolov5/Yolov7的DRConv动态区域感知卷积,即插即用,涨点显著!

1.Dynamic Region-Aware Convolution 论文:https://arxiv.org/pdf/2003.12243.pdf 本文提出了一种新的卷积算法,称为动态区域卷积算法(DRConv) ,该算法能够自动将滤波器分配到相应的空间区域,因此,DRConv具有强大的语义表示能力,并完美地保持了平移不变性。 DRConv的…

在IIS7下使用ASP连接ACCESS数据库时提示如下错误的处理方法

“/”应用程序中的服务器错误。 未在本地计算机上注册“microsoft.jet.oledb.4.0”提供程序。 这是由于使用的Win2008系统是64位的,以前Win2003是32位。有以下两种解决方法: 1、修改连接数据库的代码: 如原代码是 DataPath "App_Data…

Eclipse代码提示突然失灵的解决方案

不知道改动了啥,突然间Eclipse的代码提示就失效了,发现缺少后极不方便。 使用快捷键:Alt/ 提示 No Default Proposals 为什么使用快捷键:Alt/ 会提示“No Default Proposals。”呢? 网上提示可能是热键冲突 但是一套…

可调直动差压卸荷阀DDRV-100、DBRV-100

优点: 及时响应压力变化。 低压升。 潜在调节(抗震动)。 调整位置可锁定。 铝制操作手柄和填料压盖。 坚硬化处理。 可调直动式卸荷阀 ZRV-63 0类 可调直动式卸荷阀 DRV2-080 系列8 可调直动式卸荷阀 DRV-080_*_H 系列8 直动可调式…

微服务架构详解(一)

目录 1.微服务简介 2.微服务技术选型 3.微服务核心组件 3.1.注册中心 3.1.1.注册中心对比 3.2.服务网关 3.2.1.主流API网关对比 3.3.分布式配置中心 3.4.服务容错(服务熔断) 3.5.负载均衡 3.5.1.负载均衡有好几种实现策略, 3…

读取配置文件(properties、yaml)的八种方法

基础&#xff1a; 一、通过普通的I/O流读取配置文件(BufferedReader) 1、properties文件 2、测试类 public class TestReadProperties {Testpublic void IOReadProperties() throws IOException {// 把配置文件的内容封装进mapMap<String, Object> map new HashMap&l…

视频可视化搭建项目,通过简单拖拽方式快速生产一个短视频

一、开源项目简介 《视搭》是一个视频可视化搭建项目。您可以通过简单的拖拽方式快速生产一个短视频&#xff0c;使用方式就像易企秀或百度 H5 等 h5 搭建工具一样的简单。目前行业内罕有关于视频可视化搭建的开源项目&#xff0c;《视搭》是一个相对比较完整的开源项目&#…

矿井下无人值守变电所电力监控系统的探讨与产品选型

摘要&#xff1a;为了探讨井下无人值守变电所的电力监控系统技术&#xff0c;以西山煤电马兰矿为背景&#xff0c;详细阐述了井下无人值守变电所电力监控系统技术的各项基本参数&#xff0c;如额定工作电压及整机输入视在功率、交换机或监控分站的传输口、高压配电装置的传输口…

(二)ElasticSearch 辅助工具 Kibana 介绍与安装

1、什么是 kibana &#xff1f; Kibana 是一个针对Elasticsearch的开源分析及可视化平台&#xff0c;用来搜索、查看交互存储在Elasticsearch索引中的数据。使用Kibana&#xff0c;可以通过各种图表进行高级数据分析及展示。 Kibana让海量数据更容易理解。它操作简单&#xff…

怎么使用chatgpt,GPT的使用方式解析

怎么使用Chatgpt&#xff1f;这是很多人心中的疑惑&#xff0c;更多的人只是听说过chatgpt的大名&#xff0c;但是具体连见都没见过gpt&#xff0c;那么接下来小编就来给大家详细的介绍一下吧。 一.了解chatgpt ChatGPT是一个由人工智能和自然语言处理技术构建的聊天机器人。通…

[pytorch]FixMatch代码详解-数据加载

原文 FixMatch: Simplifying Semi-Supervised Learning with Consistency and Confidence. 这里还有一个译制版的很方便阅读 FixMatch&#xff1a;通过一致性和置信度简化半监督学习 代码 pytorch的代码有很多版本&#xff0c;我选择了比较简单的一个&#xff1a; unoffi…

记一次某应用虚拟化系统远程代码执行

漏洞简介 微步在线漏洞团队通过“X漏洞奖励计划”获取到瑞友天翼应用虚拟化系统远程代码执行漏洞情报(0day)&#xff0c;攻击者可以通过该漏洞执行任意代码&#xff0c;导致系统被攻击与控制。瑞友天翼应用虚拟化系统是基于服务器计算架构的应用虚拟化平台&#xff0c;它将用户…

xxl-job 7.32版本 安装部署

文章目录 前言xxl-job 7.32版本 安装部署1. xxl-job 是什么2. 特性3. xxl-job 部署安装3.1. 下载源码3.2. 部署:3.2.1. 初始化调度数据库3.2.2. 配置调度中心 前言 如果您觉得有用的话&#xff0c;记得给博主点个赞&#xff0c;评论&#xff0c;收藏一键三连啊&#xff0c;写作…

GDOUCTF2023-部分re复现

目录 [GDOUCTF 2023]Check_Your_Luck [GDOUCTF 2023]Tea [GDOUCTF 2023]doublegame [GDOUCTF 2023]Check_Your_Luck 打开题目是一串代码&#xff0c;明显的z3约束器求解 直接上脚本 import z3 from z3 import Reals z3.Solver() vReal(v) xReal(x) yReal(y) wReal(w) zRea…

cocosLua 之文本相关

Text 用于创建系统或ttf文本&#xff0c; 类结构&#xff1a; #mermaid-svg-bMIqhf5X7M9uF2Ba {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-bMIqhf5X7M9uF2Ba .error-icon{fill:#552222;}#mermaid-svg-bMIqhf5X7…

走进社区客户端测试 | 得物技术

0.引言 社区 C 端质量体系建设思考&#xff1f; 询问一下 ChatGPT 1、关于社区客户端 1.1 社区端上功能 得物首页 搜索、发布、关注流、推荐流、沉浸式单列流、活动 tab、其他二级频道 tab 动态详情页 图文、视频、专栏、点评 私域 个人/他人主页、通讯录好友、微博好友…