Package zk
Overview ▹
Index ▹
Constants
const (
// DefaultConnectTimeout is the default timeout to establish a connection to
// a ZooKeeper node.
DefaultConnectTimeout = 2 * time.Second
// DefaultSessionTimeout is the default timeout to keep the current
// ZooKeeper session alive during a temporary disconnect.
DefaultSessionTimeout = 5 * time.Second
)
Variables
DefaultACL is the default ACL to use for creating znodes.
var (
DefaultACL = zk.WorldACL(zk.PermAll)
ErrInvalidCredentials = errors.New("invalid credentials provided")
ErrClientClosed = errors.New("client service closed")
ErrNotRegistered = errors.New("not registered")
ErrNodeNotFound = errors.New("node not found")
)
type Client ¶
Client is a wrapper around a lower level ZooKeeper client implementation.
type Client interface {
// GetEntries should query the provided path in ZooKeeper, place a watch on
// it and retrieve data from its current child nodes.
GetEntries(path string) ([]string, <-chan zk.Event, error)
// CreateParentNodes should try to create the path in case it does not exist
// yet on ZooKeeper.
CreateParentNodes(path string) error
// Register a service with ZooKeeper.
Register(s *Service) error
// Deregister a service with ZooKeeper.
Deregister(s *Service) error
// Stop should properly shutdown the client implementation
Stop()
}
func NewClient ¶
func NewClient(servers []string, logger log.Logger, options ...Option) (Client, error)
NewClient returns a ZooKeeper client with a connection to the server cluster. It will return an error if the server cluster cannot be resolved.
type Option ¶
Option functions enable friendly APIs.
type Option func(*clientConfig) error
func ACL ¶
func ACL(acl []zk.ACL) Option
ACL returns an Option specifying a non-default ACL for creating parent nodes.
func ConnectTimeout ¶
func ConnectTimeout(t time.Duration) Option
ConnectTimeout returns an Option specifying a non-default connection timeout when we try to establish a connection to a ZooKeeper server.
func Credentials ¶
func Credentials(user, pass string) Option
Credentials returns an Option specifying a user/password combination which the client will use to authenticate itself with.
func EventHandler ¶
func EventHandler(handler func(zk.Event)) Option
EventHandler returns an Option specifying a callback function to handle incoming zk.Event payloads (ZooKeeper connection events).
func Payload ¶
func Payload(payload [][]byte) Option
Payload returns an Option specifying non-default data values for each znode created by CreateParentNodes.
func SessionTimeout ¶
func SessionTimeout(t time.Duration) Option
SessionTimeout returns an Option specifying a non-default session timeout.
type Registrar ¶
Registrar registers service instance liveness information to ZooKeeper.
type Registrar struct {
// contains filtered or unexported fields
}
func NewRegistrar ¶
func NewRegistrar(client Client, service Service, logger log.Logger) *Registrar
NewRegistrar returns a ZooKeeper Registrar acting on the provided catalog registration.
func (*Registrar) Deregister ¶
func (r *Registrar) Deregister()
Deregister implements sd.Registrar interface.
func (*Registrar) Register ¶
func (r *Registrar) Register()
Register implements sd.Registrar interface.
type Service ¶
Service holds the root path, service name and instance identifying data you want to publish to ZooKeeper.
type Service struct {
Path string // discovery namespace, example: /myorganization/myplatform/
Name string // service name, example: addscv
Data []byte // instance data to store for discovery, example: 10.0.2.10:80
// contains filtered or unexported fields
}
type Subscriber ¶
Subscriber yield endpoints stored in a certain ZooKeeper path. Any kind of change in that path is watched and will update the Subscriber endpoints.
type Subscriber struct {
// contains filtered or unexported fields
}
func NewSubscriber ¶
func NewSubscriber(c Client, path string, factory sd.Factory, logger log.Logger) (*Subscriber, error)
NewSubscriber returns a ZooKeeper subscriber. ZooKeeper will start watching the given path for changes and update the Subscriber endpoints.
func (*Subscriber) Endpoints ¶
func (s *Subscriber) Endpoints() ([]endpoint.Endpoint, error)
Endpoints implements the Subscriber interface.
func (*Subscriber) Stop ¶
func (s *Subscriber) Stop()
Stop terminates the Subscriber.
ActiveGo 1.8