go-micro: github.com/micro/go-micro/registry Index | Files | Directories

package registry

import "github.com/micro/go-micro/registry"

Package mdns is a multicast dns registry

Package registry is an interface for service discovery

Index

Package Files

encoding.go mdns_registry.go mdns_watcher.go options.go registry.go service.go util.go watcher.go

Variables

var (
    DefaultRegistry = NewRegistry()

    // Not found error when GetService is called
    ErrNotFound = errors.New("service not found")
    // Watcher stopped error when watcher is stopped
    ErrWatcherStopped = errors.New("watcher stopped")
)

func Deregister Uses

func Deregister(s *Service) error

Deregister a service node

func Register Uses

func Register(s *Service, opts ...RegisterOption) error

Register a service node. Additionally supply options such as TTL.

func String Uses

func String() string

type Endpoint Uses

type Endpoint struct {
    Name     string            `json:"name"`
    Request  *Value            `json:"request"`
    Response *Value            `json:"response"`
    Metadata map[string]string `json:"metadata"`
}

type Event Uses

type Event struct {
    // Id is registry id
    Id  string
    // Type defines type of event
    Type EventType
    // Timestamp is event timestamp
    Timestamp time.Time
    // Service is registry service
    Service *Service
}

Event is registry event

type EventType Uses

type EventType int

EventType defines registry event type

const (
    // Create is emitted when a new service is registered
    Create EventType = iota
    // Delete is emitted when an existing service is deregsitered
    Delete
    // Update is emitted when an existing servicec is updated
    Update
)

func (EventType) String Uses

func (t EventType) String() string

String returns human readable event type

type Node Uses

type Node struct {
    Id       string            `json:"id"`
    Address  string            `json:"address"`
    Metadata map[string]string `json:"metadata"`
}

type Option Uses

type Option func(*Options)

func Addrs Uses

func Addrs(addrs ...string) Option

Addrs is the registry addresses to use

func Secure Uses

func Secure(b bool) Option

Secure communication with the registry

func TLSConfig Uses

func TLSConfig(t *tls.Config) Option

Specify TLS Config

func Timeout Uses

func Timeout(t time.Duration) Option

type Options Uses

type Options struct {
    Addrs     []string
    Timeout   time.Duration
    Secure    bool
    TLSConfig *tls.Config
    // Other options for implementations of the interface
    // can be stored in a context
    Context context.Context
}

type RegisterOption Uses

type RegisterOption func(*RegisterOptions)

func RegisterTTL Uses

func RegisterTTL(t time.Duration) RegisterOption

type RegisterOptions Uses

type RegisterOptions struct {
    TTL time.Duration
    // Other options for implementations of the interface
    // can be stored in a context
    Context context.Context
}

type Registry Uses

type Registry interface {
    Init(...Option) error
    Options() Options
    Register(*Service, ...RegisterOption) error
    Deregister(*Service) error
    GetService(string) ([]*Service, error)
    ListServices() ([]*Service, error)
    Watch(...WatchOption) (Watcher, error)
    String() string
}

The registry provides an interface for service discovery and an abstraction over varying implementations {consul, etcd, zookeeper, ...}

func NewRegistry Uses

func NewRegistry(opts ...Option) Registry

NewRegistry returns a new default registry which is mdns

type Result Uses

type Result struct {
    Action  string
    Service *Service
}

Result is returned by a call to Next on the watcher. Actions can be create, update, delete

type Service Uses

type Service struct {
    Name      string            `json:"name"`
    Version   string            `json:"version"`
    Metadata  map[string]string `json:"metadata"`
    Endpoints []*Endpoint       `json:"endpoints"`
    Nodes     []*Node           `json:"nodes"`
}

func Copy Uses

func Copy(current []*Service) []*Service

Copy makes a copy of services

func CopyService Uses

func CopyService(service *Service) *Service

CopyService make a copy of service

func GetService Uses

func GetService(name string) ([]*Service, error)

Retrieve a service. A slice is returned since we separate Name/Version.

func ListServices Uses

func ListServices() ([]*Service, error)

List the services. Only returns service names

func Merge Uses

func Merge(olist []*Service, nlist []*Service) []*Service

Merge merges two lists of services and returns a new copy

func Remove Uses

func Remove(old, del []*Service) []*Service

Remove removes services and returns a new copy

type Value Uses

type Value struct {
    Name   string   `json:"name"`
    Type   string   `json:"type"`
    Values []*Value `json:"values"`
}

type WatchOption Uses

type WatchOption func(*WatchOptions)

func WatchService Uses

func WatchService(name string) WatchOption

Watch a service

type WatchOptions Uses

type WatchOptions struct {
    // Specify a service to watch
    // If blank, the watch is for all services
    Service string
    // Other options for implementations of the interface
    // can be stored in a context
    Context context.Context
}

type Watcher Uses

type Watcher interface {
    // Next is a blocking call
    Next() (*Result, error)
    Stop()
}

Watcher is an interface that returns updates about services within the registry.

func Watch Uses

func Watch(opts ...WatchOption) (Watcher, error)

Watch returns a watcher which allows you to track updates to the registry.

Directories

PathSynopsis
cachePackage cache provides a registry cache
consul
etcdPackage etcd provides an etcd service registry
handler
mdnsPackage mdns provides a multicast dns registry
memoryPackage memory provides an in-memory registry
proto
servicePackage service uses the registry service

Package registry imports 15 packages (graph) and is imported by 482 packages. Updated 2019-10-14. Refresh now. Tools for package owners.