1.etcd介绍
最后更新于:2022-04-02 04:51:48
ETCD是什么
ETCD是用于共享配置和服务发现的分布式,高可用一致性的key-value存储系统。ETCD是CoreOS公司发起的一个开源项目,授权协议为Apache。
提供配置共享和服务发现的系统比较多,其中最为大家熟知的是[Zookeeper](后文简称ZK),而ETCD可以算得上是后起之秀了。在项目实现,一致性协议易理解性,运维,安全等多个维度上,ETCD相比Zookeeper都占据优势。
etcd介绍
概念:高可用、强一致性的服务发现存储仓库,分布式key-value存储,可以用于配置共享和服务发现。
类似项目:zookeeper和consul
开发语言:Go
接口:提供restful的http接口,使用简单
简单:基于HTTP+JSON的API让你用curl命令就可以轻松使用。
安全:可选SSL客户认证机制。
快速:每个实例每秒支持一千次写操作。
实现算法:基于raft算法的强一致性、高可用的服务存储目录,充分实现了分布式。
ETCD vs ZK (zookeeper)
一致性协议: ETCD使用[Raft]协议, ZK使用ZAB(类PAXOS协议),前者容易理解,方便工程实现;
运维方面:ETCD方便运维,ZK难以运维;
项目活跃度:ETCD社区与开发活跃,ZK已经快死了;
API:ETCD提供HTTP+JSON, gRPC接口,跨平台跨语言,ZK需要使用其客户端;
访问安全方面:ETCD支持HTTPS访问,ZK在这方面缺失;
ETCD的使用场景
~~~
配置管理
服务注册与发现
选主
应用调度
分布式队列
分布式锁
~~~
ETCD工作原理
ETCD使用Raft协议来维护集群内各个节点状态的一致性。简单说,ETCD集群是一个分布式系统,由多个节点相互通信构成整体对外服务,每个节点都存储了完整的数据,并且通过Raft协议保证每个节点维护的数据是一致的。
ETCD搭建
下载etcd release版本:https://github.com/coreos/etcd/releases/
启动etcd ./etcd (windows ./bin/etcd)
使用etcdctl工具更改配置
查看ETCD状态
$ ./etcdctl member list
8e9e05c52164694d: name=default peerURLs=http://localhost:2380 clientURLs=http://localhost:2379 isLeader=true
创建、更新key
$ ./etcdctl set /test/ok 11
11
$ ./etcdctl set /test/ok 22
22
查询key
$ ./etcdctl get /test/ok
22
watch key 监听节点
窗口 1
$ ./etcdctl watch /test/ok
开启命令行新窗口 2:
$ ./etcdctl set /test/ok 33
33
窗口 1:
33
删除key
$ ./etcdctl rm /test/ok
PrevNode.Value: 33
';