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

(接上篇)

EdgeCore edgehub

前面对EdgeCore组件的edged、devicetwin功能模块进行了分析,本节对EdgeCore组件的另一个功能模块edgehub进行剖析。 edgehub作为edge部分与cloud部分进行交互的门户,我们有必要将edgehub相关内容彻底分析清楚,为使用过程中的故障排查和未来的功能扩展与性能优化提供便利。edgehub的剖析具体包括edgehub的struct调用链剖析、edgehub的具体逻辑剖析。

edgehub 的struct组成剖析

EdgeCore模块注册函数具体如下所示。

|-----------------------------------------------------------------------------------------------------------------------|
| KubeEdge/edge/cmd/EdgeCore/app/server.go |
| // registerModules register all the modules started in EdgeCore func registerModules() { ... edgehub.Register() ... } |

registerModules()函数中的edgehub.Register()具体如下所示。

|------------------------------------------------------------------------------------------------------------------|
| KubeEdge/edge/pkg/edgehub/module.go |
| // Register register edgehub func Register() { core.Register(&EdgeHub{ controller: NewEdgeHubController(), }) } |

顺着Register()函数中EdgeHub struct的实例化语句进入EdgeHub struct定义,具体如下所示。

|----------------------------------------------------------------------------------------------------------------------|
| KubeEdge/edge/pkg/edgehub/module.go |
| //EdgeHub defines edgehub object structure type EdgeHub struct { context *context.Context controller *Controller } |

EdgeHub struct中包含*context.Context和*Controller 两个属性。

1) *context.Context: 在《深入理解边缘计算:云、边、端工作原理与源码分析》8.3.2中,笔者已经分析过*context.Context,它是一个基于go-channels的消息框架,EdgeCore用它作为各功能模块之间通信的消息管道。

2)*Controller:edgehub的主要功能载体。

Controller struct的定义具体如下所示。

|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| KubeEdge/edge/pkg/edgehub/controller.go |
| //Controller is EdgeHub controller object type Controller struct { context *context.Context chClient clients.Adapter config *config.ControllerConfig stopChan chan struct{} syncKeeper map[string]chan model.Message keeperLock sync.RWMutex } |

从Controller struct的定义可以确定,Controller struct是edgehub核心功能载体没错了。

到此,edgehub的struct组成剖析就结束了。接下来剖析edgehub的具体逻辑。

edgehub 的具体逻辑剖析

回到edgehub的注册函数,开始剖析edgehub相关的逻辑,具体如下所示。

|------------------------------------------------------------------------------------------------------------------|
| KubeEdge/edge/pkg/edgehub/module.go |
| // Register register edgehub func Register() { core.Register(&EdgeHub{ controller: NewEdgeHubController(), }) } |

未完待续......

相关推荐
张彦峰ZYF7 分钟前
AI赋能原则7解读思考:AI时代构建可组合的能力比单点专业更重要
人工智能·ai·ai赋能与落地
穿越光年13 分钟前
想部署一套本地知识库问答系统,Dify or FastGPT 到底该怎么选?
人工智能·知识图谱
强化学习与机器人控制仿真14 分钟前
ProtoMotions 3 入门教程(一)开源 GPU 加速人形机器人强化学习仿真训练框架
人工智能·stm32·深度学习·机器人·强化学习·人形机器人·模仿学习
像风没有归宿a14 分钟前
AI+教育:个性化学习与教师角色的未来
人工智能
badfl15 分钟前
OpenAI文本嵌入模型text-embedding-3是什么?
人工智能·机器学习·ai
点云SLAM22 分钟前
Discrepancy 英文单词学习
人工智能·学习·英文单词学习·雅思备考·discrepancy·不一致、不协调·矛盾
百数平台22 分钟前
如何用数据看板实现实验室管理迭代?采购 / 巡检 / 培训数据可视化方案,适配合规政策要求
大数据·人工智能
haiyu_y28 分钟前
Day 27 通用机器学习流水线
人工智能·python·机器学习
青稞社区.29 分钟前
Fast-dLLM v2:高效训练推理的块扩散大语言模型框架
人工智能·语言模型·自然语言处理
wshzd29 分钟前
LLM之Agent(三十八)|AI Agents(七):Multi-Agent架构
人工智能·架构