node.go 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. package node
  2. import (
  3. client "go.etcd.io/etcd/client/v3"
  4. "log"
  5. "time"
  6. )
  7. var (
  8. defaultEndpoints = []string{"http://127.0.0.1:2379"}
  9. defaultDialTimeout = 5
  10. )
  11. type Node struct {
  12. scheme string //
  13. ip string //节点ip
  14. Client *client.Client
  15. }
  16. // NewNode 快速创建节点
  17. func NewNode(endpoints ...string) *Node {
  18. if len(endpoints) == 0 {
  19. endpoints = defaultEndpoints
  20. }
  21. // etcd 配置
  22. defaultConfig := client.Config{
  23. Endpoints: endpoints,
  24. DialTimeout: time.Duration(defaultDialTimeout) * time.Second,
  25. }
  26. return NewNodeWithConfig(defaultConfig)
  27. }
  28. // NewNodeWithConfig 根据全量配置文件创建节点
  29. func NewNodeWithConfig(conf client.Config) *Node {
  30. // 创建 etcd 客户端
  31. etcdClient, err := client.New(conf)
  32. if err != nil {
  33. log.Fatal("Error: cannot connect to etcd: ", err)
  34. }
  35. return &Node{
  36. Client: etcdClient,
  37. scheme: defaultScheme,
  38. }
  39. }
  40. // SetScheme 设置节点注册、监听scheme
  41. // 禁止在node Register后 或 NewWatcher 后修改
  42. func (n *Node) SetScheme(scheme string) {
  43. n.scheme = scheme
  44. }