Documentation
¶
Index ¶
- Constants
- func ListenIP() (net.IP, error)
- func Load(env string, configDir string, zone string, config interface{}) error
- type BootstrapMode
- type Cassandra
- type ClustersInfo
- type Config
- type Logger
- type Metrics
- type PProf
- type PProfInitializerImpl
- type RPC
- type RPCFactory
- type Replicator
- type Ringpop
- type RingpopFactory
- type Service
- type Statsd
Constants ¶
const ( // EnvKeyRoot the environment variable key for runtime root dir EnvKeyRoot = "CADENCE_ROOT" // EnvKeyConfigDir the environment variable key for config dir EnvKeyConfigDir = "CADENCE_CONFIG_DIR" // EnvKeyEnvironment is the environment variable key for environment EnvKeyEnvironment = "CADENCE_ENVIRONMENT" // EnvKeyAvailabilityZone is the environment variable key for AZ EnvKeyAvailabilityZone = "CADENCE_AVAILABILTY_ZONE" )
Variables ¶
This section is empty.
Functions ¶
func ListenIP ¶ added in v0.3.2
ListenIP returns the IP to bind to in Listen. It tries to find an IP that can be used by other machines to reach this machine.
func Load ¶
Load loads the configuration from a set of yaml config files found in the config directory
The loader first fetches the set of files matching a pre-determined naming convention, then sorts them by hierarchy order and after that, simply loads the files one after another with the key/values in the later files overriding the key/values in the earlier files
The hierarchy is as follows from lowest to highest
base.yaml
env.yaml -- environment is one of the input params ex-development
env_az.yaml -- zone is another input param
Types ¶
type BootstrapMode ¶
type BootstrapMode int
BootstrapMode is an enum type for ringpop bootstrap mode
const ( // BootstrapModeNone represents a bootstrap mode set to nothing or invalid BootstrapModeNone BootstrapMode = iota // BootstrapModeFile represents a file-based bootstrap mode BootstrapModeFile // BootstrapModeHosts represents a list of hosts passed in the configuration BootstrapModeHosts // BootstrapModeCustom represents a custom bootstrap mode BootstrapModeCustom )
func (*BootstrapMode) UnmarshalYAML ¶
func (m *BootstrapMode) UnmarshalYAML(unmarshal func(interface{}) error) error
UnmarshalYAML is called by the yaml package to convert the config YAML into a BootstrapMode.
type Cassandra ¶
type Cassandra struct {
// Hosts is a csv of cassandra endpoints
Hosts string `yaml:"hosts" validate:"nonzero"`
// Port is the cassandra port used for connection by gocql client
Port int `yaml:"port"`
// User is the cassandra user used for authentication by gocql client
User string `yaml:"user"`
// Password is the cassandra password used for authentication by gocql client
Password string `yaml:"password"`
// Keyspace is the cassandra keyspace
Keyspace string `yaml:"keyspace" validate:"nonzero"`
// VisibilityKeyspace is the cassandra keyspace for visibility store
VisibilityKeyspace string `yaml:"visibilityKeyspace" validate:"nonzero"`
// Consistency is the default cassandra consistency level
Consistency string `yaml:"consistency"`
// Datacenter is the data center filter arg for cassandra
Datacenter string `yaml:"datacenter"`
// NumHistoryShards is the desired number of history shards
NumHistoryShards int `yaml:"numHistoryShards" validate:"nonzero"`
}
Cassandra contains configuration to connect to Cassandra cluster
type ClustersInfo ¶ added in v0.3.7
type ClustersInfo struct {
// EnableGlobalDomain whether the global domain is enabled, this attr should be discarded when
// cross DC is made public
EnableGlobalDomain bool `yaml:"enableGlobalDomain"`
// FailoverVersionIncrement is the increment of each cluster failover version
FailoverVersionIncrement int64 `yaml:"failoverVersionIncrement"`
// MasterClusterName is the master cluster name, only the master cluster can register / update domain
// all clusters can do domain failover
MasterClusterName string `yaml:"masterClusterName"`
// CurrentClusterName is the name of the current cluster
CurrentClusterName string `yaml:"currentClusterName"`
// ClusterInitialFailoverVersions contains all cluster names to corresponding initial failover version
ClusterInitialFailoverVersions map[string]int64 `yaml:"clusterInitialFailoverVersion"`
}
ClustersInfo contains the all cluster names and active cluster
type Config ¶
type Config struct {
// Ringpop is the ringpop related configuration
Ringpop Ringpop `yaml:"ringpop"`
// Cassandra is the configuration for connecting to cassandra
Cassandra Cassandra `yaml:"cassandra"`
// Log is the logging config
Log Logger `yaml:"log"`
// ClustersInfo is the config containing all valid clusters and active acluster
ClustersInfo ClustersInfo `yaml:"clustersInfo"`
// Services is a map of service name to service config items
Services map[string]Service `yaml:"services"`
// Kafka is the config for connecting to kafka
Kafka messaging.KafkaConfig `yaml:"kafka"`
}
Config contains the configuration for a set of cadence services
type Logger ¶
type Logger struct {
// Stdout is true if the output needs to goto standard out
Stdout bool `yaml:"stdout"`
// Level is the desired log level
Level string `yaml:"level"`
// OutputFile is the path to the log output file
OutputFile string `yaml:"outputFile"`
}
Logger contains the config items for logger
func (*Logger) NewBarkLogger ¶
NewBarkLogger builds and returns a new bark logger for this logging configuration
type Metrics ¶
type Metrics struct {
// M3 is the configuration for m3 metrics reporter
M3 *m3.Configuration `yaml:"m3"`
// Statsd is the configuration for statsd reporter
Statsd *Statsd `yaml:"statsd"`
// Tags is the set of key-value pairs to be reported
// as part of every metric
Tags map[string]string `yaml:"tags"`
}
Metrics contains the config items for metrics subsystem
type PProf ¶ added in v0.3.5
type PProf struct {
// Port is the port on which the PProf will bind to
Port int `yaml:"port"`
}
PProf contains the rpc config items
func (*PProf) NewInitializer ¶ added in v0.3.5
func (cfg *PProf) NewInitializer(logger bark.Logger) *PProfInitializerImpl
NewInitializer create a new instance of PProf Initializer
type PProfInitializerImpl ¶ added in v0.3.5
PProfInitializerImpl initialize the pprof based on config
func (*PProfInitializerImpl) Start ¶ added in v0.3.5
func (initializer *PProfInitializerImpl) Start() error
Start the pprof based on config
type RPC ¶ added in v0.3.2
type RPC struct {
// Port is the port on which the channel will bind to
Port int `yaml:"port"`
// BindOnLocalHost is true if localhost is the bind address
BindOnLocalHost bool `yaml:"bindOnLocalHost"`
// DisableLogging disables all logging for rpc
DisableLogging bool `yaml:"disableLogging"`
// LogLevel is the desired log level
LogLevel string `yaml:"logLevel"`
}
RPC contains the rpc config items
func (*RPC) NewFactory ¶ added in v0.3.2
func (cfg *RPC) NewFactory(sName string, logger bark.Logger) *RPCFactory
NewFactory builds a new RPCFactory conforming to the underlying configuration
type RPCFactory ¶ added in v0.3.2
type RPCFactory struct {
// contains filtered or unexported fields
}
RPCFactory is an implementation of service.RPCFactory interface
func (*RPCFactory) CreateDispatcher ¶ added in v0.3.2
func (d *RPCFactory) CreateDispatcher() *yarpc.Dispatcher
CreateDispatcher creates a dispatcher for inbound
func (*RPCFactory) CreateDispatcherForOutbound ¶ added in v0.3.2
func (d *RPCFactory) CreateDispatcherForOutbound( callerName, serviceName, hostName string) *yarpc.Dispatcher
CreateDispatcherForOutbound creates a dispatcher for outbound connection
type Replicator ¶ added in v0.3.7
type Replicator struct {
}
Replicator describes the configuration of replicator
type Ringpop ¶
type Ringpop struct {
// Name to be used in ringpop advertisement
Name string `yaml:"name" validate:"nonzero"`
// BootstrapMode is a enum that defines the ringpop bootstrap method
BootstrapMode BootstrapMode `yaml:"bootstrapMode"`
// BootstrapHosts is a list of seed hosts to be used for ringpop bootstrap
BootstrapHosts []string `yaml:"bootstrapHosts"`
// BootstrapFile is the file path to be used for ringpop bootstrap
BootstrapFile string `yaml:"bootstrapFile"`
// MaxJoinDuration is the max wait time to join the ring
MaxJoinDuration time.Duration `yaml:"maxJoinDuration"`
// Custom discovery provider, cannot be specified through yaml
DiscoveryProvider discovery.DiscoverProvider `yaml:"-"`
}
Ringpop contains the ringpop config items
func (*Ringpop) NewFactory ¶
func (rpConfig *Ringpop) NewFactory() (*RingpopFactory, error)
NewFactory builds a ringpop factory conforming to the underlying configuration
type RingpopFactory ¶
type RingpopFactory struct {
// contains filtered or unexported fields
}
RingpopFactory implements the RingpopFactory interface
func (*RingpopFactory) CreateRingpop ¶
func (factory *RingpopFactory) CreateRingpop(dispatcher *yarpc.Dispatcher) (*ringpop.Ringpop, error)
CreateRingpop is the implementation for RingpopFactory.CreateRingpop
type Service ¶
type Service struct {
// TChannel is the tchannel configuration
RPC RPC `yaml:"rpc"`
// Metrics is the metrics subsystem configuration
Metrics Metrics `yaml:"metrics"`
// PProf is the PProf configuration
PProf PProf `yaml:"pprof"`
}
Service contains the service specific config items
type Statsd ¶
type Statsd struct {
// The host and port of the statsd server
HostPort string `yaml:"hostPort" validate:"nonzero"`
// The prefix to use in reporting to statsd
Prefix string `yaml:"prefix" validate:"nonzero"`
// FlushInterval is the maximum interval for sending packets.
// If it is not specified, it defaults to 1 second.
FlushInterval time.Duration `yaml:"flushInterval"`
// FlushBytes specifies the maximum udp packet size you wish to send.
// If FlushBytes is unspecified, it defaults to 1432 bytes, which is
// considered safe for local traffic.
FlushBytes int `yaml:"flushBytes"`
}
Statsd contains the config items for statsd metrics reporter