From a8782ae31d5e2ed83bb750d50d4b9ccbd47d545f Mon Sep 17 00:00:00 2001 From: zhangshen023 <1292369127@qq.com> Date: Wed, 9 Sep 2020 00:24:36 +0800 Subject: [PATCH] delete the method 'Init' of interface ServiceDiscovery --- common/constant/key.go | 2 - config/config_loader_test.go | 4 - registry/consul/service_discovery.go | 73 +++++++++++-------- registry/consul/service_discovery_test.go | 8 +- registry/etcdv3/service_discovery.go | 5 -- ...vent_publishing_service_deiscovery_test.go | 5 -- .../event_publishing_service_discovery.go | 16 +--- registry/nacos/service_discovery.go | 5 -- registry/service_discovery.go | 10 --- .../service_discovery_registry.go | 1 - 10 files changed, 46 insertions(+), 83 deletions(-) diff --git a/common/constant/key.go b/common/constant/key.go index a05ebbdbf..02db030a0 100644 --- a/common/constant/key.go +++ b/common/constant/key.go @@ -186,8 +186,6 @@ const ( ACL_TOKEN = "acl-token" // default deregister critical server after DEFAULT_DEREGISTER_TIME = "20s" - DEFAULT_WATCH_TIMEOUT = 60 * 1000 - WATCH_TIMEOUT = "consul-watch-timeout" DEREGISTER_AFTER = "consul-deregister-critical-service-after" ) diff --git a/config/config_loader_test.go b/config/config_loader_test.go index baf0c8fba..461e607c1 100644 --- a/config/config_loader_test.go +++ b/config/config_loader_test.go @@ -503,10 +503,6 @@ func (m *mockServiceDiscovery) String() string { panic("implement me") } -func (m *mockServiceDiscovery) Init(registryURL common.URL) error { - panic("implement me") -} - func (m *mockServiceDiscovery) Destroy() error { panic("implement me") } diff --git a/registry/consul/service_discovery.go b/registry/consul/service_discovery.go index ae2233d59..7dd0ade65 100644 --- a/registry/consul/service_discovery.go +++ b/registry/consul/service_discovery.go @@ -21,7 +21,6 @@ import ( "encoding/base64" "fmt" "strconv" - "strings" "sync" "time" ) @@ -35,7 +34,6 @@ import ( ) import ( - "github.com/apache/dubbo-go/common" "github.com/apache/dubbo-go/common/constant" "github.com/apache/dubbo-go/common/extension" "github.com/apache/dubbo-go/common/logger" @@ -71,43 +69,37 @@ func newConsulServiceDiscovery(name string) (registry.ServiceDiscovery, error) { descriptor := fmt.Sprintf("consul-service-discovery[%s]", remoteConfig.Address) + config := &consul.Config{Address: remoteConfig.Address, Token: remoteConfig.Params[constant.ACL_TOKEN]} + client, err := consul.NewClient(config) + if err != nil { + return nil, perrors.WithMessage(err, "create consul client failed.") + } + return &consulServiceDiscovery{ - address: remoteConfig.Address, - descriptor: descriptor, + address: remoteConfig.Address, + descriptor: descriptor, + checkPassInterval: getCheckPassInterval(remoteConfig.Params), + Config: config, + tag: remoteConfig.Params[constant.QUERY_TAG], + consulClient: client, + deregisterCriticalServiceAfter: getDeregisterAfter(remoteConfig.Params), }, nil } // consulServiceDiscovery is the implementation of service discovery based on consul. type consulServiceDiscovery struct { - group string // descriptor is a short string about the basic information of this instance descriptor string // Consul client. - consulClient *consul.Client - serviceUrl common.URL - checkPassInterval int64 - tag string - tags []string - address string - ttl sync.Map + consulClient *consul.Client + checkPassInterval int64 + tag string + address string + deregisterCriticalServiceAfter string + ttl sync.Map *consul.Config } -func (csd *consulServiceDiscovery) Init(registryURL common.URL) error { - csd.serviceUrl = registryURL - csd.checkPassInterval = registryURL.GetParamInt(constant.CHECK_PASS_INTERVAL, constant.DEFAULT_CHECK_PASS_INTERVAL) - csd.tag = registryURL.GetParam(constant.QUERY_TAG, "") - csd.tags = strings.Split(registryURL.GetParam("tags", ""), ",") - aclToken := registryURL.GetParam(constant.ACL_TOKEN, "") - csd.Config = &consul.Config{Address: csd.address, Token: aclToken} - client, err := consul.NewClient(csd.Config) - if err != nil { - return perrors.WithMessage(err, "create consul client failed.") - } - csd.consulClient = client - return nil -} - func (csd *consulServiceDiscovery) String() string { return csd.descriptor } @@ -240,9 +232,8 @@ func decodeConsulMetadata(metadata map[string]string) map[string]string { } func (csd *consulServiceDiscovery) GetInstances(serviceName string) []registry.ServiceInstance { - waitTime := csd.serviceUrl.GetParamInt(constant.WATCH_TIMEOUT, constant.DEFAULT_WATCH_TIMEOUT) / 1000 instances, _, err := csd.consulClient.Health().Service(serviceName, csd.tag, true, &consul.QueryOptions{ - WaitTime: time.Duration(waitTime), + WaitTime: time.Duration(csd.checkPassInterval), }) if err != nil { logger.Errorf("get instances for service %s,error: %v", serviceName, err) @@ -411,10 +402,32 @@ func (csd *consulServiceDiscovery) buildCheck(instance registry.ServiceInstance) return consul.AgentServiceCheck{ //CheckID: buildID(instance), TTL: strconv.FormatInt(csd.checkPassInterval/1000, 10) + "s", - DeregisterCriticalServiceAfter: deregister, + DeregisterCriticalServiceAfter: csd.deregisterCriticalServiceAfter, + } +} + +// nolint +func getCheckPassInterval(params map[string]string) int64 { + checkPassIntervalStr, ok := params[constant.CHECK_PASS_INTERVAL] + if !ok { + return constant.DEFAULT_CHECK_PASS_INTERVAL + } + checkPassInterval, err := strconv.ParseInt(checkPassIntervalStr, 10, 64) + if err != nil { + logger.Warnf("consul service discovery remote config error:%s", checkPassIntervalStr) + return constant.DEFAULT_CHECK_PASS_INTERVAL } + return checkPassInterval } +// nolint +func getDeregisterAfter(metadata map[string]string) string { + deregister, ok := metadata[constant.DEREGISTER_AFTER] + if !ok || len(deregister) == 0 { + deregister = constant.DEFAULT_DEREGISTER_TIME + } + return deregister +} func buildID(instance registry.ServiceInstance) string { id := fmt.Sprintf("id:%s,serviceName:%s,host:%s,port:%d", instance.GetId(), instance.GetServiceName(), instance.GetHost(), instance.GetPort()) diff --git a/registry/consul/service_discovery_test.go b/registry/consul/service_discovery_test.go index f743869b9..43d1cd173 100644 --- a/registry/consul/service_discovery_test.go +++ b/registry/consul/service_discovery_test.go @@ -80,8 +80,7 @@ func TestConsulServiceDiscovery_newConsulServiceDiscovery(t *testing.T) { func TestConsulServiceDiscovery_Destroy(t *testing.T) { prepareData() serviceDiscovery, err := extension.GetServiceDiscovery(constant.CONSUL_KEY, testName) - _, registryUrl := prepareService() - serviceDiscovery.Init(registryUrl) + prepareService() assert.Nil(t, err) assert.NotNil(t, serviceDiscovery) err = serviceDiscovery.Destroy() @@ -103,15 +102,12 @@ func TestConsulServiceDiscovery_CRUD(t *testing.T) { extension.SetAndInitGlobalDispatcher("mock") rand.Seed(time.Now().Unix()) - instance, registryUrl := prepareService() + instance, _ := prepareService() // clean data serviceDiscovery, err := extension.GetServiceDiscovery(constant.CONSUL_KEY, testName) assert.Nil(t, err) - err = serviceDiscovery.Init(registryUrl) - assert.Nil(t, err) - err = serviceDiscovery.Unregister(instance) assert.Nil(t, err) diff --git a/registry/etcdv3/service_discovery.go b/registry/etcdv3/service_discovery.go index 080a699f9..dceaa99df 100644 --- a/registry/etcdv3/service_discovery.go +++ b/registry/etcdv3/service_discovery.go @@ -31,7 +31,6 @@ import ( ) import ( - "github.com/apache/dubbo-go/common" "github.com/apache/dubbo-go/common/constant" "github.com/apache/dubbo-go/common/extension" "github.com/apache/dubbo-go/common/logger" @@ -67,10 +66,6 @@ type etcdV3ServiceDiscovery struct { childListenerMap map[string]*etcdv3.EventListener } -func (e *etcdV3ServiceDiscovery) Init(registryURL common.URL) error { - return nil -} - // basic information of this instance func (e *etcdV3ServiceDiscovery) String() string { return e.descriptor diff --git a/registry/event/event_publishing_service_deiscovery_test.go b/registry/event/event_publishing_service_deiscovery_test.go index 2b4bf05f1..54752c03c 100644 --- a/registry/event/event_publishing_service_deiscovery_test.go +++ b/registry/event/event_publishing_service_deiscovery_test.go @@ -30,7 +30,6 @@ import ( ) import ( - "github.com/apache/dubbo-go/common" "github.com/apache/dubbo-go/common/extension" "github.com/apache/dubbo-go/common/observer" dispatcher2 "github.com/apache/dubbo-go/common/observer/dispatcher" @@ -117,10 +116,6 @@ func (tel *TestServiceInstancePreRegisteredEventListener) GetEventType() reflect type ServiceDiscoveryA struct { } -func (msd *ServiceDiscoveryA) Init(registryURL common.URL) error { - return nil -} - // String return mockServiceDiscovery func (msd *ServiceDiscoveryA) String() string { return "testServiceDiscovery" diff --git a/registry/event/event_publishing_service_discovery.go b/registry/event/event_publishing_service_discovery.go index 14ee18997..3ee2f4a44 100644 --- a/registry/event/event_publishing_service_discovery.go +++ b/registry/event/event_publishing_service_discovery.go @@ -17,17 +17,12 @@ package event -import ( - "sync" -) - import ( gxset "github.com/dubbogo/gost/container/set" gxpage "github.com/dubbogo/gost/page" ) import ( - "github.com/apache/dubbo-go/common" "github.com/apache/dubbo-go/common/extension" "github.com/apache/dubbo-go/common/observer" "github.com/apache/dubbo-go/config" @@ -38,8 +33,7 @@ import ( // EventPublishingServiceDiscovery will enhance Service Discovery // Publish some event about service discovery type EventPublishingServiceDiscovery struct { - serviceDiscovery registry.ServiceDiscovery - serviceDiscoveryInitOnce sync.Once + serviceDiscovery registry.ServiceDiscovery } // NewEventPublishingServiceDiscovery is a constructor @@ -54,14 +48,6 @@ func (epsd *EventPublishingServiceDiscovery) String() string { return epsd.serviceDiscovery.String() } -func (epsd *EventPublishingServiceDiscovery) Init(registryURL common.URL) error { - var err error - epsd.serviceDiscoveryInitOnce.Do(func() { - err = epsd.serviceDiscovery.Init(registryURL) - }) - return err -} - // Destroy delegate function func (epsd *EventPublishingServiceDiscovery) Destroy() error { f := func() error { diff --git a/registry/nacos/service_discovery.go b/registry/nacos/service_discovery.go index a112ebaad..0e5ad8e69 100644 --- a/registry/nacos/service_discovery.go +++ b/registry/nacos/service_discovery.go @@ -32,7 +32,6 @@ import ( ) import ( - "github.com/apache/dubbo-go/common" "github.com/apache/dubbo-go/common/constant" "github.com/apache/dubbo-go/common/extension" "github.com/apache/dubbo-go/common/logger" @@ -65,10 +64,6 @@ type nacosServiceDiscovery struct { registryInstances []registry.ServiceInstance } -func (n *nacosServiceDiscovery) Init(registryURL common.URL) error { - return nil -} - // Destroy will close the service discovery. // Actually, it only marks the naming client as null and then return func (n *nacosServiceDiscovery) Destroy() error { diff --git a/registry/service_discovery.go b/registry/service_discovery.go index a4e9e2421..cb7a3c018 100644 --- a/registry/service_discovery.go +++ b/registry/service_discovery.go @@ -26,10 +26,6 @@ import ( gxpage "github.com/dubbogo/gost/page" ) -import ( - "github.com/apache/dubbo-go/common" -) - const DefaultPageSize = 100 // ServiceDiscovery is the common operations of Service Discovery @@ -38,12 +34,6 @@ type ServiceDiscovery interface { // ----------------- lifecycle ------------------- - /** - * Initializes the ServiceDiscovery - * - */ - Init(registryURL common.URL) error - // Destroy will destroy the service discovery. // If the discovery cannot be destroy, it will return an error. Destroy() error diff --git a/registry/servicediscovery/service_discovery_registry.go b/registry/servicediscovery/service_discovery_registry.go index 9722fc8ec..52006b2bb 100644 --- a/registry/servicediscovery/service_discovery_registry.go +++ b/registry/servicediscovery/service_discovery_registry.go @@ -125,7 +125,6 @@ func creatServiceDiscovery(url *common.URL) (registry.ServiceDiscovery, error) { return nil, perrors.WithMessage(err, "Create service discovery fialed") } serviceDiscovery := event.NewEventPublishingServiceDiscovery(originServiceDiscovery) - serviceDiscovery.Init(*url) return serviceDiscovery, nil } -- GitLab