「连载」边缘计算(二十六)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模块的剖析就结束了。

未完待续......

相关推荐
AIOps打工人15 分钟前
女朋友想要专属桌宠?我用 AI 提示词,1 小时把照片变成 57 帧动画精灵
人工智能
大囚长26 分钟前
自由能原理视域下的游戏成瘾机制——以“羊了个羊”为例
人工智能·游戏
水如烟1 小时前
孤能子视角:三十六计之远交近攻——拓扑重构
人工智能
YOLO数据集集合1 小时前
番茄病害智能诊断系统:YOLO+DeepSeek农业AI落地实践
人工智能·yolo·目标检测·计算机视觉
QN1幻化引擎1 小时前
我写了一个「有八层意识结构」的 Python 认知引擎,它没有用任何 LLM
人工智能·算法·架构
anyup1 小时前
这一套绝了!AI 大模型写故事,星云 SDK 驱动 3D 数字人实时演绎
前端·人工智能·aigc
张彦峰ZYF1 小时前
大模型LLM ACA - ACP认证考试真题冲刺演练二答案参考
人工智能·lora·llm·embedding·rag·few-shot
SoaringPigeon2 小时前
NVIDIA博客-预训练去想象,微调去行动:世界-动作模型 (WAM) 的崛起
人工智能·深度学习·机器人·自动驾驶
甲维斯2 小时前
骚操作N:把GPT5.6接入Claude Code大发神威!
人工智能