Golang之Zookeeper基础使用

467 阅读1分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 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)