「连载」边缘计算(九)01-26:边缘部分源码(源码分析篇)

(接上篇)

Cloudcore码入口

Cloudcore源码入口为KubeEdge/cloud/CloudCore/CloudCore.go。

CloudCore 源码入口函数具体如下所示。

func main() {

command := app.NewCloudCoreCommand() //此函数是对cobra调用的封装

...

}

进入app.NewCloudCoreCommand()函数内部,也就是KubeEdge/cloud/CloudCore/app/server.go中的NewCloudCoreCommand()函数中。

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

func NewCloudCoreCommand() *cobra.Command {

...

cmd := &cobra.Command{

...

Run: func(cmd *cobra.Command, args []string) {

...

registerModules() //注册CloudCore中的功能模块

    // start all modules

    core.Run() //启动已注册的CloudCore中的功能模块

},

}

 ...

}

NewCloudCoreCommand()函数中,通过registerModules()函数注册CloudCore中的功能模块,通过core.Run()函数启动已注册的CloudCore中的功能模块。至于registerModules()函数注册了哪些功能模块,core.Run()函数怎么启动已注册功能模块的,详见《深入理解边缘计算:云、边、端工作原理与源码分析》8.2.3节。

注意:KubeEdge/cloud/admission/admission.go,KubeEdge/cloud/csidriver/csidriver.go两个入口,目前还没有用到,暂不分析。

EdgeCore码入口

EdgeCore源码入口为KubeEdge/edge/cmd/EdgeCore/EdgeCore.go。

EdgeCore源码入口函数具体如下所示。

func main() {

command := app.NewEdgeCoreCommand()//此函数是对cobra调用的封装

...

}

进入app.NewEdgeCoreCommand()函数内部,也就是KubeEdge/edge/cmd/EdgeCore/app/server.go中的NewEdgeCoreCommand()函数中。

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

func NewEdgeCoreCommand() *cobra.Command {

...

cmd := &cobra.Command{

...

Run: func(cmd *cobra.Command, args []string) {

...

registerModules() //注册CloudCore中的功能模块

    // start all modules

    core.Run() //启动已注册的CloudCore中的功能模块

},

  }

  ...

}

NewEdgeCoreCommand()函数中,通过 registerModules()函数注册EdgeCore中的功能模块,通过core.Run()函数启动已注册的EdgeCore中的功能模块。至于registerModules()函数注册了哪些功能模块,core.Run()函数怎么启动已注册功能模块的,详见《深入理解边缘计算:云、边、端工作原理与源码分析》8.2.3节。

edgemesh码入口

edgemesh源码入口为KubeEdge/edgemesh/cmd/edgemesh.go。

edgemesh源码入口函数具体如下所示。

func main() {

...

pkg.Register() //注册edgemesh的功能模块

//Start server

server.StartTCP() //启动一个tcp服务

}

从main()函数中可以看到,edgemesh没有使用cobra,而是直接注册功能模块,然后启动了一个TCP服务。

 edgesite码入口

edgesite源码入口为KubeEdge/edgesite/cmd/edgesite.go。

edgesite源码入口函数具体如下所示。

func NewEdgeSiteCommand() *cobra.Command {

...

cmd := &cobra.Command{

...

Run: func(cmd *cobra.Command, args []string) {

...

registerModules() //注册CloudCore中的功能模块

    // start all modules

    core.Run() //启动已注册的CloudCore中的功能模块

},

  }

  ...

}

NewEdgeSiteCommand()函数中,通过 registerModules()函数注册edgesite中的功能模块,通过core.Run()函数启动已注册的EdgeCore中的功能模。至于registerModules()函数注册了哪些功能模块,core.Run()函数怎么启动已注册功能模块的,详见《深入理解边缘计算:云、边、端工作原理与源码分析》8.2.节。

至此,组件(CloudCoreEdgeCore、edge_mesh和edge_site)层面的源码共用框架和功能分析就结束了。下面深入分析各组件中功能模块的共用框架和功能。

 「未完待续……

