ETCD is a highly available key-value storage system that is used primarily for shared configuration and service discovery. ETCD is developed and maintained by CoreOS and is inspired by ZooKeeper and Doozer, which is written in the go language and handles log replication through the raft consistency algorithm to ensure strong consistency. Raft is a new consistency algorithm from Stanford, suitable for the log replication of distributed systems, raft to achieve consistency through an election, in raft, any node can become leader. Google's container cluster management system kubernetes, the open source PAAs platform Cloud Foundry and CoreOS fleet are widely used ETCD.
In distributed system, how to manage the state between nodes is always a difficult problem, ETCD is designed for service discovery and registration of cluster environment, it provides data TTL invalidation, data change monitoring, multi-value, directory monitoring, distributed lock atom operation and so on, which can conveniently track and manage the state of cluster nodes. The current version of ETCD is 0.4.5, although it has not been released in 1.0 (released this year), but it has been used in multiple production systems, which can be seen in a fiery degree. The characteristics of ETCD are as follows:
- Simple: Curl accessible user's API (Http+json)
- Security: Optional SSL client certificate authentication
- Fast: Single Instance 1000 writes per second
- Reliable: Use raft to ensure consistency
ETCD is the core component of CoreOS, responsible for service discovery and configuration sharing between nodes, and applications running in CoreOS can read or write data through ETCD. Although ETCD is designed for CoreOS, it can be run on multiple platforms, including OS X, Linux, BSD.
Jason Wilder A blog on the common services found open source projects zookeeper, Doozer, Etcd are summarized:
Zookeeper is a centralized service framework for user maintenance of configuration information, naming, distributed synchronization, and packet services, which is written in the Java language and is used to ensure node consistency through the Zab protocol. Because Zookeeper is a CP-type system, the system cannot register or find services when a network partition problem occurs.
Doozer is a consistent, distributed storage System, written in the Go language, with Paxos to ensure strong consistency, the Doozer project has now stopped updating and has nearly 160 branches. Like Zookeeper, Doozer is also a CP-type system that has the same problem when the network partitioning problem occurs.
ETCD is a highly available key-value storage system for shared configuration and service discovery, written in the go language, raft to ensure consistency, and Http+json-based API interfaces. ETCD is also a strong consistency system, but ETCD seems to support reading data from the non-leaders to improve usability, and the write operation still requires leader support, so the write operation may fail on the network partition.
There are many libraries and tools that support ETCD, such as command line client Tools Etcdctl, go client GO-ETCD, Java client jetcd. For the use and installation of ETCD readers can refer to the official documentation.
ETCD: Key-value storage System for service discovery
. Net Client for ETCD
The things between Etcd:kubernetes and cloud foundry
ETCD: Key-value storage System for service discovery