Documentation ¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func NewConfigServiceClient ¶
NewConfigServiceClient returns a ConfigServiceClient.
func NewEtcdConfigServiceClient ¶ added in v1.0.1
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 // DialOptions are used by the etcd client to connect to etcd peers. They can be used to customize // the low level networking behavior of the client (e.g. to forward connections over a proxy). DialOptions() []grpc.DialOption SetDialOptions(opts []grpc.DialOption) Cluster }
Cluster defines the configuration for a etcd 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"` DialOptions []grpc.DialOption `yaml:"-"` // nonserializable }
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.
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.
type ZoneClient ¶ added in v1.0.1
ZoneClient is a cached etcd client for a zone.