1.3 Etcd的使用场景
和ZK类似,Etcd有很多使用场景,包括:
配置管理
服务注册于发现
选主
应用调度
分布式队列
分布式锁
1.4 Etcd读写性能
按照官网给出的数据, 在2CPU,1.8G内存,SSD磁盘这样的配置下,单节点的写性能可以达到16K QPS, 而先写后读也能达到12K QPS。这个性能还是相当可观的。
1.5 Etcd工作原理
Etcd使用Raft协议来维护集群内各个节点状态的一致性。简单说,Etcd集群是一个分布式系统,由多个节点相互通信构成整体对外服务,每个节点都存储了完整的数据,并且通过Raft协议保证每个节点维护的数据是一致的。
每个Etcd节点都维护了一个状态机,并且,任意时刻至多存在一个有效的主节点。主节点处理所有来自客户端写操作,通过Raft协议保证写操作对状态机的改动会可靠的同步到其他节点。
1.6 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来定位数据。