README ¶
naming
项目简介
服务发现、服务注册相关的SDK集合
现状
目前默认实现了B站开源的Discovery服务注册与发现SDK。
但在使用之前,请确认discovery服务部署完成,并将该discovery.go内fixConfig
方法的默认配置进行完善。
使用
可实现naming
内的Builder
&Resolver
&Registry
接口用于服务注册与发现,比如B站内部还实现了zk的。
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 ¶ added in v0.3.0
type BuildOpt interface {
Apply(*BuildOptions)
}
BuildOpt build option interface.
func ScheduleNode ¶ added in v0.3.0
ScheduleNode ScheduleNode option.
type BuildOptions ¶ added in v0.3.0
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 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 ¶ added in v0.3.0
type Scheduler struct {
Clients map[string]*ZoneStrategy `json:"clients"`
}
Scheduler scheduler.
type Strategy ¶ added in v0.3.0
type Strategy struct {
Weight int64 `json:"weight"`
}
Strategy is zone scheduling strategy.
type ZoneStrategy ¶ added in v0.3.0
ZoneStrategy is the scheduling strategy of all zones
Click to show internal directories.
Click to hide internal directories.