gitee.com/h79/goutils@v1.22.10/discovery/zookeeper/base.go (about)

     1  package zookeeper
     2  
     3  import (
     4  	"gitee.com/h79/goutils/discovery/config"
     5  	"gitee.com/h79/goutils/discovery/service"
     6  	"github.com/go-zookeeper/zk"
     7  	"time"
     8  )
     9  
    10  type Base struct {
    11  	conn *zk.Conn // zk的客户端连接
    12  }
    13  
    14  func NewClientZk(eps *config.EndPoints, serviceNode config.Node, timeout int) (*zk.Conn, error) {
    15  	// 连接服务器
    16  	conn, _, err := zk.Connect(eps.Servers.Array(), time.Duration(timeout)*time.Second)
    17  	if err != nil {
    18  		return nil, err
    19  	}
    20  	// 创建服务根节点
    21  	exists, _, err := conn.Exists(serviceNode.Root())
    22  	if err != nil {
    23  		conn.Close()
    24  		return nil, err
    25  	}
    26  	if exists {
    27  		return conn, nil
    28  	}
    29  	_, err = conn.Create(serviceNode.Root(), []byte(""), 0, zk.WorldACL(zk.PermAll))
    30  	if err != nil && err != zk.ErrNodeExists {
    31  		conn.Close()
    32  		return nil, err
    33  	}
    34  	return conn, nil
    35  }
    36  
    37  // Set interface
    38  func (base *Base) Set(data service.Data) error {
    39  
    40  	return nil
    41  }
    42  
    43  // Get interface
    44  func (base *Base) Get(key service.Key) ([]*service.Data, error) {
    45  
    46  	return nil, nil
    47  }