自学内容网 自学内容网

「连载」边缘计算(三十四)03-16:边缘部分源码(源码分析篇)

(接上篇)

proxy.MsgProcess()函数定义具体如下所示。

KubeEdge/edgemesh/pkg/proxy/proxy.go

// MsgProcess process from metaManager and start a proxy server

func MsgProcess(msg model.Message) {

svcs := filterResourceType(msg)

...

for _, svc := range svcs {

svcName := svc.Namespace + "." + svc.Name

if !IsL4Proxy(&svc) {

// when server protocol update to http

delServer(svcName)

continue

}

port := make([]int32, 0)

targetPort := make([]int32, 0)

for _, p := range svc.Spec.Ports {

// this version will support TCP only

if p.Protocol == "TCP" {

port = append(port, p.Port)

// this version will not support string type

targetPort = append(targetPort, p.TargetPort.IntVal)

}

}

if len(port) == 0 || len(targetPort) == 0 {

continue

}

switch msg.GetOperation() {

case "insert":

addServer(svcName, port)

case "delete":

delServer(svcName)

case "update":

updateServer(svcName, port)

default:

klog.Infof("[L4 proxy] Unknown operation")

}

st := addrByService.getAddrTable(svcName)

if st != nil {

st.targetPort = targetPort

}

}

}

MsgProcess()函数处理的是metamanager模块发送过来的service信息。首先根据service的命名规范、支持的协议对收到的service信息进行过滤;然后根据信息操作类型(insert、delete、update)对信息进行具体操作,这些操作都是在节点的缓存中进行的;最后对相应service的targetPort进行设置。

到此,EdgeCoreedgemesh模块的剖析就结束了。


原文地址:https://blog.csdn.net/2301_81786633/article/details/136799866

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!