etcd

package
v1.4.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 20, 2021 License: Apache-2.0 Imports: 24 Imported by: 24

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func NewConfigServiceClient

func NewConfigServiceClient(opts Options) (client.Client, error)

NewConfigServiceClient returns a ConfigServiceClient.

func NewEtcdConfigServiceClient added in v1.0.1

func NewEtcdConfigServiceClient(opts Options) (*csclient, error)

NewEtcdConfigServiceClient returns a new etcd-backed cluster client.

Types

type Client added in v1.0.1

type Client interface {
	client.Client

	Clients() []ZoneClient
}

Client is an etcd-backed m3cluster client.

type Cluster

type Cluster interface {
	Zone() string
	SetZone(z string) Cluster

	Endpoints() []string
	SetEndpoints(endpoints []string) Cluster

	KeepAliveOptions() KeepAliveOptions
	SetKeepAliveOptions(value KeepAliveOptions) Cluster

	TLSOptions() TLSOptions
	SetTLSOptions(TLSOptions) Cluster

	AutoSyncInterval() time.Duration
	SetAutoSyncInterval(value time.Duration) Cluster

	DialTimeout() time.Duration
	SetDialTimeout(value time.Duration) Cluster
}

Cluster defines the configuration for a etcd cluster.

func NewCluster

func NewCluster() Cluster

NewCluster creates a Cluster.

type ClusterConfig

type ClusterConfig struct {
	Zone             string           `yaml:"zone"`
	Endpoints        []string         `yaml:"endpoints"`
	KeepAlive        *KeepAliveConfig `yaml:"keepAlive"`
	TLS              *TLSConfig       `yaml:"tls"`
	AutoSyncInterval time.Duration    `yaml:"autoSyncInterval"`
}

ClusterConfig is the config for a zoned etcd cluster.

func (ClusterConfig) NewCluster

func (c ClusterConfig) NewCluster() Cluster

NewCluster creates a new Cluster.

type Configuration

type Configuration struct {
	Zone              string                 `yaml:"zone"`
	Env               string                 `yaml:"env"`
	Service           string                 `yaml:"service" validate:"nonzero"`
	CacheDir          string                 `yaml:"cacheDir"`
	ETCDClusters      []ClusterConfig        `yaml:"etcdClusters"`
	SDConfig          services.Configuration `yaml:"m3sd"`
	WatchWithRevision int64                  `yaml:"watchWithRevision"`
	NewDirectoryMode  *os.FileMode           `yaml:"newDirectoryMode"`

	Retry                  retry.Configuration `yaml:"retry"`
	RequestTimeout         time.Duration       `yaml:"requestTimeout"`
	WatchChanInitTimeout   time.Duration       `yaml:"watchChanInitTimeout"`
	WatchChanCheckInterval time.Duration       `yaml:"watchChanCheckInterval"`
	WatchChanResetInterval time.Duration       `yaml:"watchChanResetInterval"`
	// EnableFastGets trades consistency for latency and throughput using clientv3.WithSerializable()
	// on etcd ops.
	EnableFastGets bool `yaml:"enableFastGets"`
}

Configuration is for config service client.

func (Configuration) NewClient

func (cfg Configuration) NewClient(iopts instrument.Options) (client.Client, error)

NewClient creates a new config service client.

func (Configuration) NewOptions

func (cfg Configuration) NewOptions() Options

NewOptions returns a new Options.

type KeepAliveConfig added in v0.14.0

type KeepAliveConfig struct {
	Enabled bool          `yaml:"enabled"`
	Period  time.Duration `yaml:"period"`
	Jitter  time.Duration `yaml:"jitter"`
	Timeout time.Duration `yaml:"timeout"`
}

KeepAliveConfig configures keepAlive behavior.

func (*KeepAliveConfig) NewOptions added in v0.14.0

func (c *KeepAliveConfig) NewOptions() KeepAliveOptions

NewOptions constructs options based on the config.

type KeepAliveOptions

