Documentation
¶
Index ¶
- type Caller
- type Cluster
- func (c *Cluster) AddJobTracker(v JobTracker) error
- func (c *Cluster) CallFunc(f *FuncSpec) (interface{}, error)
- func (c *Cluster) Close()
- func (c *Cluster) GetAliveNodeCount() int
- func (c *Cluster) GetAliveNodeNames() (aliveNames []string)
- func (c *Cluster) GetAllNodeCount() int
- func (c *Cluster) GetAllNodeNames() (allNames []string)
- func (c *Cluster) GetLeaderName() string
- func (c *Cluster) GetLeaderNode() *Node
- func (c *Cluster) GetLostNodeNames() (lostNames []string)
- func (c *Cluster) GetMyAddress() string
- func (c *Cluster) GetMyName() string
- func (c *Cluster) GetMyNode() *Node
- func (c *Cluster) GetMyTerm() int
- func (c *Cluster) GetNodeByName(name string) (node *Node)
- func (c *Cluster) IsCandidate() bool
- func (c *Cluster) IsClose() bool
- func (c *Cluster) IsClosed() bool
- func (c *Cluster) IsFighting() bool
- func (c *Cluster) IsFollower() bool
- func (c *Cluster) IsLeader() bool
- func (c *Cluster) IsReady() bool
- func (c *Cluster) Name() string
- func (c *Cluster) RegisterFunc(funcName string, fn func(data interface{}) (interface{}, error))
- func (c *Cluster) RemoveJobTracker(v JobTracker)
- func (c *Cluster) Start() error
- type Config
- type DefaultCaller
- type DefaultJobTracker
- type FuncSpec
- func (fs *FuncSpec) GetAttribute(key string) interface{}
- func (fs *FuncSpec) GetResult() (interface{}, error)
- func (fs *FuncSpec) GetTraceId() string
- func (fs *FuncSpec) IgnoreNotReady() *FuncSpec
- func (fs *FuncSpec) SetAttribute(key string, v interface{})
- func (fs *FuncSpec) SetTraceId(traceId string) *FuncSpec
- type ICluster
- type JobTracker
- type Message
- type Node
- type RedisDiscovery
- type ReplicasDiscovery
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
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 NewClusterWithArgs ¶
func (*Cluster) AddJobTracker ¶
func (c *Cluster) AddJobTracker(v JobTracker) error
func (*Cluster) GetAliveNodeCount ¶
func (*Cluster) GetAliveNodeNames ¶
func (*Cluster) GetAllNodeCount ¶
func (*Cluster) GetAllNodeNames ¶
func (*Cluster) GetLeaderName ¶
func (*Cluster) GetLeaderNode ¶
func (*Cluster) GetLostNodeNames ¶
func (*Cluster) GetMyAddress ¶
func (*Cluster) GetNodeByName ¶
func (*Cluster) IsCandidate ¶
func (*Cluster) IsFighting ¶
func (*Cluster) IsFollower ¶
func (*Cluster) RegisterFunc ¶
func (*Cluster) RemoveJobTracker ¶
func (c *Cluster) RemoveJobTracker(v JobTracker)
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 ¶
NewFuncSpec 同步调用,timeout是同步超时时间
func (*FuncSpec) GetAttribute ¶
func (*FuncSpec) GetTraceId ¶
func (*FuncSpec) IgnoreNotReady ¶
func (*FuncSpec) SetAttribute ¶
func (*FuncSpec) SetTraceId ¶
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 Node ¶
type Node struct {
// contains filtered or unexported fields
}
func (*Node) SendMessage ¶
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 ¶
Click to show internal directories.
Click to hide internal directories.