Etcd文档中文版¶
Etcd 是 CoreOS 基于 Raft 协议开发的分布式键值对存储 (key-value peer store) ,设计用来可靠而快速的保存关键数据并提供访问。
etcd 是一个分布式键值对存储,设计用来可靠而快速的保存关键数据并提供访问。
etcd 基于 Raft 协议,通过复制日志文件的方式来保证数据的强一致性。
客户端应用写一个 key 时,首先会存储到 etcd Leader 上,然后再通过 Raft 协议复制到 etcd 集群的所有成员中,以此维护各成员(节点)状态的一致性与实现可靠性。
虽然 etcd 是一个强一致性的系统,但也支持从非 Leader 节点读取数据以提高性能,而且写操作仍然需要 Leader 支持,所以当发生网络分区时,写操作仍可能失败。
etcd 具有一定的容错能力,假设集群中共有N个节点,即便集群中( n-1) /2个节点发生了故障,只要剩下的( n+1) /2 个节点达成一致, 也能操作成功,因此,它能够有效地应对网络分区和机器故障带来的数据丢失风险。
etcd 默认数据一更新就落盘持久化,数据持久化存储使用 WAL (write ahead log) ,预写式日志。
格式 WAL 记录了数据变化的全过程,在 etcd 中所有数据在提交之前都要先写入 WAL 中; etcd Snapshot (快照)文件则存储了某一时刻 etcd 的所有数据,默认设置为每 10 000 条记录做一次快照,经过快照后WAL 文件即可删除。
etcd 可用于: - 共享配置 - 服务发现 - 分布式锁或一致性保障 - 分布式数据队列 - 分布式通知和协调 - 集群选举