持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第6天,点击查看活动详情
在涉及到分布式、高并发的时候,常常需要一个统一的管理中心,这个时候zookeeper就孕育而生了,与其同类型的产品还有ETCD、Eureka等。这类产品的主要作用是为系统提供一个稳定可靠的配置中心、注册中心,当我们需要及时获取一些数据时,可以通过上面的软件快速、稳定的获取。本文主要讲解以下几个方面:
-
安装
-
命令行操作
-
Golang 模块安装
-
基于Golang 模块的数据操作
官方文档:zookeeper.apache.org/doc/r3.8.0/…
zk-golang模块文档地址:pkg.go.dev/github.com/…
安装
测试阶段,推荐使用Docker安装Zookeeper
# ALLOW_ANONYMOUS_LOGIN=yes 允许未认证的用户连接
docker run --name zookeeper -p 2181:2181 -e ALLOW_ANONYMOUS_LOGIN=yes -d bitnami/zookeeper:latest
命令行使用
1、进入zookeeper容器
docker exec -it zookeeper /bin/bash
2、执行zkCli.sh命令,进入zookeeper的命令行操作界面
zkCli.sh
3、运行相关指令,以下列举几个比较简单的命令
# 获取根路径下的节点列表
ls /
# 创建节点
create /node
# 为节点设置值
set /node data
# 获取节点的值
get /node
# 删除节点
delete /node
golang 模块安装
go get github.com/samuel/go-zookeeper/zk
基于golang 模块的基础使用
创建节点,并设置值
conn, _, _ := zk.Connect([]string{"119.27.164.148:2181"}, time.Second*5)
defer conn.Close()
// 控制访问权限
acl := zk.WorldACL(zk.PermAll)
conn.Create("/node", []byte("Hello World"), 0, acl)
修改节点的值
conn, _, _ := zk.Connect([]string{"119.27.164.148:2181"}, time.Second*5)
defer conn.Close()
_, s, _ := conn.Get("/node")
conn.Set("/node", []byte("Hello World"), s.Version)
获取指定节点的值
conn, _, _ := zk.Connect([]string{"119.27.164.148:2181"}, time.Second*5)
defer conn.Close()
data, _, _ := conn.Get("/node")
fmt.Println(string(data))
删除节点
conn, _, _ := zk.Connect([]string{"119.27.164.148:2181"}, time.Second*5)
defer conn.Close()
_, s, _ := conn.Get("/node")
conn.Delete("/node", s.Version)