ETCD是什么?
ETCD是用于共享配置和服务发现的分布式、一致性的KV存储系统。
( A distributed, reliable key-value store for the most critical data of a distributed system.)
ETCD是CoreOS公司发起的一个开源项目,授权协议为Apache。
ETCD是一个受到ZooKeeper与doozer启发而催生的项目,除了拥有与之类似的功能外,更专注于以下四点:
1.简单:基于HTTP+JSON的API让你用curl就可以轻松使用。
2.安全:可选SSL客户认证机制。( https协议是由ssl+http协议构建的可进行加密传输、身份认证的网络协议,比http协议安全性高)
3.快速:每个实例每秒支持一千次写操作。
4.可信:使用Raft算法充分实现了分布式。
PS:分布式系统中的数据分为控制数据和应用数据。
ETCD的使用场景默认处理的数据都是控制数据,对于应用数据,只推荐数据量很小,但是更新访问频繁的情况。
Zookeeper,ETCD的比较
基本概念:
•服务注册—— 一个服务将其位置信息在中心注册节点注册的过程。该服务一般会将它的主机IP地址以及端口号进行注册,有时也会有服务访问的认证信息,使用协议,版本号,以及关于环境的一些细节信息。
•服务发现—— client端的应用实例查询中心注册节点以获知服务位置的过程。
•
ETCD vs ZK
•一致性与复杂度:ETCD使用[Raft]协议, ZK使用[ZAB](类PAXOS协议),前者容易理解,方便实现;
paxos 和raft的对比:
•运维方面:ETCD安装部署与运维简单,ZK安装部署复杂,依赖较多,维护相对复杂;
•项目活跃度:ETCD社区与开发活跃,ZK发展缓慢;
•API:ETCD提供HTTP+JSON,跨平台跨语言,ZK需要使用其客户端;
•访问安全方面:ETCD支持HTTPS访问,ZK在这方面缺失;
•编写语言:ETCD用go编写;ZK使用JAVA编写,偏向于重型应用,有大量依赖。
总而言之,ETCD可以算得上是后起之秀了。在一致性协议复杂度、运维、安全、项目活跃度等多个角度上,ETCD相比zookeeper都占据优势。
具体比较分析,详见:
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来定位数据。