目录
一 简介
1.1 etcd是什么
etcd是CoreOS团队于2013年6月发起的开源项目,它的目标是构建一个高可用的分布式键值(key-value)数据库。
官网上的一段描述:
A distributed, reliable key-value store for the most critical data of a distributed system
etcd是一个分布式,键值对存储系统,用于分布式的关键数据的存储。
1.2. 特点
-
简单的接口,通过标准的HTTP API进行调用,也可以使用官方提供的 etcdctl 操作存储的数据
-
键值对存储
-
有监听机制,可以监听特定键的变化,并作出响应
-
1.3. 使用场景
- 服务发现(Service Discovery)
- 消息发布与订阅
- 负载均衡
- 分布式通知与协调
- 分布式锁
1.4 关键字
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开始Leader竞选。
Term:某个节点成为Leader到下一次竞选开始的时间周期,称为一个Term。
Index:数据项编号。Raft中通过Term和Index来定位数据