「连载」边缘计算(二十六)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()函数定义可以知道,该函数定义了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模块的剖析就结束了。

未完待续……  

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-11 15:44:03       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-11 15:44:03       106 阅读
  3. 在Django里面运行非项目文件

    2024-03-11 15:44:03       87 阅读
  4. Python语言-面向对象

    2024-03-11 15:44:03       96 阅读

热门阅读

  1. FlinkCDC快速搭建实现数据监控

    2024-03-11 15:44:03       39 阅读
  2. JVM笔记

    JVM笔记

    2024-03-11 15:44:03      32 阅读
  3. Dockerfile编写实践篇

    2024-03-11 15:44:03       36 阅读
  4. ThreadLocal

    2024-03-11 15:44:03       37 阅读
  5. deeplearning with pytorch (四)

    2024-03-11 15:44:03       46 阅读