http://www.cnblogs.com/xigang8068/p/5786027.html


一、概述

etcd是一个高可用的键值存储系统,主要用于共享配置和服务发现。etcd是由CoreOS开发并维护的,灵感来自于 ZooKeeper 和 Doozer,它使用Go语言编写,并通过Raft一致性算法处理日志复制以保证强一致性。Raft是一个新的一致性算法,适用于分布式系统的日志复制,Raft通过选举的方式来实现一致性。Google的容器集群管理系统Kubernetes、开源PaaS平台Cloud Foundry和CoreOS的Fleet都广泛使用了etcd。在分布式系统中,如何管理节点间的状态一直是一个难题,etcd像是专门为集群环境的服务发现和注册而设计,它提供了数据TTL失效、数据改变监视、多值、目录监听、分布式锁原子操作等功能,可以方便的跟踪并管理集群节点的状态。

etcd的特性如下:

  • 简单: 支持curl方式的用户API(HTTP+JSON)
  • 安全: 可选的SSL客户端证书认证
  • 快速: 单实例每秒 1000 次写操作
  • 可靠: 使用Raft保证一致性

 

二、安装和使用

安装etcd

etcd的安装非常简单,可以直接下载编译后的可执行文件,下载地址:https://github.com/coreos/etcd/releases

curl -L https://github.com/coreos/etcd/releases/download/v3.0.6/etcd-v3.0.6-linux-amd64.tar.gz -o etcd-v3.0.6-linux-amd64.tar.gz
tar xzvf etcd-v3.0.6-linux-amd64.tar.gz && cd etcd-v3.0.6-linux-amd64
./etcd --version

 

etcd命令行接口使用

etcd支持http RESTful API,支持get查询,post,delete,put等操作。为了便于理解,可将它存储数据的框架看做一个文件系统,可以创建目录和“文件”,每个“文件”名就是一个key,每个“文件”的内容就是它的value,目录没有value只能包含子目录或者“文件”,可以通过RESTful API来获取这些key的值或者设置这些key的值。

 

*设置一个key的value

curl -s http://127.0.0.1:2379/v2/keys/message -X PUT -d value="Hello world" |jq .

 

*获取一个key的value

curl -s http://127.0.0.1:2379/v2/keys/message |jq .

 

*改变一个key的value

curl -s http://127.0.0.1:2379/v2/keys/message -X PUT -d value="Hello etcd" |jq .

 

*删除一个key节点

curl -s http://127.0.0.1:2379/v2/keys/message -X DELETE |jq .

 

*使用ttl(即设置一个key的值并给这个key加一个生命周期,当超过这个时间该值没有被访问则自动被删除)

curl -s http://127.0.0.1:2379/v2/keys/foo -X PUT -d value=bar -d ttl=5 |jq .

 

 

*watch一个值的变化

curl -s http://127.0.0.1:2379/v2/keys/foo?wait=true

该命令调用之后会阻塞进程,直到这个值发生变化才能返回,当改变一个key的值,或者删除等操作发生时,该等待就会返回结果。

 

*创建一个目录

curl -s http://127.0.0.1:2379/v2/keys/dir -XPUT -d dir=true |jq .

 

*列举一个目录

curl -s http://127.0.0.1:2379/v2/keys/dir

 

*递归列举一个目录

curl -s http://127.0.0.1:2379/v2/keys/dir?recursive=true

监控一个目录下的所有key的变化,包括子目录的。可以使用命令:

curl -s http://127.0.0.1:2379/v2/keys/dir?recursive=true&wait=true

 

*删除一个目录

curl -s http://127.0.0.1:2379/v2/keys/dir?dir=true -XDELETE

 

三、应用场景

场景一:服务发现(Service Discovery)


Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