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