kratos: github.com/bilibili/kratos/pkg/naming Index | Files | Directories

package naming

import "github.com/bilibili/kratos/pkg/naming"

Index

Package Files

naming.go opt.go

Constants

const (
    MetaWeight  = "weight"
    MetaCluster = "cluster"
    MetaZone    = "zone"
    MetaColor   = "color"
)

metadata common key

type BuildOpt Uses

type BuildOpt interface {
    Apply(*BuildOptions)
}

BuildOpt build option interface.

func Filter Uses

func Filter(schema string, clusters map[string]struct{}) BuildOpt

Filter filter option.

func ScheduleNode Uses

func ScheduleNode(clientZone string) BuildOpt

ScheduleNode ScheduleNode option.

func Subset Uses

func Subset(defaultSize int) BuildOpt

Subset Subset option.

type BuildOptions Uses

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 Uses

type Builder interface {
    Build(id string, options ...BuildOpt) Resolver
    Scheme() string
}

Builder resolver builder.

type Instance Uses

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 Uses

type InstancesInfo struct {
    Instances map[string][]*Instance `json:"instances"`
    LastTs    int64                  `json:"latest_timestamp"`
    Scheduler *Scheduler             `json:"scheduler"`
}

InstancesInfo instance info.

type Registry Uses

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 Uses

type Resolver interface {
    Fetch(context.Context) (*InstancesInfo, bool)
    Watch() <-chan struct{}
    Close() error
}

Resolver resolve naming service

type Scheduler Uses

type Scheduler struct {
    Clients map[string]*ZoneStrategy `json:"clients"`
}

Scheduler scheduler.

type Strategy Uses

type Strategy struct {
    Weight int64 `json:"weight"`
}

Strategy is zone scheduling strategy.

type ZoneStrategy Uses

type ZoneStrategy struct {
    Zones map[string]*Strategy `json:"zones"`
}

ZoneStrategy is the scheduling strategy of all zones

Directories

PathSynopsis
discovery
etcd
zookeeper

Package naming imports 10 packages (graph) and is imported by 8 packages. Updated 2019-11-06. Refresh now. Tools for package owners.