Documentation
¶
Index ¶
- type ElectionLeader
- type EmbeddedEtcdLeader
- type EmbeddedEtcdMember
- func (m *EmbeddedEtcdMember) CampaignLeader(leaseTimeout int64) error
- func (m *EmbeddedEtcdMember) CheckLeader() (ElectionLeader, bool)
- func (m *EmbeddedEtcdMember) CheckPriority(ctx context.Context)
- func (m *EmbeddedEtcdMember) Client() *clientv3.Client
- func (m *EmbeddedEtcdMember) Close()
- func (m *EmbeddedEtcdMember) DeleteMemberDCLocationInfo(id uint64) error
- func (m *EmbeddedEtcdMember) DeleteMemberLeaderPriority(id uint64) error
- func (m *EmbeddedEtcdMember) EnableLeader()
- func (m *EmbeddedEtcdMember) Etcd() *embed.Etcd
- func (m *EmbeddedEtcdMember) GetDCLocationPath(id uint64) string
- func (m *EmbeddedEtcdMember) GetDCLocationPathPrefix() string
- func (m *EmbeddedEtcdMember) GetEtcdLeader() uint64
- func (m *EmbeddedEtcdMember) GetLastLeaderUpdatedTime() time.Time
- func (m *EmbeddedEtcdMember) GetLeader() *pdpb.Member
- func (m *EmbeddedEtcdMember) GetLeaderID() uint64
- func (m *EmbeddedEtcdMember) GetLeaderListenUrls() []string
- func (m *EmbeddedEtcdMember) GetLeaderPath() string
- func (m *EmbeddedEtcdMember) GetLeadership() *election.Leadership
- func (m *EmbeddedEtcdMember) GetMember() interface{}
- func (m *EmbeddedEtcdMember) GetMemberBinaryVersion(id uint64) (string, error)
- func (m *EmbeddedEtcdMember) GetMemberDeployPath(id uint64) (string, error)
- func (m *EmbeddedEtcdMember) GetMemberGitHash(id uint64) (string, error)
- func (m *EmbeddedEtcdMember) GetMemberLeaderPriority(id uint64) (int, error)
- func (m *EmbeddedEtcdMember) ID() uint64
- func (m *EmbeddedEtcdMember) InitMemberInfo(advertiseClientUrls, advertisePeerUrls, name string, rootPath string)
- func (m *EmbeddedEtcdMember) IsLeader() bool
- func (m *EmbeddedEtcdMember) IsLeaderElected() bool
- func (m *EmbeddedEtcdMember) IsSameLeader(leader *pdpb.Member) bool
- func (m *EmbeddedEtcdMember) KeepLeader(ctx context.Context)
- func (m *EmbeddedEtcdMember) Member() *pdpb.Member
- func (m *EmbeddedEtcdMember) MemberValue() string
- func (m *EmbeddedEtcdMember) MoveEtcdLeader(ctx context.Context, old, new uint64) error
- func (m *EmbeddedEtcdMember) Name() string
- func (m *EmbeddedEtcdMember) PreCheckLeader() error
- func (m *EmbeddedEtcdMember) ResetLeader()
- func (m *EmbeddedEtcdMember) ResignEtcdLeader(ctx context.Context, from string, nextEtcdLeader string) error
- func (m *EmbeddedEtcdMember) SetMemberBinaryVersion(id uint64, releaseVersion string) error
- func (m *EmbeddedEtcdMember) SetMemberDeployPath(id uint64) error
- func (m *EmbeddedEtcdMember) SetMemberGitHash(id uint64, gitHash string) error
- func (m *EmbeddedEtcdMember) SetMemberLeaderPriority(id uint64, priority int) error
- func (m *EmbeddedEtcdMember) WatchLeader(ctx context.Context, leader *pdpb.Member, revision int64)
- type EtcdLeader
- type Participant
- func (m *Participant) CampaignLeader(leaseTimeout int64) error
- func (m *Participant) CheckLeader() (ElectionLeader, bool)
- func (m *Participant) CheckPriority(ctx context.Context)
- func (m *Participant) Client() *clientv3.Client
- func (m *Participant) DeleteDCLocationInfo(id uint64) error
- func (m *Participant) DeleteLeaderPriority(id uint64) error
- func (m *Participant) EnableLeader()
- func (m *Participant) GetDCLocationPath(id uint64) string
- func (m *Participant) GetDCLocationPathPrefix() string
- func (m *Participant) GetLastLeaderUpdatedTime() time.Time
- func (m *Participant) GetLeader() *tsopb.Participant
- func (m *Participant) GetLeaderID() uint64
- func (m *Participant) GetLeaderListenUrls() []string
- func (m *Participant) GetLeaderPath() string
- func (m *Participant) GetLeaderPriority(id uint64) (int, error)
- func (m *Participant) GetLeadership() *election.Leadership
- func (m *Participant) GetMember() interface{}
- func (m *Participant) ID() uint64
- func (m *Participant) InitInfo(name string, id uint64, rootPath string, leaderName string, purpose string, ...)
- func (m *Participant) IsLeader() bool
- func (m *Participant) IsLeaderElected() bool
- func (m *Participant) IsSameLeader(leader *tsopb.Participant) bool
- func (m *Participant) KeepLeader(ctx context.Context)
- func (m *Participant) MemberValue() string
- func (m *Participant) Name() string
- func (m *Participant) PreCheckLeader() error
- func (m *Participant) ResetLeader()
- func (m *Participant) SetLeaderPriority(id uint64, priority int) error
- func (m *Participant) SetPreCampaignChecker(checker leadershipCheckFunc)
- func (m *Participant) WatchLeader(ctx context.Context, leader *tsopb.Participant, revision int64)
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type ElectionLeader ¶
type ElectionLeader interface { // GetListenUrls returns the listen urls GetListenUrls() []string // GetRevision the revision of the leader in etcd GetRevision() int64 // String declares fmt.Stringer String() string // Watch on itself, the leader in the election group Watch(context.Context) }
ElectionLeader defines the common interface of the leader, which is the pdpb.Member for in PD/API service or the tsopb.Participant in the microserives.
type EmbeddedEtcdLeader ¶
type EmbeddedEtcdLeader struct {
// contains filtered or unexported fields
}
EmbeddedEtcdLeader is the leader in the election group backed by the embedded etcd.
func (*EmbeddedEtcdLeader) GetListenUrls ¶
func (l *EmbeddedEtcdLeader) GetListenUrls() []string
GetListenUrls returns current leader's client urls
func (*EmbeddedEtcdLeader) GetRevision ¶
func (l *EmbeddedEtcdLeader) GetRevision() int64
GetRevision the revision of the leader in etcd
func (*EmbeddedEtcdLeader) String ¶
func (l *EmbeddedEtcdLeader) String() string
String declares fmt.Stringer
func (*EmbeddedEtcdLeader) Watch ¶
func (l *EmbeddedEtcdLeader) Watch(ctx context.Context)
Watch on the leader
type EmbeddedEtcdMember ¶
type EmbeddedEtcdMember struct {
// contains filtered or unexported fields
}
EmbeddedEtcdMember is used for the election related logic. It implements Member interface.
func (*EmbeddedEtcdMember) CampaignLeader ¶
func (m *EmbeddedEtcdMember) CampaignLeader(leaseTimeout int64) error
CampaignLeader is used to campaign a PD member's leadership and make it become a PD leader.
func (*EmbeddedEtcdMember) CheckLeader ¶
func (m *EmbeddedEtcdMember) CheckLeader() (ElectionLeader, bool)
CheckLeader checks if someone else is taking the leadership. If yes, returns the leader; otherwise returns a bool which indicates if it is needed to check later.
func (*EmbeddedEtcdMember) CheckPriority ¶
func (m *EmbeddedEtcdMember) CheckPriority(ctx context.Context)
CheckPriority checks whether the etcd leader should be moved according to the priority.
func (*EmbeddedEtcdMember) Client ¶
func (m *EmbeddedEtcdMember) Client() *clientv3.Client
Client returns the etcd client.
func (*EmbeddedEtcdMember) Close ¶
func (m *EmbeddedEtcdMember) Close()
Close gracefully shuts down all servers/listeners.
func (*EmbeddedEtcdMember) DeleteMemberDCLocationInfo ¶
func (m *EmbeddedEtcdMember) DeleteMemberDCLocationInfo(id uint64) error
DeleteMemberDCLocationInfo removes a member's dc-location info.
func (*EmbeddedEtcdMember) DeleteMemberLeaderPriority ¶
func (m *EmbeddedEtcdMember) DeleteMemberLeaderPriority(id uint64) error
DeleteMemberLeaderPriority removes a member's etcd leader priority config.
func (*EmbeddedEtcdMember) EnableLeader ¶
func (m *EmbeddedEtcdMember) EnableLeader()
EnableLeader sets the member itself to a PD leader.
func (*EmbeddedEtcdMember) Etcd ¶
func (m *EmbeddedEtcdMember) Etcd() *embed.Etcd
Etcd returns etcd related information.
func (*EmbeddedEtcdMember) GetDCLocationPath ¶
func (m *EmbeddedEtcdMember) GetDCLocationPath(id uint64) string
GetDCLocationPath returns the dc-location path of a member with the given member ID.
func (*EmbeddedEtcdMember) GetDCLocationPathPrefix ¶
func (m *EmbeddedEtcdMember) GetDCLocationPathPrefix() string
GetDCLocationPathPrefix returns the dc-location path prefix of the cluster.
func (*EmbeddedEtcdMember) GetEtcdLeader ¶
func (m *EmbeddedEtcdMember) GetEtcdLeader() uint64
GetEtcdLeader returns the etcd leader ID.
func (*EmbeddedEtcdMember) GetLastLeaderUpdatedTime ¶
func (m *EmbeddedEtcdMember) GetLastLeaderUpdatedTime() time.Time
GetLastLeaderUpdatedTime returns the last time when the leader is updated.
func (*EmbeddedEtcdMember) GetLeader ¶
func (m *EmbeddedEtcdMember) GetLeader() *pdpb.Member
GetLeader returns current PD leader of PD cluster.
func (*EmbeddedEtcdMember) GetLeaderID ¶
func (m *EmbeddedEtcdMember) GetLeaderID() uint64
GetLeaderID returns current PD leader's member ID.
func (*EmbeddedEtcdMember) GetLeaderListenUrls ¶
func (m *EmbeddedEtcdMember) GetLeaderListenUrls() []string
GetLeaderListenUrls returns current leader's listen urls
func (*EmbeddedEtcdMember) GetLeaderPath ¶
func (m *EmbeddedEtcdMember) GetLeaderPath() string
GetLeaderPath returns the path of the PD leader.
func (*EmbeddedEtcdMember) GetLeadership ¶
func (m *EmbeddedEtcdMember) GetLeadership() *election.Leadership
GetLeadership returns the leadership of the PD member.
func (*EmbeddedEtcdMember) GetMember ¶
func (m *EmbeddedEtcdMember) GetMember() interface{}
GetMember returns the member.
func (*EmbeddedEtcdMember) GetMemberBinaryVersion ¶
func (m *EmbeddedEtcdMember) GetMemberBinaryVersion(id uint64) (string, error)
GetMemberBinaryVersion loads a member's binary version.
func (*EmbeddedEtcdMember) GetMemberDeployPath ¶
func (m *EmbeddedEtcdMember) GetMemberDeployPath(id uint64) (string, error)
GetMemberDeployPath loads a member's binary deploy path.
func (*EmbeddedEtcdMember) GetMemberGitHash ¶
func (m *EmbeddedEtcdMember) GetMemberGitHash(id uint64) (string, error)
GetMemberGitHash loads a member's git hash.
func (*EmbeddedEtcdMember) GetMemberLeaderPriority ¶
func (m *EmbeddedEtcdMember) GetMemberLeaderPriority(id uint64) (int, error)
GetMemberLeaderPriority loads a member's priority to be elected as the etcd leader.
func (*EmbeddedEtcdMember) ID ¶
func (m *EmbeddedEtcdMember) ID() uint64
ID returns the unique etcd ID for this server in etcd cluster.
func (*EmbeddedEtcdMember) InitMemberInfo ¶
func (m *EmbeddedEtcdMember) InitMemberInfo(advertiseClientUrls, advertisePeerUrls, name string, rootPath string)
InitMemberInfo initializes the member info.
func (*EmbeddedEtcdMember) IsLeader ¶
func (m *EmbeddedEtcdMember) IsLeader() bool
IsLeader returns whether the server is PD leader or not by checking its leadership's lease and leader info.
func (*EmbeddedEtcdMember) IsLeaderElected ¶
func (m *EmbeddedEtcdMember) IsLeaderElected() bool
IsLeaderElected returns true if the leader exists; otherwise false
func (*EmbeddedEtcdMember) IsSameLeader ¶
func (m *EmbeddedEtcdMember) IsSameLeader(leader *pdpb.Member) bool
IsSameLeader checks whether a server is the leader itself.
func (*EmbeddedEtcdMember) KeepLeader ¶
func (m *EmbeddedEtcdMember) KeepLeader(ctx context.Context)
KeepLeader is used to keep the PD leader's leadership.
func (*EmbeddedEtcdMember) Member ¶
func (m *EmbeddedEtcdMember) Member() *pdpb.Member
Member returns the member.
func (*EmbeddedEtcdMember) MemberValue ¶
func (m *EmbeddedEtcdMember) MemberValue() string
MemberValue returns the member value.
func (*EmbeddedEtcdMember) MoveEtcdLeader ¶
func (m *EmbeddedEtcdMember) MoveEtcdLeader(ctx context.Context, old, new uint64) error
MoveEtcdLeader tries to transfer etcd leader.
func (*EmbeddedEtcdMember) Name ¶
func (m *EmbeddedEtcdMember) Name() string
Name returns the unique etcd Name for this server in etcd cluster.
func (*EmbeddedEtcdMember) PreCheckLeader ¶
func (m *EmbeddedEtcdMember) PreCheckLeader() error
PreCheckLeader does some pre-check before checking whether or not it's the leader.
func (*EmbeddedEtcdMember) ResetLeader ¶
func (m *EmbeddedEtcdMember) ResetLeader()
ResetLeader is used to reset the PD member's current leadership. Basically it will reset the leader lease and unset leader info.
func (*EmbeddedEtcdMember) ResignEtcdLeader ¶
func (m *EmbeddedEtcdMember) ResignEtcdLeader(ctx context.Context, from string, nextEtcdLeader string) error
ResignEtcdLeader resigns current PD's etcd leadership. If nextLeader is empty, all other pd-servers can campaign.
func (*EmbeddedEtcdMember) SetMemberBinaryVersion ¶
func (m *EmbeddedEtcdMember) SetMemberBinaryVersion(id uint64, releaseVersion string) error
SetMemberBinaryVersion saves a member's binary version.
func (*EmbeddedEtcdMember) SetMemberDeployPath ¶
func (m *EmbeddedEtcdMember) SetMemberDeployPath(id uint64) error
SetMemberDeployPath saves a member's binary deploy path.
func (*EmbeddedEtcdMember) SetMemberGitHash ¶
func (m *EmbeddedEtcdMember) SetMemberGitHash(id uint64, gitHash string) error
SetMemberGitHash saves a member's git hash.
func (*EmbeddedEtcdMember) SetMemberLeaderPriority ¶
func (m *EmbeddedEtcdMember) SetMemberLeaderPriority(id uint64, priority int) error
SetMemberLeaderPriority saves a member's priority to be elected as the etcd leader.
func (*EmbeddedEtcdMember) WatchLeader ¶
WatchLeader is used to watch the changes of the leader.
type EtcdLeader ¶
type EtcdLeader struct {
// contains filtered or unexported fields
}
EtcdLeader is the leader in the election group backed by the etcd, but it's decoupled from the embedded etcd.
func (*EtcdLeader) GetListenUrls ¶
func (l *EtcdLeader) GetListenUrls() []string
GetListenUrls returns current leader's client urls
func (*EtcdLeader) GetRevision ¶
func (l *EtcdLeader) GetRevision() int64
GetRevision the revision of the leader in etcd
type Participant ¶
type Participant struct {
// contains filtered or unexported fields
}
Participant is used for the election related logic. Compared to its counterpart EmbeddedEtcdMember, Participant relies on etcd for election, but it's decoupled from the embedded etcd. It implements Member interface.
func NewParticipant ¶
func NewParticipant(client *clientv3.Client) *Participant
NewParticipant create a new Participant.
func (*Participant) CampaignLeader ¶
func (m *Participant) CampaignLeader(leaseTimeout int64) error
CampaignLeader is used to campaign the leadership and make it become a leader.
func (*Participant) CheckLeader ¶
func (m *Participant) CheckLeader() (ElectionLeader, bool)
CheckLeader checks if someone else is taking the leadership. If yes, returns the leader; otherwise returns a bool which indicates if it is needed to check later.
func (*Participant) CheckPriority ¶
func (m *Participant) CheckPriority(ctx context.Context)
CheckPriority checks whether there is another participant has higher priority and resign it as the leader if so.
func (*Participant) Client ¶
func (m *Participant) Client() *clientv3.Client
Client returns the etcd client.
func (*Participant) DeleteDCLocationInfo ¶
func (m *Participant) DeleteDCLocationInfo(id uint64) error
DeleteDCLocationInfo removes the dc-location info.
func (*Participant) DeleteLeaderPriority ¶
func (m *Participant) DeleteLeaderPriority(id uint64) error
DeleteLeaderPriority removes the etcd leader priority config.
func (*Participant) EnableLeader ¶
func (m *Participant) EnableLeader()
EnableLeader declares the member itself to be the leader.
func (*Participant) GetDCLocationPath ¶
func (m *Participant) GetDCLocationPath(id uint64) string
GetDCLocationPath returns the dc-location path of a member with the given member ID.
func (*Participant) GetDCLocationPathPrefix ¶
func (m *Participant) GetDCLocationPathPrefix() string
GetDCLocationPathPrefix returns the dc-location path prefix of the cluster.
func (*Participant) GetLastLeaderUpdatedTime ¶
func (m *Participant) GetLastLeaderUpdatedTime() time.Time
GetLastLeaderUpdatedTime returns the last time when the leader is updated.
func (*Participant) GetLeader ¶
func (m *Participant) GetLeader() *tsopb.Participant
GetLeader returns current leader of the election group.
func (*Participant) GetLeaderID ¶
func (m *Participant) GetLeaderID() uint64
GetLeaderID returns current leader's member ID.
func (*Participant) GetLeaderListenUrls ¶
func (m *Participant) GetLeaderListenUrls() []string
GetLeaderListenUrls returns current leader's listen urls
func (*Participant) GetLeaderPath ¶
func (m *Participant) GetLeaderPath() string
GetLeaderPath returns the path of the leader.
func (*Participant) GetLeaderPriority ¶
func (m *Participant) GetLeaderPriority(id uint64) (int, error)
GetLeaderPriority loads the priority to be elected as the etcd leader.
func (*Participant) GetLeadership ¶
func (m *Participant) GetLeadership() *election.Leadership
GetLeadership returns the leadership of the member.
func (*Participant) GetMember ¶
func (m *Participant) GetMember() interface{}
GetMember returns the member.
func (*Participant) ID ¶
func (m *Participant) ID() uint64
ID returns the unique ID for this participant in the election group
func (*Participant) InitInfo ¶
func (m *Participant) InitInfo(name string, id uint64, rootPath string, leaderName string, purpose string, advertiseListenAddr string)
InitInfo initializes the member info. The leader key is path.Join(rootPath, leaderName)
func (*Participant) IsLeader ¶
func (m *Participant) IsLeader() bool
IsLeader returns whether the participant is the leader or not by checking its leadership's lease and leader info.
func (*Participant) IsLeaderElected ¶
func (m *Participant) IsLeaderElected() bool
IsLeaderElected returns true if the leader exists; otherwise false
func (*Participant) IsSameLeader ¶
func (m *Participant) IsSameLeader(leader *tsopb.Participant) bool
IsSameLeader checks whether a server is the leader itself.
func (*Participant) KeepLeader ¶
func (m *Participant) KeepLeader(ctx context.Context)
KeepLeader is used to keep the leader's leadership.
func (*Participant) MemberValue ¶
func (m *Participant) MemberValue() string
MemberValue returns the member value.
func (*Participant) Name ¶
func (m *Participant) Name() string
Name returns the unique name in the election group.
func (*Participant) PreCheckLeader ¶
func (m *Participant) PreCheckLeader() error
PreCheckLeader does some pre-check before checking whether or not it's the leader. It returns true if it passes the pre-check, false otherwise.
func (*Participant) ResetLeader ¶
func (m *Participant) ResetLeader()
ResetLeader is used to reset the member's current leadership. Basically it will reset the leader lease and unset leader info.
func (*Participant) SetLeaderPriority ¶
func (m *Participant) SetLeaderPriority(id uint64, priority int) error
SetLeaderPriority saves the priority to be elected as the etcd leader.
func (*Participant) SetPreCampaignChecker ¶
func (m *Participant) SetPreCampaignChecker(checker leadershipCheckFunc)
SetPreCampaignChecker sets the pre-campaign checker.
func (*Participant) WatchLeader ¶
func (m *Participant) WatchLeader(ctx context.Context, leader *tsopb.Participant, revision int64)
WatchLeader is used to watch the changes of the leader.