cluster

package
v0.0.0-...-05d1ae8 Latest Latest
Warning

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

Go to latest
Published: Jan 18, 2026 License: Apache-2.0 Imports: 20 Imported by: 2

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Caller

type Caller interface {
	OnStartedLeading()
	OnStoppedLeading()
	OnReleaseMaster()
	OnNewLeader(leaderName string)
	MasterCall()
	SlaverCall(leaderName string)
}

type Cluster

type Cluster struct {
	Redis redisv1.RedisClient `autowired:"" conditional_on_property:"default.cluster.mode=redis"` // redis
	// contains filtered or unexported fields
}

func NewCluster

func NewCluster(config Config) (*Cluster, error)

func NewClusterWithArgs

func NewClusterWithArgs(config Config, logger logger.ILog) (*Cluster, error)

func (*Cluster) AddJobTracker

func (c *Cluster) AddJobTracker(v JobTracker) error

func (*Cluster) CallFunc

func (c *Cluster) CallFunc(f *FuncSpec) (interface{}, error)

func (*Cluster) Close

func (c *Cluster) Close()

func (*Cluster) GetAliveNodeCount

func (c *Cluster) GetAliveNodeCount() int

func (*Cluster) GetAliveNodeNames

func (c *Cluster) GetAliveNodeNames() (aliveNames []string)

func (*Cluster) GetAllNodeCount

func (c *Cluster) GetAllNodeCount() int

func (*Cluster) GetAllNodeNames

func (c *Cluster) GetAllNodeNames() (allNames []string)

func (*Cluster) GetLeaderName

func (c *Cluster) GetLeaderName() string

func (*Cluster) GetLeaderNode

func (c *Cluster) GetLeaderNode() *Node

func (*Cluster) GetLostNodeNames

func (c *Cluster) GetLostNodeNames() (lostNames []string)

func (*Cluster) GetMyAddress

func (c *Cluster) GetMyAddress() string

func (*Cluster) GetMyName

func (c *Cluster) GetMyName() string

func (*Cluster) GetMyNode

func (c *Cluster) GetMyNode() *Node

func (*Cluster) GetMyTerm

func (c *Cluster) GetMyTerm() int

func (*Cluster) GetNodeByName

func (c *Cluster) GetNodeByName(name string) (node *Node)

func (*Cluster) IsCandidate

func (c *Cluster) IsCandidate() bool

func (*Cluster) IsClose

func (c *Cluster) IsClose() bool

func (*Cluster) IsClosed

func (c *Cluster) IsClosed() bool

func (*Cluster) IsFighting

func (c *Cluster) IsFighting() bool

func (*Cluster) IsFollower

func (c *Cluster) IsFollower() bool

func (*Cluster) IsLeader

func (c *Cluster) IsLeader() bool

func (*Cluster) IsReady

func (c *Cluster) IsReady() bool

func (*Cluster) Name

func (c *Cluster) Name() string

func (*Cluster) RegisterFunc

func (c *Cluster) RegisterFunc(funcName string, fn func(data interface{}) (interface{}, error))

func (*Cluster) RemoveJobTracker

func (c *Cluster) RemoveJobTracker(v JobTracker)

func (*Cluster) Start

func (c *Cluster) Start() error

type Config

type Config struct {
	Mode    string `yaml:"mode" default:"cluster" json:"mode"`
	Timeout int    `yaml:"timeout" default:"10" json:"timeout"`
	Enable  string `yaml:"enable" default:"false" json:"enable"`
	Nodes   []*struct {
		Name  string
		Ip    string
		Port  int
		Local bool //true表示当前进程与当前node匹配。适用本机测试等情况。线上为了配置文件一致性尽量不要使用。
	} `yaml:"nodes" json:"nodes"`
	RedisDiscovery    RedisDiscovery    `yaml:"redisDiscovery" json:"redisDiscovery"`
	ReplicasDiscovery ReplicasDiscovery `yaml:"replicasDiscovery" json:"replicasDiscovery"`
}

type DefaultCaller

type DefaultCaller struct {
}

func (*DefaultCaller) MasterCall

func (dc *DefaultCaller) MasterCall()

func (*DefaultCaller) OnNewLeader

func (dc *DefaultCaller) OnNewLeader(leaderName string)

func (*DefaultCaller) OnReleaseMaster

func (dc *DefaultCaller) OnReleaseMaster()

func (*DefaultCaller) OnStartedLeading

func (dc *DefaultCaller) OnStartedLeading()

func (*DefaultCaller) OnStoppedLeading

func (dc *DefaultCaller) OnStoppedLeading()

func (*DefaultCaller) SlaverCall

func (dc *DefaultCaller) SlaverCall(leaderName string)

type DefaultJobTracker

type DefaultJobTracker struct {
	Interval int
	// contains filtered or unexported fields
}

func NewDefaultJobTracker

func NewDefaultJobTracker(interval int, caller ...Caller) *DefaultJobTracker

func (*DefaultJobTracker) Close

func (t *DefaultJobTracker) Close()

func (*DefaultJobTracker) Name

func (t *DefaultJobTracker) Name() string

func (*DefaultJobTracker) OnNewLeader