type KeepAliveOptions interface {
	// KeepAliveEnabled determines whether keepAlives are enabled.
	KeepAliveEnabled() bool

	// SetKeepAliveEnabled sets whether keepAlives are enabled.
	SetKeepAliveEnabled(value bool) KeepAliveOptions

	// KeepAlivePeriod is the duration of time after which if the client doesn't see
	// any activity the client pings the server to see if transport is alive.
	KeepAlivePeriod() time.Duration

	// SetKeepAlivePeriod sets the duration of time after which if the client doesn't see
	// any activity the client pings the server to see if transport is alive.
	SetKeepAlivePeriod(value time.Duration) KeepAliveOptions

	// KeepAlivePeriodMaxJitter is used to add some jittering to keep alive period
	// to avoid a large number of clients all sending keepalive probes at the
	// same time.
	KeepAlivePeriodMaxJitter() time.Duration

	// SetKeepAlivePeriodMaxJitter sets the maximum jittering to keep alive period
	// to avoid a large number of clients all sending keepalive probes at the
	// same time.
	SetKeepAlivePeriodMaxJitter(value time.Duration) KeepAliveOptions

	// KeepAliveTimeout is the time that the client waits for a response for the
	// keep-alive probe. If the response is not received in this time, the connection is closed.
	KeepAliveTimeout() time.Duration

	// SetKeepAliveTimeout sets the time that the client waits for a response for the
	// keep-alive probe. If the response is not received in this time, the connection is closed.
	SetKeepAliveTimeout(value time.Duration) KeepAliveOptions
}

KeepAliveOptions provide a set of client-side keepAlive options.

func NewKeepAliveOptions

func NewKeepAliveOptions() KeepAliveOptions

NewKeepAliveOptions provide a set of keepAlive options.

type Options

type Options interface {
	// RequestTimeout is the timeout for etcd requests
	RequestTimeout() time.Duration
	// SetRequestTimeout sets the RequestTimeout
	SetRequestTimeout(t time.Duration) Options

	Env() string
	SetEnv(e string) Options

	Zone() string
	SetZone(z string) Options

	Service() string
	SetService(id string) Options

	CacheDir() string
	SetCacheDir(dir string) Options

	ServicesOptions() services.Options
	SetServicesOptions(opts services.Options) Options

	Clusters() []Cluster
	SetClusters(clusters []Cluster) Options
	ClusterForZone(z string) (Cluster, bool)

	InstrumentOptions() instrument.Options
	SetInstrumentOptions(iopts instrument.Options) Options

	RetryOptions() retry.Options
	SetRetryOptions(retryOpts retry.Options) Options

	// WatchChanCheckInterval will be used to periodically check if a watch chan
	// is no longer being subscribed and should be closed
	WatchChanCheckInterval() time.Duration
	// SetWatchChanCheckInterval sets the WatchChanCheckInterval
	SetWatchChanCheckInterval(t time.Duration) Options

	// WatchChanResetInterval is the delay before resetting the etcd watch chan
	WatchChanResetInterval() time.Duration
	// SetWatchChanResetInterval sets the WatchChanResetInterval
	SetWatchChanResetInterval(t time.Duration) Options

	// WatchChanInitTimeout is the timeout for a watchChan initialization
	WatchChanInitTimeout() time.Duration
	// SetWatchChanInitTimeout sets the WatchChanInitTimeout
	SetWatchChanInitTimeout(t time.Duration) Options

	WatchWithRevision() int64
	SetWatchWithRevision(rev int64) Options

	// EnableFastGets returns whether to use clientv3.WithSerializable() option to speed up gets.
	EnableFastGets() bool
	// SetEnableFastGets sets clientv3.WithSerializable() to speed up gets, but can fetch stale data.
	SetEnableFastGets(enabled bool) Options

	SetNewDirectoryMode(fm os.FileMode) Options
	NewDirectoryMode() os.FileMode

	Validate() error
}

Options is the Options to create a config service client.

func NewOptions

func NewOptions() Options

NewOptions creates a set of Options.

type TLSConfig

type TLSConfig struct {
	CrtPath   string `yaml:"crtPath"`
	CACrtPath string `yaml:"caCrtPath"`
	KeyPath   string `yaml:"keyPath"`
}

TLSConfig is the config for TLS.

type TLSOptions

type TLSOptions interface {
	CrtPath() string
	SetCrtPath(string) TLSOptions

	KeyPath() string
	SetKeyPath(string) TLSOptions

	CACrtPath() string
	SetCACrtPath(string) TLSOptions

	Config() (*tls.Config, error)
}

TLSOptions defines the options for TLS.

func NewTLSOptions

func NewTLSOptions() TLSOptions

NewTLSOptions creates a set of TLS Options.

type ZoneClient added in v1.0.1

type ZoneClient struct {
	Client *clientv3.Client
	Zone   string
}

ZoneClient is a cached etcd client for a zone.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL