Etcd源码分析之clientv3源码分析(1)
etcd是用于共享配置和服务发现的分布式,一致性的KV存储系统,使用Go语言实现。
目前在工作中接触到这个软件,顺便对其部门源码进行了一些分析,现整理总结博客中。
Etcd 源码主要包括etcd server端和etcd client端的源码,client端的源码又有v2版本和v3版本之分。因为目前工作中接触的主要是clientv3的源码,所以先整理更新clientv3的源码,后面再补上clientv2和etcd server的源码分析。
创建客户端样例程序
在分析etcd clientv3的源码之前,首先通过一个简单的样例,看看如何使用在自己的代码中创建一个clientv3的客户端:
func ExampleKV_put() {
cli, err := clientv3.New(clientv3.Config{
Endpoints: endpoints,
DialTimeout: dialTimeout,
})
if err != nil {
log.Fatal(err)
}
defer cli.Close()
ctx, cancel := context.WithTimeout(context.Background(), requestTimeout)
_, err = cli.Put(ctx, "sample_key", "sample_value")
cancel()
if err != nil {
log.Fatal(err)
}
}
这段代码来源于etcd-3.3.1/clientv3/example_kv_test.go
其实现的主要功能是创建一个clientv3的结构体cli
, 然后用该cli
,执行一个PUT操作,往etcd server中写入"sample_key"
, "sample_value"
这对KV值。
创建clientv3结构体源码
这里我们首先分析创建clientv3结构体的源码&#x