22.1 简介
Etcd是CoreOS团队于2013年6月发起的开源项目,它的目标是构建一个高可用的分布式键值(key-value)数据库,基于Go语言实现。

接触过分布式系统的读者应该知道,分布式系统中,最基本最重要的问题就是各种信息的一致性,包括对服务的配置信息的管理、服务的发现、更新、同步等等。而要解决这些问题,往往需要基于一套能保证一致性的分布式数据库系统,比如经典的Apache ZooKeeper[1]项目,通过维护文件目录信息来实现数据的一致性。
Etcd就是专门为集群环境设计,可以很好地实现数据一致性,提供集群节点状态管理和服务自动发现等。
Etcd目前在github.com/coreos/etcd进行维护,已经发布3.0系列版本。
受到Apache ZooKeeper项目和doozer项目[2]的启发,Etcd在进行设计的时候重点考虑了下面四个要素:
·简单:支持REST风格的HTTP+JSON API;
·安全:支持HTTPS方式的访问;
·快速:支持并发每秒一千次的写操作;
·可靠:支持分布式结构,基于Raft[3]算法实现一致性。
通常情况下,用户使用Etcd可以在多个节点上启动多个实例,并将它们添加为一个集群。同一个集群中的Etcd实例将会自动保持彼此信息的一致性,这意味着分布在各个节点上的应用也将获取到一致的信息。
[1] Apache ZooKeeper是一套知名的分布式系统中进行同步和一致性管理的工具。
[2] doozer是一个一致性分布式数据库实现,主要面向少量数据,更多信息可以参考https://github.com/ha/doozerd。
[3] Raft是一套通过选举主节点来实现分布式系统一致性的算法,相比于大名鼎鼎的Paxos算法,它的算法过程相对容易理解,由Stanford大学的Diego Ongaro和John Ousterhout提出。更多细节可以参考https://raftconsensus.github.io。
