转载请标明出处:https://blog.csdn.net/donkor_/article/details/140171610
文章目录
- 一、基本介绍
- 1.1 参考
- 1.2 什么是ETCD
- 1.3 ETCD的特点
- 1.4 ETCD的主要功能
- 1.5 ETCD的整体架构
- 1.6 什么时候用ETCD,什么时候用redis
- 二、安装
- 三、使用
- 3.1 etcdctl
- 3.2 常用命令
- 3.2.1 获取一个键值的值
- 3.2.2 设置一个键值对
- 3.2.3 删除一个键值对
- 3.2.4 获取一个目录下的所有键值对
- 3.2.5 创建一个目录
- 3.2.6 删除一个目录
- 3.2.7 监听一个键的变化
- 3.2.8 列出成员节点
- 3.2.9 添加一个节点到集群
- 3.2.10 从集群中删除一个节点
一、基本介绍
1.1 参考
官方文档:https://etcd.io/
1.2 什么是ETCD
Etcd
是CoreOS
基于Raft协议开发的分布式key-value存储
,可用于服务发现
、共享配置
以及一致性保障
(如数据库选主
、分布式锁
等)。
在分布式系统中,如何管理节点间的状态一直是一个难题,etcd像是专门为集群环境的服务发现
和注册
而涉及,它提供了数据TTL失效
、数据改变监视
、多值
、目录监听
、分布式锁原子操作
等功能,可以方便的跟踪并管理集群节点
的状态
。
1.3 ETCD的特点
简单
:安装配置简单,而且提供了HTTP API进行交互,使用也很简单安全
:支持SSL证书验证快速
: 根据官方提供的benchmark数据,单实例支持每秒2k+读操作可靠
: 采用raft算法,实现分布式系统数据的可用性和一致性
1.4 ETCD的主要功能
-
分布式键值存储
:etcd提供了一个可靠的键值存储系统,可以用于存储和检索数据。它将数据存储为键值对的形式,并支持原子性地读取和修改数据。 -
分布式锁
:etcd允许多个进程在分布式环境中协调对共享资源的访问。通过使用etcd提供的分布式锁功能,进程可以协调在同一时间只有一个进程可以访问某个资源。 -
分布式通知
:etcd支持订阅和发布事件的功能,可以在数据变化时通知相关的进程。这对于实现发布/订阅模型和实时通知非常有用。 -
分布式选举
:etcd可以用于分布式系统中的领导者选举。它提供了一种可靠的机制来选择一个节点作为领导者,并在领导者宕机时选择新的领导者。 -
分布式配置共享
:etcd可以用于共享配置信息。多个进程可以读取和修改在etcd中存储的配置信息,从而实现配置的统一管理和动态更新。
1.5 ETCD的整体架构
1.6 什么时候用ETCD,什么时候用redis
使用etcd和redis的选择取决于具体的需求和使用场景。下面是一些常见的考虑因素:
-
数据一致性
:etcd是一个高度一致的分布式键值存储系统,它的设计目标是提供强一致性的服务。而redis是一个内存数据库,它强调的是高性能和低延迟,对于一致性要求不高的场景更为适用。 -
分布式特性
:etcd是为构建分布式系统而设计的,它提供了分布式锁、选主和发布-订阅等特性,可以方便地实现分布式应用的协调与管理。而redis虽然也支持集群部署,但其分布式特性相对较弱,更适合用作缓存或临时存储。 -
可靠性和持久化
:etcd可以将数据持久化到磁盘,并支持数据的备份和恢复。而redis在默认情况下将数据存储在内存中,可以通过配置进行持久化,但相对于etcd来说,其可靠性较低。 -
生态系统和社区支持
:etcd作为Kubernetes的核心组件,得到了广泛的使用和社区支持,有丰富的文档和工具链。而redis作为一款老牌的开源数据库,同样具有庞大的用户群体和活跃的社区。
综上所述,如果你的应用需要强一致性
、分布式特性
和可靠性
,以及与Kubernetes
等生态系统的集成,那么etcd是一个更好的选择
。而如果你更注重性能和灵活性
,可以考虑使用redis
二、安装
安装教程:Docker部署ETCD 3.5.14(保姆级图文教程)
三、使用
3.1 etcdctl
etcdctl
是一个命令行客户端
,它能提供一些简洁的命令
,供用户直接跟etcd服务
打交道,而无需基于 HTTP API
方式。可以方便我们在对服务进行测试
或者手动修改数据库内容
。
etcd
项目二进制发行包中已经包含了etcdctl工具
,etcdctl
支持的命令大体上分为数据库操作
和非数据库操作
两类
3.2 常用命令
3.2.1 获取一个键值的值
etcdctl get <key>
3.2.2 设置一个键值对
etcdctl put <key> <value>
3.2.3 删除一个键值对
etcdctl del <key>
3.2.4 获取一个目录下的所有键值对
etcdctl get --prefix <directory>
3.2.5 创建一个目录
etcdctl mkdir <directory>
3.2.6 删除一个目录
etcdctl rmdir <directory>
3.2.7 监听一个键的变化
etcdctl watch <key>
3.2.8 列出成员节点
etcdctl member list
3.2.9 添加一个节点到集群
etcdctl member add <name> <peer-url>
3.2.10 从集群中删除一个节点
etcdctl member remove <member-id>
这些是一些常用的etcdctl命令
,还有其他更高级的命令可以用于集群管理
和配置
。你可以通过运行etcdctl --help
命令来获取更详细的帮助信息
,了解etcdctl支持的所有命令和选项
完成ヾ(◍°∇°◍)ノ゙