自版本 3.5 起,etcd 项目已经被组织成多个 golang 模块,并托管在一个 单一的代码仓库 中。
etcd 项目包含以下模块:
-
go.etcd.io/etcd/api/v3 - 包含 API 定义(如协议文件和 proto 生成的库),定义了 etcd 客户端与服务器之间的通信协议。
-
go.etcd.io/etcd/pkg/v3 - 包含一些供 etcd 使用的工具包,但并不特定于 etcd 本身。只有那些可能在未来被移出并独立为一个仓库的包才会放在这里。请避免将具有大量自身依赖的代码添加到此处,因为这些代码会自动成为客户端库的依赖(而我们希望保持客户端库的轻量)。
-
go.etcd.io/etcd/client/v3 - 用于通过网络(grpc)与 etcd 通信的客户端库。推荐所有新的 etcd 使用场景。
-
go.etcd.io/raft/v3 - 分布式共识协议的实现。此模块不应包含任何特定于 etcd 的代码。它托管在一个独立的仓库中: https://github.com/etcd-io/raft。
-
g