etcd [35.6k]

最后更新于:2022-04-02 02:56:33

[TOC] > [github](https://github.com/etcd-io/etcd) ## 概述 * 场景一:服务发现(Service Discovery) * 场景二:消息发布与订阅 * 场景三:负载均衡 * 场景四:分布式通知与协调 * 场景五:分布式锁 * 场景六:分布式队列 * 场景七:集群监控与 Leader 竞选 ### 功能一: etcd 实现共享配置 * 理论上,应用唯一需要的配置的 `ETCD_HOST` 环境变量,用于指定ETCD地址。通常使用 docker。 * 应用启动时从 etcd 获取一次配置信息,(获取该 key 的 value) * 同时系统在 etcd 节点上注册一个 Watcher,这样每次配置发生改变之后,应用都能通过 etcd 实时获取到最新配置。 ### 功能二: etcd 服务注册与发现 因为 etcd 有以下特性: * 强一致和高可用。 采用了 Raft 算法的 etcd 能勾为我们提供强一致性和高可用性的保证 * 提供了注册服务和监听服务状态的机制 etcd 可以对某个 key 设置 TTL,可以通过监听服务的心跳来检测服务状态。 * 提供了一种查找和连接服务的机制。当监听到添加了某个服务之后,可以去连接该服务。 有时候我们可以在每一台提供服务的机器上部署一个 proxy 模式的 etcd 节点。 每个服务只要访问自己的 etcd 节点即可。 * etcd 用来检测有来做代理的,监听某个路径,如果,某个etcd 下添加新的 server_ip 到路径下, etcd 就会监听到新的ip ![UTOOLS1575430934970.png](http://yanxuan.nosdn.127.net/8c05aac8dc9e65dde67f135b0f1c6cc8.png) ## 安装 ``` $ wget https://github.com/coreos/etcd/releases/download/v3.1.5/etcd-v3.1.5-linux-amd64.tar.gz $ tar xzvf etcd-v3.1.5-linux-amd64.tar.gz $ mv etcd-v3.1.5-linux-amd64 /opt/etcd ``` ## 单机启动 [详细配置](https://github.com/etcd-io/etcd/blob/master/etcd.conf.yml.sample) 配置 `etcd.conf` ``` name: 'idcpj' # 开启远程监听 listen-client-urls: http://0.0.0.0:2379 ``` 启动 ``` ./etcd --config-file=etcd.conf ``` ## 接口操作 etcd在键的组织上采用了层次化的空间结构(类似于文件系统中目录的概念),用户指定的键可以为单独的名字,如:`testkey`,此时实际上放在根目录`/`下面,也可以为指定目录结构,如`/cluster1/node2/testkey`,则将创建相应的目录结构
';