package node import ( client "go.etcd.io/etcd/client/v3" "log" "time" ) var ( defaultEndpoints = []string{"http://127.0.0.1:2379"} defaultDialTimeout = 5 ) type Node struct { scheme string // ip string //节点ip Client *client.Client } // NewNode 快速创建节点 func NewNode(endpoints ...string) *Node { if len(endpoints) == 0 { endpoints = defaultEndpoints } // etcd 配置 defaultConfig := client.Config{ Endpoints: endpoints, DialTimeout: time.Duration(defaultDialTimeout) * time.Second, } return NewNodeWithConfig(defaultConfig) } // NewNodeWithConfig 根据全量配置文件创建节点 func NewNodeWithConfig(conf client.Config) *Node { // 创建 etcd 客户端 etcdClient, err := client.New(conf) if err != nil { log.Fatal("Error: cannot connect to etcd: ", err) } return &Node{ Client: etcdClient, scheme: defaultScheme, } } // SetScheme 设置节点注册、监听scheme // 禁止在node Register后 或 NewWatcher 后修改 func (n *Node) SetScheme(scheme string) { n.scheme = scheme }