服务发现系统etcd介绍
http://www.cnblogs.com/xigang8068/p/5786027.html一、概述etcd是一个高可用的键值存储系统,主要用于共享配置和服务发现。etcd是由CoreOS开发并维护的,灵感来自于 ZooKeeper 和 Doozer,它使用Go语言编写,并通过Raft一致性算法处理日志复制以保证强一致性。Raft是一个新的一致性算法,适用于分布式系
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)
更多推荐
所有评论(0)