「连载」边缘计算(三十四)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进行设置。
到此,EdgeCore的edgemesh模块的剖析就结束了。
原文地址:https://blog.csdn.net/2301_81786633/article/details/136799866
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!