diff --git a/config_center/configuration_listener.go b/config_center/configuration_listener.go index 541cc09286bb83fa5b66db3745e45ad0a9df5e2f..97fd9c70923f5c921ce2ca2b4028a71ea2b49e27 100644 --- a/config_center/configuration_listener.go +++ b/config_center/configuration_listener.go @@ -27,6 +27,7 @@ import ( // ConfigurationListener for changing listener's event type ConfigurationListener interface { + // Process the notification event once there's any change happens on the config Process(*ConfigChangeEvent) } diff --git a/registry/base_configuration_listener.go b/registry/base_configuration_listener.go index 55418318dfc52ed9f17f1ec6a18ad9ef9d8163bf..7b28d7ee1b30a03b8211c4c1efa5824c3b61453a 100644 --- a/registry/base_configuration_listener.go +++ b/registry/base_configuration_listener.go @@ -29,19 +29,19 @@ import ( "github.com/apache/dubbo-go/remoting" ) -// BaseConfigurationListener ... +// nolint type BaseConfigurationListener struct { configurators []config_center.Configurator dynamicConfiguration config_center.DynamicConfiguration defaultConfiguratorFunc func(url *common.URL) config_center.Configurator } -// Configurators ... +// Configurators gets Configurator from config center func (bcl *BaseConfigurationListener) Configurators() []config_center.Configurator { return bcl.configurators } -// InitWith ... +// InitWith will init BaseConfigurationListener by @key+@Listener+@f func (bcl *BaseConfigurationListener) InitWith(key string, listener config_center.ConfigurationListener, f func(url *common.URL) config_center.Configurator) { bcl.dynamicConfiguration = config.GetEnvInstance().GetDynamicConfiguration() if bcl.dynamicConfiguration == nil { @@ -60,7 +60,7 @@ func (bcl *BaseConfigurationListener) InitWith(key string, listener config_cente } } -// Process ... +// Process the notification event once there's any change happens on the config. func (bcl *BaseConfigurationListener) Process(event *config_center.ConfigChangeEvent) { logger.Infof("Notification of overriding rule, change type is: %v , raw config content is:%v", event.ConfigType, event.Value) if event.ConfigType == remoting.EventTypeDel { @@ -82,14 +82,14 @@ func (bcl *BaseConfigurationListener) genConfiguratorFromRawRule(rawConfig strin return nil } -// OverrideUrl ... +// OverrideUrl gets existing configuration rule and overrides provider url before exporting. func (bcl *BaseConfigurationListener) OverrideUrl(url *common.URL) { for _, v := range bcl.configurators { v.Configure(url) } } -// ToConfigurators ... +// ToConfigurators converts @urls by @f to config_center.Configurators func ToConfigurators(urls []*common.URL, f func(url *common.URL) config_center.Configurator) []config_center.Configurator { if len(urls) == 0 { return nil diff --git a/registry/consul/listener.go b/registry/consul/listener.go index 5fac9ec0f9b6c08620021de9d0b92e3b94773c12..cf3888dd16ee4a9b504664383be69ca1faf4d842 100644 --- a/registry/consul/listener.go +++ b/registry/consul/listener.go @@ -187,6 +187,7 @@ func (l *consulListener) handler(idx uint64, raw interface{}) { } } +// Next returns the service event from consul. func (l *consulListener) Next() (*registry.ServiceEvent, error) { select { case event := <-l.eventCh: @@ -196,6 +197,7 @@ func (l *consulListener) Next() (*registry.ServiceEvent, error) { } } +// Close closes this listener func (l *consulListener) Close() { close(l.done) l.plan.Stop() diff --git a/registry/consul/registry.go b/registry/consul/registry.go index c5b8510a6c87068a5b4f1ce52203d401a896a6c2..4ef87394687aecc8804b2cebedd58fc0e72e8e6e 100644 --- a/registry/consul/registry.go +++ b/registry/consul/registry.go @@ -36,8 +36,7 @@ import ( ) const ( - // RegistryConnDelay ... - RegistryConnDelay = 3 + registryConnDelay = 3 ) func init() { @@ -74,6 +73,7 @@ func newConsulRegistry(url *common.URL) (registry.Registry, error) { return r, nil } +// Register service to consul registry center func (r *consulRegistry) Register(url common.URL) error { var err error @@ -95,6 +95,7 @@ func (r *consulRegistry) register(url common.URL) error { return r.client.Agent().ServiceRegister(service) } +// Unregister service from consul registry center func (r *consulRegistry) Unregister(url common.URL) error { var err error @@ -112,6 +113,7 @@ func (r *consulRegistry) unregister(url common.URL) error { return r.client.Agent().ServiceDeregister(buildId(url)) } +// Subscribe service from consul registry center func (r *consulRegistry) Subscribe(url *common.URL, notifyListener registry.NotifyListener) { role, _ := strconv.Atoi(r.URL.GetParam(constant.ROLE_KEY, "")) if role == common.CONSUMER { @@ -133,7 +135,7 @@ func (r *consulRegistry) subscribe(url *common.URL, notifyListener registry.Noti return } logger.Warnf("getListener() = err:%v", perrors.WithStack(err)) - time.Sleep(time.Duration(RegistryConnDelay) * time.Second) + time.Sleep(time.Duration(registryConnDelay) * time.Second) continue } @@ -156,10 +158,12 @@ func (r *consulRegistry) getListener(url common.URL) (registry.Listener, error) return listener, err } +// GetUrl get registry URL of consul registry center func (r *consulRegistry) GetUrl() common.URL { return *r.URL } +// IsAvailable checks consul registry center whether is available func (r *consulRegistry) IsAvailable() bool { select { case <-r.done: @@ -169,6 +173,7 @@ func (r *consulRegistry) IsAvailable() bool { } } +// Destroy consul registry center func (r *consulRegistry) Destroy() { close(r.done) } diff --git a/registry/directory/directory.go b/registry/directory/directory.go index 49b0027f433861c76cc8d827f85091f47dc4217f..e845db01f1b8f76897f2beeaee45a84537c96d83 100644 --- a/registry/directory/directory.go +++ b/registry/directory/directory.go @@ -46,6 +46,8 @@ func init() { extension.SetDefaultRegistryDirectory(NewRegistryDirectory) } +// RegistryDirectory implementation of Directory: +// Invoker list returned from this Directory's list method have been filtered by Routers type RegistryDirectory struct { directory.BaseDirectory cacheInvokers []protocol.Invoker diff --git a/registry/etcdv3/listener.go b/registry/etcdv3/listener.go index 51fdf21f5d229932646b4da464de960c2f2985de..436b6eca5b0dfb8514cbc21a47032490f7b1c21f 100644 --- a/registry/etcdv3/listener.go +++ b/registry/etcdv3/listener.go @@ -38,15 +38,17 @@ type dataListener struct { listener config_center.ConfigurationListener } -// NewRegistryDataListener +// NewRegistryDataListener creates a data listener for etcd func NewRegistryDataListener(listener config_center.ConfigurationListener) *dataListener { return &dataListener{listener: listener} } +// AddInterestedURL adds a registration @url to listen func (l *dataListener) AddInterestedURL(url *common.URL) { l.interestedURL = append(l.interestedURL, url) } +// DataChange processes the data change event from registry center of etcd func (l *dataListener) DataChange(eventType remoting.Event) bool { index := strings.Index(eventType.Path, "/providers/") @@ -88,10 +90,12 @@ func NewConfigurationListener(reg *etcdV3Registry) *configurationListener { return &configurationListener{registry: reg, events: make(chan *config_center.ConfigChangeEvent, 32)} } +// Process data change event from config center of etcd func (l *configurationListener) Process(configType *config_center.ConfigChangeEvent) { l.events <- configType } +// Next returns next service event once received func (l *configurationListener) Next() (*registry.ServiceEvent, error) { for { select { @@ -114,6 +118,7 @@ func (l *configurationListener) Next() (*registry.ServiceEvent, error) { } } +// Close etcd registry center func (l *configurationListener) Close() { l.registry.WaitGroup().Done() } diff --git a/registry/etcdv3/registry.go b/registry/etcdv3/registry.go index 862b7acbdd6326d7129f28c94bb0a03022a0819c..f3df78177bda2b068d0ad88156b593ab3d48c5d7 100644 --- a/registry/etcdv3/registry.go +++ b/registry/etcdv3/registry.go @@ -104,27 +104,32 @@ func newETCDV3Registry(url *common.URL) (registry.Registry, error) { return r, nil } +// InitListeners init listeners of etcd registry center func (r *etcdV3Registry) InitListeners() { r.listener = etcdv3.NewEventListener(r.client) r.configListener = NewConfigurationListener(r) r.dataListener = NewRegistryDataListener(r.configListener) } +// DoRegister actually do the register job in the registry center of etcd func (r *etcdV3Registry) DoRegister(root string, node string) error { return r.client.Create(path.Join(root, node), "") } +// CloseAndNilClient closes listeners and clear client func (r *etcdV3Registry) CloseAndNilClient() { r.client.Close() r.client = nil } +// CloseListener closes listeners func (r *etcdV3Registry) CloseListener() { if r.configListener != nil { r.configListener.Close() } } +// CreatePath create the path in the registry center of etcd func (r *etcdV3Registry) CreatePath(k string) error { var tmpPath string for _, str := range strings.Split(k, "/")[1:] { @@ -137,6 +142,7 @@ func (r *etcdV3Registry) CreatePath(k string) error { return nil } +// DoSubscribe actually subscribe the provider URL func (r *etcdV3Registry) DoSubscribe(svc *common.URL) (registry.Listener, error) { var ( diff --git a/registry/event.go b/registry/event.go index be9f11d00bb5a70b0d787d15bcdc98471aad0a4b..5fe6df6a379e1de8662917fb76c6d16fa9a17f37 100644 --- a/registry/event.go +++ b/registry/event.go @@ -36,7 +36,7 @@ func init() { // service event // //////////////////////////////////////// -// ServiceEvent ... +// ServiceEvent includes create, update, delete event type ServiceEvent struct { Action remoting.EventType Service common.URL diff --git a/registry/event_listener.go b/registry/event_listener.go index b8d6148442d9e10e210958dead690c4a95b33fb6..1805f2833c96bd08c4cf9c92337d7d221e8829e9 100644 --- a/registry/event_listener.go +++ b/registry/event_listener.go @@ -36,6 +36,7 @@ type ConditionalEventListener interface { Accept(e Event) bool } +// ServiceInstancesChangedListener is used when the Service Discovery Changed // TODO (implement ConditionalEventListener) type ServiceInstancesChangedListener struct { ServiceName string diff --git a/registry/kubernetes/listener.go b/registry/kubernetes/listener.go index ac6f8af8a2dbe5b072a580a65dadb3902eb7b750..24c8d81614c7dd323e4f23ec7de5d28b24eecb70 100644 --- a/registry/kubernetes/listener.go +++ b/registry/kubernetes/listener.go @@ -38,12 +38,12 @@ type dataListener struct { listener config_center.ConfigurationListener } -// NewRegistryDataListener +// NewRegistryDataListener creates a data listener for kubernetes func NewRegistryDataListener(listener config_center.ConfigurationListener) *dataListener { return &dataListener{listener: listener} } -// AddInterestedURL +// AddInterestedURL adds the @url of registry center to the listener func (l *dataListener) AddInterestedURL(url *common.URL) { l.interestedURL = append(l.interestedURL, url) } @@ -91,10 +91,12 @@ func NewConfigurationListener(reg *kubernetesRegistry) *configurationListener { return &configurationListener{registry: reg, events: make(chan *config_center.ConfigChangeEvent, 32)} } +// Process processes the data change event from config center of kubernetes func (l *configurationListener) Process(configType *config_center.ConfigChangeEvent) { l.events <- configType } +// Next returns next service event once received func (l *configurationListener) Next() (*registry.ServiceEvent, error) { for { select { @@ -116,6 +118,8 @@ func (l *configurationListener) Next() (*registry.ServiceEvent, error) { } } } + +// Close kubernetes registry center func (l *configurationListener) Close() { l.registry.WaitGroup().Done() } diff --git a/registry/kubernetes/registry.go b/registry/kubernetes/registry.go index 9fa6b83941621e8a4b9cf55d738d9b6a02dcc7f0..f06d80124b7a627954ca3f4de0ae189e424708fd 100644 --- a/registry/kubernetes/registry.go +++ b/registry/kubernetes/registry.go @@ -68,23 +68,28 @@ type kubernetesRegistry struct { configListener *configurationListener } +// Client gets the etcdv3 kubernetes func (r *kubernetesRegistry) Client() *kubernetes.Client { r.cltLock.RLock() client := r.client r.cltLock.RUnlock() return client } + +// SetClient sets the kubernetes client func (r *kubernetesRegistry) SetClient(client *kubernetes.Client) { r.cltLock.Lock() r.client = client r.cltLock.Unlock() } +// CloseAndNilClient closes listeners and clear client func (r *kubernetesRegistry) CloseAndNilClient() { r.client.Close() r.client = nil } +// CloseListener closes listeners func (r *kubernetesRegistry) CloseListener() { r.cltLock.Lock() @@ -96,6 +101,7 @@ func (r *kubernetesRegistry) CloseListener() { r.configListener = nil } +// CreatePath create the path in the registry center of kubernetes func (r *kubernetesRegistry) CreatePath(k string) error { if err := r.client.Create(k, ""); err != nil { return perrors.WithMessagef(err, "create path %s in kubernetes", k) @@ -103,10 +109,12 @@ func (r *kubernetesRegistry) CreatePath(k string) error { return nil } +// DoRegister actually do the register job in the registry center of kubernetes func (r *kubernetesRegistry) DoRegister(root string, node string) error { return r.client.Create(path.Join(root, node), "") } +// DoSubscribe actually subscribe the provider URL func (r *kubernetesRegistry) DoSubscribe(svc *common.URL) (registry.Listener, error) { var ( @@ -139,6 +147,7 @@ func (r *kubernetesRegistry) DoSubscribe(svc *common.URL) (registry.Listener, er return configListener, nil } +// InitListeners init listeners of kubernetes registry center func (r *kubernetesRegistry) InitListeners() { r.listener = kubernetes.NewEventListener(r.client) r.configListener = NewConfigurationListener(r) @@ -183,6 +192,7 @@ func newMockKubernetesRegistry( return r, nil } +// HandleClientRestart will reconnect to kubernetes registry center func (r *kubernetesRegistry) HandleClientRestart() { var ( diff --git a/registry/mock_registry.go b/registry/mock_registry.go index 9591928eebd22bf2a99ec9dcfeb285c4519a3b90..2b83d5ab8892f673e1123cd01fa74e48e3d2dc22 100644 --- a/registry/mock_registry.go +++ b/registry/mock_registry.go @@ -30,13 +30,13 @@ import ( "github.com/apache/dubbo-go/common/logger" ) -// MockRegistry ... +// MockRegistry is used as mock registry type MockRegistry struct { listener *listener destroyed *atomic.Bool } -// NewMockRegistry ... +// NewMockRegistry creates a mock registry func NewMockRegistry(url *common.URL) (Registry, error) { registry := &MockRegistry{ destroyed: atomic.NewBool(false), @@ -46,23 +46,23 @@ func NewMockRegistry(url *common.URL) (Registry, error) { return registry, nil } -// Register ... +// Register is used as a mock registry func (*MockRegistry) Register(url common.URL) error { return nil } -// Destroy ... +// nolint func (r *MockRegistry) Destroy() { if r.destroyed.CAS(false, true) { } } -// IsAvailable ... +// IsAvailable is use for determine a mock registry available func (r *MockRegistry) IsAvailable() bool { return !r.destroyed.Load() } -// GetUrl ... +// nolint func (r *MockRegistry) GetUrl() common.URL { return common.URL{} } @@ -71,7 +71,7 @@ func (r *MockRegistry) subscribe(*common.URL) (Listener, error) { return r.listener, nil } -// Subscribe ... +// nolint func (r *MockRegistry) Subscribe(url *common.URL, notifyListener NotifyListener) { go func() { for { @@ -123,7 +123,7 @@ func (*listener) Close() { } -// MockEvent ... +// nolint func (r *MockRegistry) MockEvent(event *ServiceEvent) { r.listener.listenChan <- event } diff --git a/registry/nacos/listener.go b/registry/nacos/listener.go index a2237dca265f25b07b19a8e1f4fe5a5f6ea9183e..36f733df5a32f57e3410a2f31f9ab4b0af735d49 100644 --- a/registry/nacos/listener.go +++ b/registry/nacos/listener.go @@ -51,7 +51,7 @@ type nacosListener struct { subscribeParam *vo.SubscribeParam } -// NewNacosListener ... +// NewRegistryDataListener creates a data listener for nacos func NewNacosListener(url common.URL, namingClient naming_client.INamingClient) (*nacosListener, error) { listener := &nacosListener{ namingClient: namingClient, @@ -109,6 +109,7 @@ func generateUrl(instance model.Instance) *common.URL { ) } +// Callback will be invoked when got subscribed events. func (nl *nacosListener) Callback(services []model.SubscribeService, err error) { if err != nil { logger.Errorf("nacos subscribe callback error:%s , subscribe:%+v ", err.Error(), nl.subscribeParam) @@ -198,6 +199,7 @@ func (nl *nacosListener) process(configType *config_center.ConfigChangeEvent) { nl.events <- configType } +// Next returns the service event from nacos. func (nl *nacosListener) Next() (*registry.ServiceEvent, error) { for { select { @@ -212,6 +214,7 @@ func (nl *nacosListener) Next() (*registry.ServiceEvent, error) { } } +// nolint func (nl *nacosListener) Close() { nl.stopListen() close(nl.done) diff --git a/registry/nacos/registry.go b/registry/nacos/registry.go index a436b85064829b9f42c9dcc45545e5bf2fd2fefe..3eeb7680abb3da98f5ed08f1aea57d490b2caf85 100644 --- a/registry/nacos/registry.go +++ b/registry/nacos/registry.go @@ -123,6 +123,7 @@ func createRegisterParam(url common.URL, serviceName string) vo.RegisterInstance return instance } +// 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) @@ -140,7 +141,7 @@ func (nr *nacosRegistry) subscribe(conf *common.URL) (registry.Listener, error) return NewNacosListener(*conf, nr.namingClient) } -//subscribe from registry +// subscribe from registry func (nr *nacosRegistry) Subscribe(url *common.URL, notifyListener registry.NotifyListener) { for { if !nr.IsAvailable() { @@ -174,14 +175,17 @@ func (nr *nacosRegistry) Subscribe(url *common.URL, notifyListener registry.Noti } } +// GetUrl gets its registration URL func (nr *nacosRegistry) GetUrl() common.URL { return *nr.URL } +// IsAvailable determines nacos registry center whether it is available func (nr *nacosRegistry) IsAvailable() bool { return true } +// nolint func (nr *nacosRegistry) Destroy() { return } diff --git a/registry/nacos/service_discovery.go b/registry/nacos/service_discovery.go index 7d3406cac233dd5293c7522b4f12148fdcdd704e..2611a8dc58d2a45e578d90aa6a5d1aeb7e7f4f63 100644 --- a/registry/nacos/service_discovery.go +++ b/registry/nacos/service_discovery.go @@ -34,8 +34,9 @@ import ( ) const ( - defaultGroup = "DEFAULT_GROUP" - idKey = "id" + defaultGroup = "DEFAULT_GROUP" + idKey = "id" + defaultPageSize = 100 ) // init will put the service discovery into extension @@ -92,7 +93,7 @@ func (n *nacosServiceDiscovery) Unregister(instance registry.ServiceInstance) er // GetDefaultPageSize will return the constant registry.DefaultPageSize func (n *nacosServiceDiscovery) GetDefaultPageSize() int { - return registry.DefaultPageSize + return defaultPageSize } // GetServices will return the all services diff --git a/registry/nacos/service_discovery_test.go b/registry/nacos/service_discovery_test.go index a756e8669301919d406a4bcf0e1c962cf532a5c6..04431a614b40288b2a21f75d69c4be313bd7721f 100644 --- a/registry/nacos/service_discovery_test.go +++ b/registry/nacos/service_discovery_test.go @@ -113,7 +113,7 @@ func TestNacosServiceDiscovery_CRUD(t *testing.T) { func TestNacosServiceDiscovery_GetDefaultPageSize(t *testing.T) { serviceDiscovry, _ := extension.GetServiceDiscovery(constant.NACOS_KEY, mockUrl()) - assert.Equal(t, registry.DefaultPageSize, serviceDiscovry.GetDefaultPageSize()) + assert.Equal(t, defaultPageSize, serviceDiscovry.GetDefaultPageSize()) } func mockUrl() *common.URL { diff --git a/registry/protocol/protocol.go b/registry/protocol/protocol.go index a936db80bf2c3b46ba389142cc40686ed3df17b1..4c669b2cee74b95ceb3bc8287f145ccd6b99bc0b 100644 --- a/registry/protocol/protocol.go +++ b/registry/protocol/protocol.go @@ -117,6 +117,7 @@ func (proto *registryProtocol) initConfigurationListeners() { proto.providerConfigurationListener = newProviderConfigurationListener(proto.overrideListeners) } +// Refer provider service from registry center func (proto *registryProtocol) Refer(url common.URL) protocol.Invoker { var registryUrl = url var serviceUrl = registryUrl.SubURL @@ -156,6 +157,7 @@ func (proto *registryProtocol) Refer(url common.URL) protocol.Invoker { return invoker } +// Export provider service to registry center func (proto *registryProtocol) Export(invoker protocol.Invoker) protocol.Exporter { proto.once.Do(func() { proto.initConfigurationListeners() @@ -229,6 +231,7 @@ func newOverrideSubscribeListener(overriderUrl *common.URL, invoker protocol.Inv return &overrideSubscribeListener{url: overriderUrl, originInvoker: invoker, protocol: proto} } +// Notify will be triggered when a service change notification is received. func (nl *overrideSubscribeListener) Notify(event *registry.ServiceEvent) { if isMatched(&(event.Service), nl.url) && event.Action == remoting.EventTypeAdd { nl.configurator = extension.GetDefaultConfigurator(&(event.Service)) @@ -325,6 +328,7 @@ func getSubscribedOverrideUrl(providerUrl *common.URL) *common.URL { return newUrl } +// Destroy registry protocol func (proto *registryProtocol) Destroy() { for _, ivk := range proto.invokers { ivk.Destroy() @@ -389,6 +393,7 @@ func newWrappedInvoker(invoker protocol.Invoker, url *common.URL) *wrappedInvoke } } +// Invoke remote service base on URL of wrappedInvoker func (ivk *wrappedInvoker) Invoke(ctx context.Context, invocation protocol.Invocation) protocol.Result { // get right url ivk.invoker.(*proxy_factory.ProxyInvoker).BaseInvoker = *protocol.NewBaseInvoker(ivk.GetUrl()) @@ -411,6 +416,7 @@ func newProviderConfigurationListener(overrideListeners *sync.Map) *providerConf return listener } +// Process notified once there's any change happens on the provider config func (listener *providerConfigurationListener) Process(event *config_center.ConfigChangeEvent) { listener.BaseConfigurationListener.Process(event) listener.overrideListeners.Range(func(key, value interface{}) bool { @@ -435,6 +441,7 @@ func newServiceConfigurationListener(overrideListener *overrideSubscribeListener return listener } +// Process notified once there's any change happens on the service config func (listener *serviceConfigurationListener) Process(event *config_center.ConfigChangeEvent) { listener.BaseConfigurationListener.Process(event) listener.overrideListener.doOverrideIfNecessary() diff --git a/registry/registry.go b/registry/registry.go index d673864700e6ba99e8f0283247d53760b85598aa..5b37aa684ca90d1f18898b9f62f27d86a2c0fba3 100644 --- a/registry/registry.go +++ b/registry/registry.go @@ -45,13 +45,16 @@ type Registry interface { Subscribe(*common.URL, NotifyListener) } -// NotifyListener ... +// nolint type NotifyListener interface { + // Notify supports notifications on the service interface and the dimension of the data type. Notify(*ServiceEvent) } // Listener Deprecated! type Listener interface { + // Next returns next service event once received Next() (*ServiceEvent, error) + // Close closes this listener Close() } diff --git a/registry/service_discovery.go b/registry/service_discovery.go index a8228a4abe8ed07e3c5afda300702f778daea4ae..1d5a3593e392083d2115222e131974b941a391c3 100644 --- a/registry/service_discovery.go +++ b/registry/service_discovery.go @@ -26,8 +26,7 @@ import ( gxpage "github.com/dubbogo/gost/page" ) -const DefaultPageSize = 100 - +// ServiceDiscovery is the common operations of Service Discovery type ServiceDiscovery interface { fmt.Stringer diff --git a/registry/service_instance.go b/registry/service_instance.go index 2cc229ee3b056da2d9f1a1b70d3e0f5858c9da5f..247c8567659d1d512a6685ddb0404fecd9968bcd 100644 --- a/registry/service_instance.go +++ b/registry/service_instance.go @@ -17,6 +17,7 @@ package registry +// ServiceInstance is the model class of an instance of a service, which is used for service registration and discovery. type ServiceInstance interface { // GetId will return this instance's id. It should be unique. diff --git a/registry/zookeeper/registry.go b/registry/zookeeper/registry.go index 88d5d6221b4bc7136ba4c3e7c95fb53ba35a9a58..1e7bd08adef5ac9920413fd198b726f49c11ecd4 100644 --- a/registry/zookeeper/registry.go +++ b/registry/zookeeper/registry.go @@ -86,12 +86,12 @@ func newZkRegistry(url *common.URL) (registry.Registry, error) { return r, nil } -// Options ... +// nolint type Options struct { client *zookeeper.ZookeeperClient } -// Option ... +// nolint type Option func(*Options) func newMockZkRegistry(url *common.URL, opts ...zookeeper.Option) (*zk.TestCluster, *zkRegistry, error) { @@ -116,6 +116,7 @@ func newMockZkRegistry(url *common.URL, opts ...zookeeper.Option) (*zk.TestClust return c, r, nil } +// InitListeners initializes listeners of zookeeper registry center func (r *zkRegistry) InitListeners() { r.listener = zookeeper.NewZkEventListener(r.client) newDataListener := NewRegistryDataListener() @@ -141,35 +142,43 @@ func (r *zkRegistry) InitListeners() { r.dataListener = newDataListener } +// CreatePath creates the path in the registry center of zookeeper func (r *zkRegistry) CreatePath(path string) error { return r.ZkClient().Create(path) } +// DoRegister actually do the register job in the registry center of zookeeper func (r *zkRegistry) DoRegister(root string, node string) error { return r.registerTempZookeeperNode(root, node) } +// DoSubscribe actually subscribes the provider URL func (r *zkRegistry) DoSubscribe(conf *common.URL) (registry.Listener, error) { return r.getListener(conf) } +// CloseAndNilClient closes listeners and clear client func (r *zkRegistry) CloseAndNilClient() { r.client.Close() r.client = nil } +// nolint func (r *zkRegistry) ZkClient() *zookeeper.ZookeeperClient { return r.client } +// nolint func (r *zkRegistry) SetZkClient(client *zookeeper.ZookeeperClient) { r.client = client } +// nolint func (r *zkRegistry) ZkClientLock() *sync.Mutex { return &r.cltLock } +// CloseListener closes listeners func (r *zkRegistry) CloseListener() { if r.dataListener != nil { r.dataListener.Close()