Documentation
¶
Index ¶
Constants ¶
View Source
const ( MetaWeight = "weight" MetaCluster = "cluster" MetaZone = "zone" MetaColor = "color" )
metadata common key
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type BuildOpt ¶
type BuildOpt interface {
Apply(*BuildOptions)
}
BuildOpt build option interface.
func Filter ¶
Filter filter option.
type BuildOptions ¶
type BuildOptions struct {
Filter func(map[string][]*Instance) map[string][]*Instance
Subset func([]*Instance, int) []*Instance
SubsetSize int
ClientZone string
Scheduler func(*InstancesInfo) []*Instance
}
BuildOptions build options.
type Builder ¶
Builder resolver builder.
type Instance ¶
type Instance struct {
// Region is region.
Region string `json:"region"`
// Zone is IDC.
Zone string `json:"zone"`
// Env prod/pre、uat/fat1
Env string `json:"env"`
// AppID is mapping servicetree appid.
AppID string `json:"appid"`
// Hostname is hostname from docker.
Hostname string `json:"hostname"`
// Addrs is the address of app instance
// format: scheme://host
Addrs []string `json:"addrs"`
// Version is publishing version.
Version string `json:"version"`
// LastTs is instance latest updated timestamp
LastTs int64 `json:"latest_timestamp"`
// Metadata is the information associated with Addr, which may be used
// to make load balancing decision.
Metadata map[string]string `json:"metadata"`
// Status instance status, eg: 1UP 2Waiting
Status int64 `json:"status"`
}
Instance represents a server the client connects to.
type InstancesInfo ¶
type InstancesInfo struct {
Instances map[string][]*Instance `json:"instances"`
LastTs int64 `json:"latest_timestamp"`
Scheduler *Scheduler `json:"scheduler"`
}
InstancesInfo instance info.
type Registry ¶
type Registry interface {
Register(ctx context.Context, ins *Instance) (cancel context.CancelFunc, err error)
Close() error
}
Registry Register an instance and renew automatically.
type Resolver ¶
type Resolver interface {
Fetch(context.Context) (*InstancesInfo, bool)
Watch() <-chan struct{}
Close() error
}
Resolver resolve naming service
type Scheduler ¶
type Scheduler struct {
Clients map[string]*ZoneStrategy `json:"clients"`
}
Scheduler scheduler.
Source Files
¶
- naming.go
- opt.go
Click to show internal directories.
Click to hide internal directories.