0
点赞
收藏
分享

微信扫一扫

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

爱做梦的夏夏 2024-03-08 阅读 7

(接上篇)

获取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()函数定义可以知道,该函数定义了ClientTypeWebSocketClientTypeQuic两种client类型,两者都实现了Adapter interface。遇到Adapter类型的client变量时,记得对应此处的ClientTypeWebSocketClientTypeQuic

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

err = ehc.chClient.Init()

ehc.chClient.Init()函数对应获取cloudhub client中ClientTypeWebSocketClientTypeQuic的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模块的剖析就结束了。

未完待续……  

举报

相关推荐

边缘计算架构分析

0 条评论