go语言操作etcd
etcd的安装、集群部署请参考:v3.5 docs | etcd
1 安装 client
1 | go get go.etcd.io/etcd/client/v3 |
2 连接集群
1 | cli, err := clientv3.New(clientv3.Config{ |
3 put 和 get 操作
3.1 代码
1 | // put |
- etcd v3 使用gRPC实现远程过程调用,为了确保不产生goroutine泄露(不被使用的goroutine一直占用资源),调用etcd v3 client API时,要传入context.WithTimeout参数,用于通知子goroutine结束,释放资源。
3.2 效果演示
1 | go run etcd.go |
4 watch 操作
4.1 代码
1 | // watch |
- 调用Client对象的watch方法,返回1个channel,etcd client对给定的key进行监听,将修改事件记录在channel中
- 修改事件对象包含:修改类型(更新、删除)、Key、Value 信息
4.2 效果演示
编译、运行程序,
1 | go run etcd.go |
更新操作,
1 | etcdctl --endpoints=http://localhost:2379 put greeting "Hello, etcd!" OK |
查看程序输出,
1 | go run etcd.go |
删除操作,
1 | etcdctl --endpoints=http://localhost:2379 del greeting 1 |
查看程序输出,
1 | go run etcd.go |