ETCD-介绍

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的对比: 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来定位数据。

 

posted @ 2019-02-12 17:24  过山车  阅读(3864)  评论(0编辑  收藏  举报