diff --git a/registry/protocol/protocol.go b/registry/protocol/protocol.go index bba36151fd..b760bcc85b 100644 --- a/registry/protocol/protocol.go +++ b/registry/protocol/protocol.go @@ -80,14 +80,20 @@ func newRegistryProtocol() *registryProtocol { func (proto *registryProtocol) getRegistry(registryUrl *common.URL) registry.Registry { var err error - reg, loaded := proto.registries.Load(registryUrl.PrimitiveURL) + + namespace := registryUrl.GetParam(constant.RegistryNamespaceKey, "") + cacheKey := registryUrl.PrimitiveURL + if namespace != "" { + cacheKey = cacheKey + "?" + constant.NacosNamespaceID + "=" + namespace + } + reg, loaded := proto.registries.Load(cacheKey) if !loaded { reg, err = extension.GetRegistry(registryUrl.Protocol, registryUrl) if err != nil { logger.Errorf("Registry can not connect success, program is going to panic.Error message is %s", err.Error()) panic(err) } - proto.registries.Store(registryUrl.PrimitiveURL, reg) + proto.registries.Store(cacheKey, reg) } return reg.(registry.Registry) } diff --git a/remoting/nacos/builder.go b/remoting/nacos/builder.go index 2de736519e..20807112d8 100644 --- a/remoting/nacos/builder.go +++ b/remoting/nacos/builder.go @@ -122,5 +122,9 @@ func NewNacosClientByURL(url *common.URL) (*nacosClient.NacosNamingClient, error return nil, perrors.New("nacos client name must set") } logger.Infof("[Nacos Client] New nacos client with config = %+v", scs) + namespaceID := url.GetParam(constant.NacosNamespaceID, "") + if len(namespaceID) > 0 { + clientName += namespaceID + } return nacosClient.NewNacosNamingClient(clientName, true, scs, cc) }