「连载」边缘计算(三十一)03-12:边缘部分源码分析(源码分析篇)

79 阅读4分钟

(接上篇)

组件中模块的共用框架和功能分析

KubeEdge组件中各个功能模块之间是通过Beehive来组织和管理的。Beehive是一个基于go-channels的消息框架。但本文的重点不是Beehive,所以只会分析KubeEdge中用到的Beehive的相关功能。下面深入CloudCore、EdgeCore、edgemesh和edgesite组件,探究组件内部各功能模块的共用框架。

在《深入理解边缘计算:云、边、端工作原理与源码分析》8.2.1节已经分析到CloudCore中功能模块的注册和已注册功能模块的启动,本节接着往下分析。

1. CloudCore 组件内部各功能模块的共用框架

(1)CloudCore中功能模块的注册

CloudCore中功能模块的注册具体如下所示。

func registerModules() {cloudhub.Register()edgecontroller.Register()devicecontroller.Register()}

从registerModules()函数中,可以知道CloudCore中有cloudhub、edgecontroller和devicecontroller共3个功能模块。

Register()函数定义具体如下所示。

func Register() {core.Register(&cloudHub{})}

在KubeEdge/cloud/pkg/cloudhub/cloudhub.go中的Register()函数只是调用KubeEdge/beehive/pkg/core/module.go中的Register()函数。    core.Register(&cloudHub{})函数定义具体如下所示。  

...var (// Modules mapmodules         map[string]ModuledisabledModules map[string]Module)...func Register(m Module) {if isModuleEnabled(m.Name()) {modules[m.Name()] = mklog.Infof("Module %v registered", m.Name())} else {disabledModules[m.Name()] = mklog.Warningf("Module %v is not register, please check modules.yaml",m.Name())}}

  从上面的变量和函数定义可以清楚地看到,cloudhub模块注册最终会将该模块的结构体放入一个map[string]Module类型的全局变量modules中。

按照cloudhub模块注册的思路分析,edgecontroller和devicecontroller也做了相同的事情,最终把各自的结构体放入一个map[string]Module类型的全局变量modules中。

cloudhub、edgecontroller和devicecontroller三个功能模块之所以能够采用相同的注册流程,是因为它们都实现了KubeEdge/beehive/pkg/core/module.go中的Module接口。

Module接口定义具体内容如下所示。

未完待续……」 点击下方标题可阅读技术文章

「连载」边缘计算(一)01-16:边缘计算系统(基础篇)

juejin.cn/post/732453…

「连载」边缘计算(二)01-16:边缘计算系统(基础篇)

juejin.cn/post/732452…

「连载」边缘计算(三)01-17:边缘计算系统(基础篇)

juejin.cn/post/732488…

「连载」边缘计算(四)01-18:边缘计算系统(基础篇)

juejin.cn/post/732525…

「连载」边缘计算(五)01-19:云、边、端的部署与配置(基础篇)

juejin.cn/post/732542…

「连载」边缘计算(六)01-22:云、边、端的部署与配置(基础篇)

juejin.cn/post/732657…

「连载」边缘计算(七)01-23:云、边、端的部署与配置(基础篇)

juejin.cn/post/732686…

「连载」边缘计算(八)01-24:云、边、端的部署与配置(基础篇)

juejin.cn/post/732719…

「连载」边缘计算(九)01-25:云、边、端的部署与配置(基础篇)

juejin.cn/post/732768…

「连载」边缘计算(十)01-26:云、边、端的部署与配置(基础篇)

juejin.cn/post/732798…

「连载」边缘计算(十一)01-29:云、边、端的部署与配置(基础篇)

juejin.cn/spost/73290…

「连载」边缘计算(十二)01-30:云、边、端的部署与配置(基础篇)

juejin.cn/post/732947…

「连载」边缘计算(十三)01-31:云、边、端的部署与配置(基础篇)

juejin.cn/post/732979…

「连载」边缘计算(十四)02-01:云、边、端的部署与配置(基础篇)

juejin.cn/post/733029…

「连载」边缘计算(十五)02-02:云、边、端的部署与配置(基础篇)

juejin.cn/post/733054…

「连载」边缘计算(十六)02-18:云、边、端的部署与配置(基础篇)

juejin.cn/post/733653…

「连载」边缘计算(十七)02-19:边缘计算系统逻辑架构(原理篇)

juejin.cn/post/733686…

「连载」边缘计算(十八)02-20:边缘计算系统逻辑架构(原理篇)

juejin.cn/post/733723…

「连载」边缘计算(十九)02-21:边缘计算系统逻辑架构(原理篇)

juejin.cn/post/733758…

「连载」边缘计算(二十)02-22:边缘部分原理解析(原理篇)

juejin.cn/post/733797…

「连载」边缘计算(二十一)02-23:边缘部分原理解析(原理篇)

juejin.cn/post/733830…

「连载」边缘计算(二十二)02-26:边缘部分原理解析(原理篇)

juejin.cn/post/733946…

「连载」边缘计算(二十三)02-27:边缘部分原理解析(原理篇)

juejin.cn/post/733980…

「连载」边缘计算(二十四)02-28:边缘部分原理解析(原理篇)

juejin.cn/post/734019…

「连载」边缘计算(二十五)03-04:边缘部分原理解析(原理篇)

juejin.cn/post/734175…

「连载」边缘计算(二十六)03-05:边缘部分原理解析(原理篇)

juejin.cn/post/734240…

「连载」边缘计算(二十七)03-06:边缘部分源码分析(源码分析篇)

juejin.cn/post/734279…

「连载」边缘计算(二十八)03-07:边缘部分源码分析(源码分析篇)

juejin.cn/post/734324…

「连载」边缘计算(二十九)03-08:边缘部分源码分析(源码分析篇)

juejin.cn/post/734353…

「连载」边缘计算(三十)03-11:边缘部分源码分析(源码分析篇)

juejin.cn/post/734457…