discovery

package
v1.1.4 Latest Latest
Warning

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

Go to latest
Published: Dec 25, 2025 License: MIT Imports: 18 Imported by: 0

Documentation

Index

Constants

View Source
const (
	AddressWayPrivateIP uint = iota
	AddressWayPublicIP
	AddressWayHostname
)
View Source
const (
	NodeNameWayPrivateIP uint = iota
	NodeNameWayPublicIP
	NodeNameWayHostname
	NodeNameWayUUID
)
View Source
const (
	EventJoin = iota
	EventLeave
	EventFailed
	EventUpdate
	EventReap
)
View Source
const (
	TagRaftPort = "raft-port"
	TagGrpcPort = "grpc-port"
)

Variables

View Source
var (
	ErrSerfRequired        = errors.New("discovery-way must be 0 for dynamic membership (serf)")
	ErrKeyExpMustBeGreater = errors.New("redis-node-key-exp must be greater than event-loop-interval-sec")
	ErrRedisNotAvail       = errors.New("redis not available")
	ErrInvalidIP           = errors.New("invalid or missing ip address")
)

Functions

func GenMemberAddrs

func GenMemberAddrs(ms []Member) (addrs []string)

func GenNodesFile

func GenNodesFile(file string, ms []Member) error

Types

type DynamicRegistry added in v1.0.1

type DynamicRegistry struct {
	NodeKey   string
	NodesFile string
	// contains filtered or unexported fields
}

func NewDynamicRegistry added in v1.0.1

func NewDynamicRegistry() *DynamicRegistry

func (*DynamicRegistry) Claim added in v1.0.1

func (r *DynamicRegistry) Claim() (err error)

func (*DynamicRegistry) FinalizeClaim added in v1.0.1

func (r *DynamicRegistry) FinalizeClaim(address string, nodename string, lock *redsync.Mutex) (err error)

func (*DynamicRegistry) GenerateNodeAddress added in v1.1.0

func (r *DynamicRegistry) GenerateNodeAddress() (name string, err error)

func (*DynamicRegistry) GenerateNodeName added in v1.1.0

func (r *DynamicRegistry) GenerateNodeName() (name string, err error)

func (*DynamicRegistry) GetRegistry added in v1.1.0

func (r *DynamicRegistry) GetRegistry() (inventory []*Member, err error)

func (*DynamicRegistry) Init added in v1.0.1

func (r *DynamicRegistry) Init(cfg *config.Cluster, nodesFile string) (err error)

func (*DynamicRegistry) Lock added in v1.1.0

func (r *DynamicRegistry) Lock() (mutex *redsync.Mutex, err error)

func (*DynamicRegistry) RemoveNode added in v1.0.1

func (r *DynamicRegistry) RemoveNode() (err error)

func (*DynamicRegistry) SaveNode added in v1.0.1

func (r *DynamicRegistry) SaveNode() (err error)

func (*DynamicRegistry) StartEventLoop added in v1.0.1

func (r *DynamicRegistry) StartEventLoop()

func (*DynamicRegistry) Stop added in v1.0.1

func (r *DynamicRegistry) Stop() (err error)

func (*DynamicRegistry) Unlock added in v1.1.0

func (r *DynamicRegistry) Unlock(mutex *redsync.Mutex) (err error)

type Event

type Event struct {
	Member
	Type int
}

type Member

type Member struct {
	Name string            `json:"name"`
	Addr string            `json:"addr"`
	Port int               `json:"port"`
	Tags map[string]string `json:"tags,omitempty"`
}

func ReadMembers

func ReadMembers(file string) []Member

type Node

type Node interface {
	Setup() error
	Stop()
	BindMqttServer(server *mqtt.Server)
	LocalAddr() string
	LocalName() string
	Members() []Member
	EventChan() <-chan *Event
	SendToNode(nodeName string, msg []byte) error
	SendToOthers(msg []byte)
	Stat() map[string]int64
	Join(existing []string) (int, error)
	Leave() error
}

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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