Version: v3.0.2+incompatible Latest Latest

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

Go to latest
Published: Jun 24, 2019 License: Apache-2.0 Imports: 12 Imported by: 0




View Source
const (
	// Online means the node can receive request.
	Online = "online"

	// Pausing means the node is pausing.
	Pausing = "pausing"

	// Paused means the node is already paused.
	Paused = "paused"

	// Closing means the node is closing, and the state will be Offline when closed.
	Closing = "closing"

	// Offline means the node is offline, and will not provide service.
	Offline = "offline"


View Source
var (
	// DefaultRootPath is the root path of the keys stored in etcd, the `v1` is the tidb-binlog's version.
	DefaultRootPath = "/tidb-binlog/v1"

	// PumpNode is the name of pump.
	PumpNode = "pump"

	// DrainerNode is the name of drainer.
	DrainerNode = "drainer"

	// NodePrefix is the map (node => it's prefix in storage)
	NodePrefix = map[string]string{
		PumpNode:    "pumps",
		DrainerNode: "drainers",


func AnalyzeNodeID

func AnalyzeNodeID(key string) string

AnalyzeNodeID returns nodeID by analyze key path.


type EtcdRegistry

type EtcdRegistry struct {
	// contains filtered or unexported fields

EtcdRegistry wraps the reactions with etcd

func NewEtcdRegistry

func NewEtcdRegistry(cli *etcd.Client, reqTimeout time.Duration) *EtcdRegistry

NewEtcdRegistry returns an EtcdRegistry client

func (*EtcdRegistry) Close

func (r *EtcdRegistry) Close() error

Close closes the etcd client

func (*EtcdRegistry) Node

func (r *EtcdRegistry) Node(pctx context.Context, prefix, nodeID string) (status *Status, revision int64, err error)

Node returns the nodeStatus that matchs nodeID in the etcd

func (*EtcdRegistry) Nodes

func (r *EtcdRegistry) Nodes(pctx context.Context, prefix string) (status []*Status, revision int64, err error)

Nodes retruns all the nodeStatuses in the etcd

func (*EtcdRegistry) UpdateNode

func (r *EtcdRegistry) UpdateNode(pctx context.Context, prefix string, status *Status) error

UpdateNode update the node information.

func (*EtcdRegistry) WatchNode

func (r *EtcdRegistry) WatchNode(pctx context.Context, prefix string, revision int64) clientv3.WatchChan

WatchNode watchs node's event

type Label

type Label struct {
	Labels map[string]string `json:"labels"`

Label is key/value pairs that are attached to objects

type Status

type Status struct {
	// the id of node.
	NodeID string `json:"nodeId"`

	// the host of pump or node.
	Addr string `json:"host"`

	// the state of pump.
	State string `json:"state"`

	// the node is alive or not.
	IsAlive bool `json:"isAlive"`

	// the score of node, it is report by node, calculated by node's qps, disk usage and binlog's data size.
	// if Score is less than 0, means this node is useless. Now only used for pump.
	Score int64 `json:"score"`

	// the label of this node. Now only used for pump.
	// pump client will only send to a pump which label is matched.
	Label *Label `json:"label"`

	// for pump: max commit ts in pump
	// for drainer: drainer has consume all binlog less than or equal MaxCommitTS
	MaxCommitTS int64 `json:"maxCommitTS"`

	// UpdateTS is the last update ts of node's status.
	UpdateTS int64 `json:"updateTS"`

Status describes the status information of a tidb-binlog node in etcd.

func NodesStatusFromEtcdNode

func NodesStatusFromEtcdNode(root *etcd.Node) ([]*Status, error)

NodesStatusFromEtcdNode returns nodes' status under root node.

func (*Status) String

func (s *Status) String() string

Jump to

Keyboard shortcuts

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