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

package registry

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

Package registry is an interface for service discovery

Index

Package Files

consul_registry.go consul_watcher.go encoding.go options.go registry.go service.go watcher.go

Variables

var (
    DefaultRegistry = newConsulRegistry()

    // Not found error when GetService is called
    ErrNotFound = errors.New("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 Node Uses

type Node struct {
    Id       string            `json:"id"`
    Address  string            `json:"address"`
    Port     int               `json:"port"`
    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

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 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

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
consulPackage consul provides a consul based registry and is the default discovery system
gossipPackage Gossip provides a gossip registry based on hashicorp/memberlist
gossip/protoPackage gossip is a generated protocol buffer package.
mdnsPackage mdns is a multicast dns registry
mockPackage mock provides a mock registry for testing

Package registry imports 17 packages (graph) and is imported by 306 packages. Updated 2018-12-06. Refresh now. Tools for package owners.