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

(接上篇)

获取cloudhub client,具体如下所示。

|-----------------------------------------------------------------------------------|
| cloudHubClient, err := clients.GetClient(ehc.config.Protocol, config.GetConfig()) |

clients.GetClient()函数定义具体如下所示:

|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| KubeEdge/edge/pkg/edgehub/factory.go |
| //GetClient returns an Adapter object with new web socket func GetClient(clientType string, config *config.EdgeHubConfig) (Adapter, error) { switch clientType { case ClientTypeWebSocket: websocketConf := wsclient.WebSocketConfig{ ... } return wsclient.NewWebSocketClient(&websocketConf), nil case ClientTypeQuic: quicConfig := quicclient.QuicConfig{ ... } return quicclient.NewQuicClient(&quicConfig), nil default: klog.Errorf("Client type: %s is not supported", clientType) } return nil, ErrorWrongClientType } |

从GetClient()函数定义可以知道,该函数定义了ClientTypeWebSocket、ClientTypeQuic两种client类型,两者都实现了Adapter interface。遇到Adapter类型的client变量时,记得对应此处的ClientTypeWebSocket、ClientTypeQuic。

cloud client初始化,具体如下所示。

|---------------------------|
| err = ehc.chClient.Init() |

ehc.chClient.Init()函数对应获取cloudhub client中ClientTypeWebSocket、ClientTypeQuic的Init()方法。

向EdgeCore各模块广播已经连接成功的消息,具体如下所示。

|-------------------------------------------------------------|
| // execute hook func after connect ehc.pubConnectInfo(true) |

将从cloud部分收到的消息转发给指定edge部分的指定模块,具体如下所示。

|----------------------|
| go ehc.routeToEdge() |

将从edge部分的消息转发给cloud部分,具体如下所示。

|-----------------------|
| go ehc.routeToCloud() |

向cloud部分发送心跳信息,具体如下所示。

|--------------------|
| go ehc.keepalive() |

剩下的步骤都是在edgehub模块退出时的一些清理操作。

到此,EdgeCore组件的edgehub模块的剖析就结束了。

未完待续......

相关推荐
组合缺一11 小时前
带来 AI Agent 开发,OpenSolon v3.8.3 发布
java·人工智能·ai·langchain·llm·solon
给算法爸爸上香11 小时前
yolo26目标检测尝鲜测试
人工智能·yolo·目标检测·计算机视觉·yolo26
智算菩萨11 小时前
2026最新视频压缩技术全景概述:AV2临近定稿、VVC加速落地、神经网络编码正在改写带宽成本
人工智能·深度学习·神经网络
洛阳泰山11 小时前
一个人,一个项目,一年的坚持:关于我的 2025年 技术突围之路
java·人工智能·spring boot
龙亘川11 小时前
SL/T830-2024 实操指南:水闸安全应急管理的标准化路径
大数据·人工智能·水闸安全管理应急预案技术导则
云卓SKYDROID11 小时前
无人机降噪技术及应用分析
人工智能·无人机·飞控·高科技·云卓科技
banjin11 小时前
轻量化时序数据库新选择:KaiwuDB-Lite 实战体验
数据库·oracle·边缘计算·时序数据库·kaiwudb·kwdb
Sherry Wangs11 小时前
【ML】机器学习基础
人工智能·机器学习
LJ979511111 小时前
告别发布焦虑:用AI开启“轻量化”精准媒体沟通时代
大数据·人工智能
点云SLAM11 小时前
SLAM文献之-A Quick Guide for the Iterated Extended Kalman Filter on Manifolds
人工智能·机器人·slam·三维重建·fast-lio·卡尔曼滤波算法·iekf