点击下方标题可阅读技术文章

「连载」边缘计算(一)01-16:边缘计算系统逻辑架构(原理篇)
「连载」边缘计算(二)01-17:边缘计算系统逻辑架构(原理篇)
「连载」边缘计算(三)01-18:边缘部分原理解析(原理篇)
「连载」边缘计算(四)01-19:边缘部分原理解析(原理篇)
「连载」边缘计算(五)01-22:边缘部分原理解析(原理篇)
「连载」边缘计算(六)01-23:边缘部分原理解析(原理篇)
「连载」边缘计算(七)01-24:边缘部分原理解析(原理篇)
「连载」边缘计算(八)01-25:边缘部分源码(源码分析篇)



 

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

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

相关文章

Databend 开源周报第 130 期

Databend 是一款现代云数仓。专为弹性和高效设计,为您的大规模分析需求保驾护航。自由且开源。即刻体验云服务:https://app.databend.cn 。 Whats On In Databend 探索 Databend 本周新进展,遇到更贴近你心意的 Databend 。 支持 CREATE OR…

【笔记】Helm-5 Chart模板指南-4 模板函数和流水线

模板函数和流水线 到目前为止,我们已经知道了如何将信息传到模板中。但是传入的信息并不能被修改。有时我们希望以一种更有用的方式来转换所提供的数据。 让我们从一个最佳实践开始:可以通过调用模板指令中的quote函数把 .Values对象中的字符串属性用引…

手机壳也能散热了?

作为一个玩了6年的王者荣耀玩家,手机发热真的很影响游戏体验!!游戏掉帧,性能下降很恼人,试过好几个散热工具,实际效果都不太好~ 自从入了Mate 60之后,看着这款微泵液冷壳毫无犹豫第…

计数排序(六)——计数排序及排序总结

目录 一.前言 二.归并小补充 三.计数排序 操作步骤: 代码部分: 四.稳定性的概念: 五.排序大总结: ​六.结语 一.前言 我们已经进入排序的尾篇了,本篇主要讲述计数排序以及汇总各类排序的特点。码字不易&#x…

CMake Error:check_source_compiles: CXX: needs to be enabled before use.已解决

在windows中使用安装的msys2-x86_64-20240113.exe下的C:/msys64/mingw64/bin/中的g.exe和gcc.exe出现标题中报错 经搜索有类似错误: CMake Error at /usr/share/cmake/Modules/Internal/CheckFlagCommonConfig.cmake:58 (message):check_compiler_flag: C: needs t…

如何实现一个百万亿规模的时序数据库,百度智能云 BTS 架构解析和实践分享

