0.安装ETCD包
go get go.etcd.io/etcd/client/v3
1.初始化client
这里必须了解一下Client的结构
// Client provides and manages an etcd v3 client session.
type Client struct {
Cluster
KV
Lease
Watcher
Auth
Maintenance
conn *grpc.ClientConn
cfg Config
creds grpccredentials.TransportCredentials
resolver *resolver.EtcdManualResolver
mu *sync.RWMutex
ctx context.Context
cancel context.CancelFunc
// Username is a user name for authentication.
Username string
// Password is a password for authentication.
Password string
authTokenBundle credentials.Bundle
callOpts []grpc.CallOption
lgMu *sync.RWMutex
lg *zap.Logger
}
Cluster、KV、Lease…,你会发现它们其实就代表了整个客户端的几大核心功能板块,分别用于:
- Cluster:向集群里增加etcd服务端节点之类,属于管理员操作。
- KV:我们主要使用的功能,即操作K-V。
- Lease:租约相关操作,比如申请一个TTL=10秒的租约。
- Watcher:观察订阅,从而监听最新的数据变化。
- Auth:管理etcd的用户和权限,属于管理员操作。
- Maintenance:维护etcd,比如主动迁移etcd的leader节点,属于管理员操作
2.获取KV对象
实际上client.KV是一个interface,提供了关于k-v操作的所有方法:

2.1put
通过接口的返回,可以看到他是返加一个(*PutResponse, error),PutResponse的结构体如下
其中Header的结构体如下

调用PUT方法,可以看到返回的 结果

2.2Get方法

通过返回值,知道Get返回的是一个(*GetReponse,error),GetResponse的结构体如下
拿到这个GetReponse这个响应值后,要通过这个响应值里面的Kvs,来获取具体的值,
运行上面的方法,结果如下

与ETCD里面存的值是一样的

2.3Lease对象

Lease提供了几个功能:
- Grant:分配一个租约。
- Revoke:释放一个租约。
- TimeToLive:获取剩余TTL时间。
- Leases:列举所有etcd中的租约。
- KeepAlive:自动定时的续约某个租约。
- KeepAliveOnce:为某个租约续约一次。
- Close:貌似是关闭当前客户端建立的所有租约。
要想实现key自动过期,首先得创建一个租约,它有20秒的TTL:

grantResp中主要使用到了ID,也就是租约ID:
接下来,我们用这个租约来Put一个会自动过期的Key:
在MAIN方法中进行如下调用

2.4事务
etcd中事务是原子执行的,只支持if … then … else …这种表达,能实现一些有意思的场景。
首先,我们需要开启一个事务,这是通过KV对象的方法实现的:

2.5Watch操作

2.6参考
本文介绍了在Golang中使用ETCD的方法。首先讲解了ETCD包的安装,接着阐述了Client结构及各核心功能板块。详细说明了获取KV对象的操作,如put、Get方法,还介绍了Lease对象功能、事务、Watch操作等,帮助开发者掌握Golang与ETCD的交互。
739

被折叠的 条评论
为什么被折叠?



