You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dubbo.apache.org by al...@apache.org on 2021/10/18 04:24:02 UTC
[dubbo-go] branch 3.0 updated: Ftr: Support Custom Registry
GroupName on Nacos (#1353)
This is an automated email from the ASF dual-hosted git repository.
alexstocks pushed a commit to branch 3.0
in repository https://gitbox.apache.org/repos/asf/dubbo-go.git
The following commit(s) were added to refs/heads/3.0 by this push:
new 267c06e Ftr: Support Custom Registry GroupName on Nacos (#1353)
267c06e is described below
commit 267c06efa9acdf5dc3b8bf8dd7d7bd0f1585a088
Author: ChangedenChan <ch...@gmail.com>
AuthorDate: Mon Oct 18 12:23:56 2021 +0800
Ftr: Support Custom Registry GroupName on Nacos (#1353)
* 支持Nacos下自定义服务的GroupName,保持与Java一致
* 支持Nacos下自定义服务的GroupName,保持与Java一致(基于registry.group或registries[registry].group)
* 修复人工入参时启动订阅异常的问题
* registry默认groupName为DEFAULT_GROUP
* copy from 1.5
Co-authored-by: Changeden <ch...@unizone.tech>
---
common/constant/key.go | 1 +
registry/nacos/listener.go | 7 ++++++-
registry/nacos/registry.go | 15 +++++++++++----
registry/nacos/service_discovery.go | 2 ++
registry/service_instance.go | 1 +
5 files changed, 21 insertions(+), 5 deletions(-)
diff --git a/common/constant/key.go b/common/constant/key.go
index 849d1de..3160f92 100644
--- a/common/constant/key.go
+++ b/common/constant/key.go
@@ -138,6 +138,7 @@ const (
REGISTRY_TTL_KEY = "registry.ttl"
SIMPLIFIED_KEY = "simplified"
NAMESPACE_KEY = "namespace"
+ REGISTRY_GROUP_KEY = "registry.group"
)
const (
diff --git a/registry/nacos/listener.go b/registry/nacos/listener.go
index e9fa3b8..8dad195 100644
--- a/registry/nacos/listener.go
+++ b/registry/nacos/listener.go
@@ -190,7 +190,12 @@ func (nl *nacosListener) startListen() error {
return perrors.New("nacos naming namingClient stopped")
}
serviceName := getSubscribeName(nl.listenUrl)
- nl.subscribeParam = &vo.SubscribeParam{ServiceName: serviceName, SubscribeCallback: nl.Callback}
+ groupName := nl.listenUrl.GetParam(constant.REGISTRY_GROUP_KEY, defaultGroup)
+ nl.subscribeParam = &vo.SubscribeParam{
+ ServiceName: serviceName,
+ SubscribeCallback: nl.Callback,
+ GroupName: groupName,
+ }
go func() {
_ = nl.namingClient.Client().Subscribe(nl.subscribeParam)
}()
diff --git a/registry/nacos/registry.go b/registry/nacos/registry.go
index ed58fd6..348555c 100644
--- a/registry/nacos/registry.go
+++ b/registry/nacos/registry.go
@@ -83,7 +83,7 @@ func appendParam(target *bytes.Buffer, url *common.URL, key string) {
}
}
-func createRegisterParam(url *common.URL, serviceName string) vo.RegisterInstanceParam {
+func createRegisterParam(url *common.URL, serviceName string, groupName string) vo.RegisterInstanceParam {
category := getCategory(url)
params := make(map[string]string)
@@ -111,6 +111,7 @@ func createRegisterParam(url *common.URL, serviceName string) vo.RegisterInstanc
Healthy: true,
Ephemeral: true,
ServiceName: serviceName,
+ GroupName: groupName,
}
return instance
}
@@ -118,7 +119,8 @@ func createRegisterParam(url *common.URL, serviceName string) vo.RegisterInstanc
// Register will register the service @url to its nacos registry center
func (nr *nacosRegistry) Register(url *common.URL) error {
serviceName := getServiceName(url)
- param := createRegisterParam(url, serviceName)
+ groupName := nr.URL.GetParam(constant.GROUP_KEY, defaultGroup)
+ param := createRegisterParam(url, serviceName, groupName)
isRegistry, err := nr.namingClient.Client().RegisterInstance(param)
if err != nil {
return err
@@ -130,7 +132,7 @@ func (nr *nacosRegistry) Register(url *common.URL) error {
return nil
}
-func createDeregisterParam(url *common.URL, serviceName string) vo.DeregisterInstanceParam {
+func createDeregisterParam(url *common.URL, serviceName string, groupName string) vo.DeregisterInstanceParam {
if len(url.Ip) == 0 {
url.Ip = localIP
}
@@ -142,13 +144,15 @@ func createDeregisterParam(url *common.URL, serviceName string) vo.DeregisterIns
Ip: url.Ip,
Port: uint64(port),
ServiceName: serviceName,
+ GroupName: groupName,
Ephemeral: true,
}
}
func (nr *nacosRegistry) DeRegister(url *common.URL) error {
serviceName := getServiceName(url)
- param := createDeregisterParam(url, serviceName)
+ groupName := nr.URL.GetParam(constant.GROUP_KEY, defaultGroup)
+ param := createDeregisterParam(url, serviceName, groupName)
isDeRegistry, err := nr.namingClient.Client().DeregisterInstance(param)
if err != nil {
return err
@@ -183,6 +187,9 @@ func (nr *nacosRegistry) Subscribe(url *common.URL, notifyListener registry.Noti
return perrors.New("nacosRegistry is not available.")
}
+ groupName := nr.GetParam(constant.GROUP_KEY, defaultGroup)
+ url.SetParam(constant.REGISTRY_GROUP_KEY, groupName) // update to registry.group
+
listener, err := nr.subscribe(url)
if err != nil {
if !nr.IsAvailable() {
diff --git a/registry/nacos/service_discovery.go b/registry/nacos/service_discovery.go
index 68bcb6f..58717a5 100644
--- a/registry/nacos/service_discovery.go
+++ b/registry/nacos/service_discovery.go
@@ -169,6 +169,7 @@ func (n *nacosServiceDiscovery) GetInstances(serviceName string) []registry.Serv
Enable: ins.Enable,
Healthy: ins.Healthy,
Metadata: metadata,
+ GroupName: n.group,
})
}
return res
@@ -269,6 +270,7 @@ func (n *nacosServiceDiscovery) AddListener(listener registry.ServiceInstancesCh
Enable: service.Enable,
Healthy: true,
Metadata: metadata,
+ GroupName: n.group,
})
}
diff --git a/registry/service_instance.go b/registry/service_instance.go
index 6e0ffee..12cc350 100644
--- a/registry/service_instance.go
+++ b/registry/service_instance.go
@@ -90,6 +90,7 @@ type DefaultServiceInstance struct {
Metadata map[string]string
ServiceMetadata *common.MetadataInfo
Address string
+ GroupName string
}
// GetID will return this instance's id. It should be unique.