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

未完待续......

相关推荐
无风听海几秒前
神经网络之单词的语义表示
人工智能·深度学习·神经网络
我叫侯小科34 分钟前
YOLOv4:目标检测界的 “集大成者”
人工智能·yolo·目标检测
小姐姐味道1 小时前
AI应用时代:多读论文勤尝试,少做讨论少分享,是活下去的关键
人工智能·程序员·开源
星期天要睡觉1 小时前
大模型(Large Language Model, LLM)——什么是大模型,大模型的基本原理、架构、流程
人工智能·python·ai·语言模型
墨利昂1 小时前
机器学习和深度学习模型训练流程
人工智能·深度学习·机器学习
wktomo1 小时前
数据挖掘比赛baseline参考
人工智能·数据挖掘
言之。1 小时前
大语言模型科普报告
人工智能·语言模型·自然语言处理
文火冰糖的硅基工坊1 小时前
[人工智能-大模型-27]:大模型应用层技术栈 - 大语言模型中的token是什么?
人工智能·语言模型·自然语言处理
Test-Sunny1 小时前
【AI增强质量管理体系结构】AI+自动化测试引擎 与Coze
人工智能
gaosushexiangji1 小时前
庆祝第33届国际高速成像与光子学会议盛大召开(I)—sCMOS相机在物理与光电成像领域应用
人工智能·制造