本文整理自 2023 年 12 月 16 日,百度智能云数据库总架构师朱洁在《国产数据库共话未来趋势》技术沙龙上的主题分享。 随着互联网和物联网的高速发展,产生了大量的结构化、半结构化数据。在百度集团内部, BTS(Baidu Table Storage…

Windows系统本地安装Wnmp服务并结合内网穿透公网远程访问

目录 前言 1.Wnmp下载安装 2.Wnmp设置 3.安装cpolar内网穿透 3.1 注册账号 3.2 下载cpolar客户端 3.3 登录cpolar web ui管理界面 3.4 创建公网地址 4.固定公网地址访问 结语 作者简介: 懒大王敲代码,计算机专业应届生 今天给大家聊聊Windows…

【虚拟机数据恢复】异常断电导致虚拟机无法启动的数据恢复案例

虚拟机数据恢复环境: 某品牌R710服务器MD3200存储,上层是ESXI虚拟机和虚拟机文件,虚拟机中存放有SQL Server数据库。 虚拟机故障: 机房非正常断电导致虚拟机无法启动。服务器管理员检查后发现虚拟机配置文件丢失,所幸…

leetcode 1921

消灭的怪物数量 踩坑点:double类型的比较, C语言有qsort的排序函数,需要设计比较函数,double类型的数据存在精度问题,不能直接用号判断数据是否相等,需要通过设置精度eps。 int cmp(const void* val1,con…

###C语言程序设计-----C语言学习(7)#(调试篇)

前言:感谢您的关注哦,我会持续更新编程相关知识,愿您在这里有所收获。如果有任何问题,欢迎沟通交流!期待与您在学习编程的道路上共同进步。 一. 程序调试 1.程序调试介绍: 程序调试是软件开发过程中非常重…

npm 和 yarn 的使用

安装 yarn npm i yarn -g查看版本 npm -v yarn --version切换 npm/yarn 的下包镜像源 // 查看当前的镜像源 npm config get registry// 切换淘宝镜像源 // 新的淘宝源,旧的淘宝源已于2022年05月31日零时起停止服务 npm config set registry https://registry.…

iOS 17.4 苹果公司正在加倍投入人工智能

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…

重学Ajax

摘要:AJAX是一个在前端的应用非常广泛技术,为什么还要谈它呢?么得办法之前学的不全面,再收拾收拾。水平有限,欢迎指正! AJAX(全称:Asynchronous JavaScript and XML)是一…

vue3 组合式API获取子组件的属性和方法

在vue2中&#xff0c;获取子组件实例的方法或者属性时&#xff0c;父组件直接通过ref即可直接获取子组件的属性和方法&#xff0c;如下&#xff1a; // father.vue <child ref"instanceRef" /> this.$ref[instanceRef].testVal this.$ref[instanceRef].testFun…

unity 讯飞webapi在线语音合成

websocker插件使用的unitywebsocker 讯飞webapi&#xff0c;连接后只能请求一次&#xff0c;所以每次使用时进行连接&#xff0c;连接成功后进行请求&#xff0c;请求完成后关闭连接。 为什么连接后只能请求一次呢&#xff0c;可能是方便统计使用量。 如何通过音频数据计算出…

UPS负载过大有什么危害性

UPS&#xff08;不间断电源&#xff09;是一种用于保护电子设备免受电力波动和突然停电影响的设备。然而&#xff0c;如果UPS负载过大&#xff0c;可能会对其性能和寿命产生严重影响。以下是UPS负载过大的一些危害性&#xff1a; 1. 降低UPS效率&#xff1a;当UPS负载过大时&am…

C++ 11新特性之week_ptr

概述 在C11 标准中&#xff0c;智能指针的引入极大地提升了内存管理的安全性和便利性。除了已经广为人知的shared_ptr和unique_ptr之外&#xff0c;还有一个重要但相对较少被单独提及的智能指针类型——std::weak_ptr。std::weak_ptr是C 11引入的一种弱引用智能指针&#xff0c…

【RT-DETR改进涨点】ResNet18、34、50、101等多个版本移植到ultralytics仓库(RT-DETR官方一比一移植)

👑欢迎大家订阅本专栏,一起学习RT-DETR👑 一、本文介绍 本文是本专栏的第一篇改进,我将RT-DETR官方版本中的ResNet18、ResNet34、ResNet50、ResNet101移植到ultralytics仓库,网上很多改进机制是将基础版本的也就是2015年发布的ResNet移植到ultralytics仓库中,但是其实…

JavaScript进阶教程 - 事件循环和回调队列

JavaScript的事件循环是一种执行模型&#xff0c;它允许JavaScript引擎执行异步任务&#xff0c;尽管JavaScript是单线程的。这个模型确保了即使在执行长时间运行的操作&#xff08;如从服务器获取数据&#xff09;时&#xff0c;JavaScript代码也能保持响应性。事件循环和回调…

百度云网盘下载速度如何提升到正常速度

引入问题 我们在下载代码学习资料的时候大多数都是百度云网盘&#xff0c;但是限速&#xff01;下载的十分的慢&#xff0c;有什么办法能让我们不开通会员就能享受正常速度呢&#xff1f; 当然有&#xff01; 解决百度云网盘下载速度过慢&#xff0c;提高到正常速度 点击右…