「连载」边缘计算(二十三)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 mapstringchan 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(), }) } |

未完待续......

相关推荐
leoZ23122 分钟前
本地跑大模型实战(七):llama.cpp 性能调优,让推理更快更省
java·人工智能·spring·生成对抗网络·语言模型·自然语言处理·llama
To_OC31 分钟前
我把《天龙八部》塞进向量数据库后,终于搞懂了 RAG 到底是个啥
人工智能·llm·agent
蜡台1 小时前
AI Agent(智能体)入门基础教程
人工智能
Akir.weiwen1 小时前
Token 层差异:从颜色值到语义状态的三层跃迁
人工智能·设计规范
迷迭香yy1 小时前
集合竞价数据挖掘实战:用Python构建开盘信号识别系统
人工智能·python·数据挖掘
大模型momo2 小时前
Spring AI 实战:多 Agent 协作实战 —— 分工拆解复杂旅游行程任务
人工智能·spring·ai·agent·旅游
小程故事多_802 小时前
从A2C、TRPO、PPO到GRPO,强化学习策略梯度算法完整演进与大模型落地实战解析
人工智能·算法
冬奇Lab2 小时前
开源项目第176期:Better Harness — 不审查 diff,审查工作流本身,给 AI 编程 Agent 的五维评估框架
人工智能·开源·agent
冬奇Lab2 小时前
代码库知识库系列(07):混合检索 BM25 + 向量——Q8 还是失败,而且总分退步了
人工智能
ajassi20003 小时前
AI语音智能体开发日记(十一)为智能设备“声”临其境——详解音频资源自动化生成流程
人工智能·ai·ai编程