func (t *DefaultJobTracker) OnNewLeader(leaderName string)

func (*DefaultJobTracker) OnReleaseMaster

func (t *DefaultJobTracker) OnReleaseMaster()

func (*DefaultJobTracker) OnStartedLeading

func (t *DefaultJobTracker) OnStartedLeading()

func (*DefaultJobTracker) OnStoppedLeading

func (t *DefaultJobTracker) OnStoppedLeading()

type FuncSpec

type FuncSpec struct {
	// contains filtered or unexported fields
}

func NewAsyncFuncSpec

func NewAsyncFuncSpec(nodeName, funcName string, param interface{}, timeout time.Duration) *FuncSpec

NewAsyncFuncSpec 异步调用,timeout + 5是等待结果返回的超时时间

func NewFuncSpec

func NewFuncSpec(nodeName, funcName string, param interface{}, timeout time.Duration) *FuncSpec

NewFuncSpec 同步调用,timeout是同步超时时间

func (*FuncSpec) GetAttribute

func (fs *FuncSpec) GetAttribute(key string) interface{}

func (*FuncSpec) GetResult

func (fs *FuncSpec) GetResult() (interface{}, error)

func (*FuncSpec) GetTraceId

func (fs *FuncSpec) GetTraceId() string

func (*FuncSpec) IgnoreNotReady

func (fs *FuncSpec) IgnoreNotReady() *FuncSpec

func (*FuncSpec) SetAttribute

func (fs *FuncSpec) SetAttribute(key string, v interface{})

func (*FuncSpec) SetTraceId

func (fs *FuncSpec) SetTraceId(traceId string) *FuncSpec

type ICluster

type ICluster interface {
	Name() string                                                                 // 名称
	Start() error                                                                 // 启动
	Close()                                                                       // 关闭
	IsFighting() bool                                                             // 集群是否正在选举
	IsClose() bool                                                                // 集群是否关闭
	IsReady() bool                                                                // 集群是否就绪
	IsLeader() bool                                                               // 当前节点是否是领导人
	IsCandidate() bool                                                            // 当前节点是否是候选人
	IsFollower() bool                                                             // 当前节点是否是群众
	GetLeaderNode() *Node                                                         // 获取当前的主节点
	GetLeaderName() string                                                        // 获取leader名称
	GetMyNode() *Node                                                             // 获取当前本节点
	GetNodeByName(name string) *Node                                              // 根据名称获取节点
	GetMyAddress() string                                                         // 获取当前节点通信地址
	GetMyName() string                                                            // 获得当前本节点名称
	GetMyTerm() int                                                               // 获取当前本节点任期
	GetAllNodeNames() []string                                                    // 获取所有节点名称
	GetAllNodeCount() int                                                         // 获取所有节点的数量
	GetAliveNodeNames() []string                                                  // 获取所有活着的节点名称
	GetAliveNodeCount() int                                                       // 获取在线节点数量
	GetLostNodeNames() []string                                                   // 获取所有失联节点名称
	AddJobTracker(v JobTracker) error                                             // add scheduler
	RemoveJobTracker(v JobTracker)                                                // remove scheduler
	RegisterFunc(funcName string, fn func(data interface{}) (interface{}, error)) // registerFunc
	CallFunc(fc *FuncSpec) (interface{}, error)                                   // callFunc
}

type JobTracker

type JobTracker interface {
	Name() string
	// OnStartedLeading is called when a LeaderElector client starts leading
	OnStartedLeading()
	// OnStoppedLeading is called when a LeaderElector client stops leading
	OnStoppedLeading()
	// OnReleaseMaster is called when a client release master
	OnReleaseMaster()
	// OnNewLeader is called when the client observes a leader that is
	// not the previously observed leader. This includes the first observed
	// leader when the client starts.
	OnNewLeader(leaderName string)
}

type Message

type Message struct {
	NodeName       string `json:"nodeName"`
	Term           int    `json:"term"`
	LeaderNodeName string `json:"leaderNodeName,omitempty"`
	VoteNodeName   string `json:"voteNodeName,omitempty"`
	Success        bool   `json:"success"`
}

type Node

type Node struct {
	// contains filtered or unexported fields
}

func (*Node) SendMessage

func (n *Node) SendMessage(flag uint8, data interface{}) error

type RedisDiscovery

type RedisDiscovery struct {
	BeanName           string        `yaml:"beanName"`                         // 如果为空,则Ioc分配
	DataPath           string        `yaml:"dataPath"`                         // redis key
	ElectionInterval   time.Duration `yaml:"electionInterval" default:"15s"`   //多久进行一次选主/续约
	ElectionPeriod     time.Duration `yaml:"electionPeriod" default:"30s"`     //选主/续约后有效租期时间
	SyncLeaderInterval time.Duration `yaml:"syncLeaderInterval" default:"10s"` //多久同步一次leader
}

type ReplicasDiscovery

type ReplicasDiscovery struct {
	DomainPatten string `yaml:"domainPatten"`
	Port         int    `yaml:"port" default:"8081"`
	Replicas     int    `yaml:"replicas"`
}

Jump to

Keyboard shortcuts

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