简介
etcd是一个高可用的键值存储系统,主要用于共享配置和服务发现。etcd是由CoreOS开发并维护的,灵感来自于 ZooKeeper 和 Doozer,
它使用Go语言编写,并通过Raft一致性算法处理日志复制以保证强一致性。Raft是一个来自Stanford的新的一致性算法,适用于分布式系统的
日志复制,Raft通过选举的方式来实现一致性,在Raft中,任何一个节点都可能成为Leader。
Google的容器集群管理系统Kubernetes、开源PaaS平台Cloud Foundry和CoreOS的Fleet都广泛使用了etcd。
概念
Raft:etcd 所采用的保证分布式系统强一致性的算法。
Node:一个 Raft 状态机实例。
Member: 一个 etcd 实例。它管理着一个 Node,并且可以为客户端请求提供服务。
Cluster:由多个 Member 构成可以协同工作的 etcd 集群。
Peer:对同一个 etcd 集群中另外一个 Member 的称呼。
Client: 向 etcd 集群发送 HTTP 请求的客户端。
WAL:预写式日志,etcd 用于持久化存储的日志格式。
snapshot:etcd 防止 WAL 文件过多而设置的快照,存储 etcd 数据状态。
Proxy:etcd 的一种模式,为 etcd 集群提供反向代理服务。
Leader:Raft 算法中通过竞选而产生的处理所有数据提交的节点。
Follower:竞选失败的节点作为 Raft 中的从属节点,为算法提供强一致性保证。
Candidate:当 Follower 超过一定时间接收不到 Leader 的心跳时转变为 Candidate 开始竞选。
Term:某个节点成为 Leader 到下一次竞选时间,称为一个 Term。
Index:数据项编号。Raft 中通过 Term 和 Index 来定位数据。
API
put:
get:
del:
参考资料: