| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- package zk
- import (
- "fmt"
- "github.com/samuel/go-zookeeper/zk"
- "time"
- )
- type ZookeeperMgr struct {
- Conn *zk.Conn
- /*
- flags有4种取值:
- 0:永久,除非手动删除
- 1:短暂,session断开则改节点也被删除
- 2:会自动在节点后面添加序号
- 3:即,短暂且自动添加序号
- */
- flags int32 //初始化时默认0
- acl []zk.ACL //初始化时默认允许所有操作
- }
- type ZkCfg struct {
- Servers []string
- }
- func InitZookeeper(cfg ZkCfg) *ZookeeperMgr {
- conn, _, err := zk.Connect(cfg.Servers, time.Second*5)
- if err != nil {
- fmt.Println("InitZookeeper失败", err.Error())
- }
- return &ZookeeperMgr{Conn: conn, acl: zk.WorldACL(zk.PermAll)}
- }
- func (mgr *ZookeeperMgr) Create(path string, data []byte) (string, error) {
- return mgr.Conn.Create(path, data, mgr.flags, mgr.acl)
- }
- //删改与增不同在于其函数中的version参数,其中version是用于 CAS支持
- func (mgr *ZookeeperMgr) Delete(path string) error {
- _, stat, err := mgr.Conn.Get(path)
- if err != nil {
- return err
- }
- return mgr.Conn.Delete(path, stat.Version) //version是用于 CAS支持
- }
- func (mgr *ZookeeperMgr) Update(path string, data []byte) error {
- _, stat, err := mgr.Conn.Get(path)
- if err != nil {
- return err
- }
- _, err = mgr.Conn.Set(path, data, stat.Version) //version是用于 CAS支持
- return err
- }
- func (mgr *ZookeeperMgr) Get(path string) ([]byte, *zk.Stat, error) {
- return mgr.Conn.Get(path)
- }
|