From 8f064855d949aadb04f39ab40e3377acc663e4f9 Mon Sep 17 00:00:00 2001 From: longXboy Date: Sun, 28 Feb 2021 13:39:45 +0800 Subject: [PATCH] split naming registry --- app.go | 2 +- options.go | 7 ++++--- registry/registry.go | 12 ++++++++---- transport/grpc/client.go | 12 ++++++------ transport/grpc/resolver/discovery/builder.go | 4 ++-- 5 files changed, 21 insertions(+), 16 deletions(-) diff --git a/app.go b/app.go index 509a2e51b..875951ee6 100644 --- a/app.go +++ b/app.go @@ -58,7 +58,7 @@ func (a *App) Server() []transport.Server { } // Registry returns registry. -func (a *App) Registry() registry.Registry { +func (a *App) Registry() registry.Registrar { return a.opts.registry } diff --git a/options.go b/options.go index d5aa4c804..63e25c32c 100644 --- a/options.go +++ b/options.go @@ -24,8 +24,9 @@ type options struct { sigs []os.Signal logger log.Logger - registry registry.Registry - servers []transport.Server + registry registry.Registrar + + servers []transport.Server } // ID with service id. @@ -69,7 +70,7 @@ func Logger(logger log.Logger) Option { } // Registry with service registry. -func Registry(r registry.Registry) Option { +func Registry(r registry.Registrar) Option { return func(o *options) { o.registry = r } } diff --git a/registry/registry.go b/registry/registry.go index 6f4914553..748ed5549 100644 --- a/registry/registry.go +++ b/registry/registry.go @@ -2,16 +2,20 @@ package registry import "context" -// Registry is service registry. -type Registry interface { +// Registrar is service registrar. +type Registrar interface { // Register the registration. Register(ctx context.Context, service *ServiceInstance) error // Deregister the registration. Deregister(ctx context.Context, service *ServiceInstance) error +} + +// Discovery is service discovery. +type Discovery interface { // Service return the service instances in memory according to the service name. - Service(ctx context.Context, name string) ([]*ServiceInstance, error) + Fetch(ctx context.Context, serviceName string) ([]*ServiceInstance, error) // Watch creates a watcher according to the service name. - Watch(ctx context.Context, name string) (Watcher, error) + Watch(ctx context.Context, serviceName string) (Watcher, error) } // Watcher is service watcher. diff --git a/transport/grpc/client.go b/transport/grpc/client.go index c89ec488d..8f6131686 100644 --- a/transport/grpc/client.go +++ b/transport/grpc/client.go @@ -38,10 +38,10 @@ func WithMiddleware(m middleware.Middleware) ClientOption { } } -// WithRegistry with client registry. -func WithRegistry(r registry.Registry) ClientOption { +// WithDiscovery with client registry. +func WithDiscovery(r registry.Discovery) ClientOption { return func(o *clientOptions) { - o.registry = r + o.discovery = r } } @@ -57,7 +57,7 @@ type clientOptions struct { endpoint string timeout time.Duration middleware middleware.Middleware - registry registry.Registry + discovery registry.Discovery grpcOpts []grpc.DialOption } @@ -86,8 +86,8 @@ func dial(ctx context.Context, insecure bool, opts ...ClientOption) (*grpc.Clien grpc.WithTimeout(options.timeout), grpc.WithUnaryInterceptor(UnaryClientInterceptor(options.middleware)), } - if options.registry != nil { - grpc.WithResolvers(discovery.NewBuilder(options.registry)) + if options.discovery != nil { + grpc.WithResolvers(discovery.NewBuilder(options.discovery)) } if insecure { grpcOpts = append(grpcOpts, grpc.WithInsecure()) diff --git a/transport/grpc/resolver/discovery/builder.go b/transport/grpc/resolver/discovery/builder.go index 462c63c20..5d7b5c1d4 100644 --- a/transport/grpc/resolver/discovery/builder.go +++ b/transport/grpc/resolver/discovery/builder.go @@ -21,12 +21,12 @@ func WithLogger(logger log.Logger) Option { } type builder struct { - registry registry.Registry + registry registry.Discovery logger log.Logger } // NewBuilder creates a builder which is used to factory registry resolvers. -func NewBuilder(r registry.Registry, opts ...Option) resolver.Builder { +func NewBuilder(r registry.Discovery, opts ...Option) resolver.Builder { b := &builder{ registry: r, logger: log.DefaultLogger,