naming

package
v0.2.18 Latest Latest
Warning

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

Go to latest
Published: Mar 5, 2020 License: MIT Imports: 2 Imported by: 0

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 Builder

type Builder interface {
	Build(id string) Resolver
	Scheme() string
}

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"`
}

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 []Zone                 `json:"scheduler"`
}

InstancesInfo instance info.

func (*InstancesInfo) UseScheduler

func (insInf *InstancesInfo) UseScheduler(zone string) (inss []*Instance)

UseScheduler use scheduler info on instances. if instancesInfo contains scheduler info about zone, return releated zone's instances weighted by scheduler. if not,only zone instances be returned.

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 Zone

type Zone struct {
	Src string           `json:"src"`
	Dst map[string]int64 `json:"dst"`
}

Zone zone scheduler info.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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