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

(接上篇)

启动一个循环处理各种事件

m.mainLoop()定义具体如下所示。

|----------------------------------------------------------------------------------------------------------------------------------------------------------|
| KubeEdge/edge/pkg/metamanager/msg_processor.go |
| func (m *metaManager) mainLoop() { go func() { for { if msg, err := m.context.Receive(m.Name()); err == nil { ... m.process(msg) } else { ... } } }() } |

mainLoop()函数启动了一个for循环,在循环中主要做了两件事。

1) 接收信息,具体如下所示。

|-----------------------------------------|
| msg, err := m.context.Receive(m.Name()) |

2)对接收到的信息进行处理,具体如下所示。

|----------------|
| m.process(msg) |

想弄明白对信息的处理过程,需要进入m.process()函数,具体如下所示。

|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| KubeEdge/edge/pkg/metamanager/msg_processor.go |
| func (m *metaManager) process(message model.Message) { operation := message.GetOperation() switch operation { case model.InsertOperation: m.processInsert(message) case model.UpdateOperation: m.processUpdate(message) case model.DeleteOperation: m.processDelete(message) case model.QueryOperation: m.processQuery(message) case model.ResponseOperation: m.processResponse(message) case messagepkg.OperationNodeConnection: m.processNodeConnection(message) case OperationMetaSync: m.processSync(message) case OperationFunctionAction: m.processFunctionAction(message) case OperationFunctionActionResult: m.processFunctionActionResult(message) case constants.CSIOperationTypeCreateVolume, constants.CSIOperationTypeDeleteVolume, constants.CSIOperationTypeControllerPublishVolume, constants.CSIOperationTypeControllerUnpublishVolume: m.processVolume(message) } } |

process()函数中主要做了如下两件事。

1)获取消息的操作的类型,具体如下所示。

|-------------------------------------|
| operation := message.GetOperation() |

2)根据信息操作类型对信息进行相应处理,具体如下所示。

|--------------------------|
| switch operation { ... } |

信息的操作类型包括insert、update、delete、query、response、publish、meta-internal-sync、action、action_result等,本节不对信息的具体处理过程剖析,感兴趣的读者可以在本节的基础上自行剖析。

到此,对EdgeCore中metamanager模块的剖析就结束了。

未完待续......

相关推荐
Blossom.1189 分钟前
把大模型当“温度计”——基于 LLM 的分布式系统异常根因定位实战
人工智能·python·深度学习·机器学习·自然语言处理·分类·bert
adminwolf13 分钟前
支持小语种的在线客服系统,自动翻译双方语言,适合对接跨境海外客户
人工智能·自然语言处理·机器翻译
guidovans13 分钟前
基于大语言模型的爬虫数据清洗与结构化
人工智能·爬虫·语言模型·自然语言处理
金智维科技官方14 分钟前
财务自动化软件敏感数据泄露风险评估与防护措施
人工智能·安全·自动化·rpa
m0_6038887116 分钟前
Stable Diffusion Models are Secretly Good at Visual In-Context Learning
人工智能·ai·stable diffusion·论文速览
CV实验室20 分钟前
ICCV 2025 | 4相机干掉480机位?CMU MonoFusion高斯泼溅重构4D人体!
人工智能·数码相机·计算机视觉·论文
Learn Forever1 小时前
【AI-ModelScope/bert-base-uncase】模型训练及使用
人工智能·深度学习·bert
拓端研究室1 小时前
专题:2025抖音电商与微短剧行业研究报告|附150+份报告PDF汇总下载
大数据·人工智能
飞哥数智坊1 小时前
AI编程实战:写作助手再进化,AI 能力前后端一锅出
人工智能·trae
星期天要睡觉2 小时前
计算机视觉(opencv)实战三——图像运算、cv2.add()、cv2.addWeighted()
人工智能·opencv·计算机视觉