一、简介
本质上就是一个分布式kv存储,采用Raft算法保证分布式一致性,实现了分布式锁2和leader选举3的机制。
etcd可以用于配置管理或者是集群的服务注册与发现。
性能上和zookeeper、consule的比较,可以参考https://coreos.com/blog/performance-of-etcd.html
特性
-
GRPC通信
grpc带来的优势就是http2的多路复用,可以共享相同的TCP链路,大大节省内存占用。 -
TTL与Lease租约
TTL:一次请求或一个key可以设置存活时长,API3改为租约机制。
Lease:类似TTL,仍然用于设置存活时长,但不同的是它可以指定一组请求或key共用相同的租约,这样可以合并相同ttl的请求所占用的连接,从而减少必须维持的连接数。一旦到期,与之关联的所有key都将自动删除。 -
Watch观察者
①基于版本的监视。
②迭代通知. -
数据模型
保存所有历史数据,也可以压缩。 -
支持事务
二、安装
linux
-
yum安装:最简便,但版本取决于镜像源。
yum install etcd
-
安装包:https://github.com/coreos/etcd/releases
解压缩,将两个bin文件etcd、etcdctl添加到系统环境/usr/local/bin中。
mac
-
brew安装:可能需要先安装homebrew
brew install etcd
-
安装包同上。
部署
单机
- etcd启动:已添加到/usr/local/bin下,直接执行即可。
# 2379:默认客户端监听端口
# 2380:etcd集群成员间通讯端口
etcd
- etcdctl客户端:默认版本2,改用版本3:
export ETCDCTL_API=3
etcdctl version
本地集群
官方提供了一个工具goreman,提供了Profile文件方式配置集群,简化部署。为了模拟生产环境的部署,我们不使用这种方式,而是按照标准的多机集群方式配置部署。
跳转章节:etcd集群部署