Go ETCD 安装 & 使用
etcd是一个开源的分布式键值对存储数据库,用于保存和管理分布式系统保持运行所需的关键信息。通常情况下,作为容器编排平台Kubernetes管理配置数据、状态数据和元数据管理使用。
软件安装
源码安装
./scripts/build.sh
./etcd --version
二进制包安装
- 下载安装包
wget https://github.com/etcd-io/etcd/releases/download/v3.5.7/etcd-v3.5.7-darwin-amd64.zip
- 解压安装包
unzip etcd-v3.5.7-darwin-arm64.zip
- 添加到执行目录 - 将etcd可执行文件移动到 /usr/local/bin
cd etcd-v3.5.7-darwin-amd64
ls -lh
# 如下图 关于etcd的命令工具有三个,全部移到 指定目录
mv etcd* /usr/local/bin
- 查看etcd版本
etcd --version
至此,etcd已经安装完毕,往后的学习中使用该版本。
简单使用
启动ETCD
etcd
基本使用
打开另一个shell终端,使用ectdctl命令进行简单的操作
# 设置数据
$ etcdctl put greeting "Hello, etcd"
# 获取数据
$ etcdctl get greeting
- 模糊查找
# 查找前缀为 greet 的所有信息
etcdctl get greet --prefix
- 删除键值
# 精确删除
etcdctl del key
# 模糊删除
etcdctl del key --prefix
- 键值监听 - 使用该功能可以获取指定key值的变更通知信息
# 在一个shell终端输入监听命令
etcdctl watch stock1
# 打开另一个shell终端 对 stock1 进行修改
etcdctl put stock1 20
etedctl put stock1 40
第一个shell终端的截图如下,自动获取KEY值为stock1的相关信息变更通知
- 设置过期
# 设置过期时间: 10秒
$ etcdctl lease grant 20
lease 694d861f9643ce20 granted with TTL(20s)
# 设置信息 并关联过期时间
$ etcdctl put hello world --lease=694d861f9643ce20
# 等待20秒 数据自动过期
$ etcdctl get hello
# 查看lease 是否过期
$ etcdctl lease keep-alive 694d861f9643ce20
lease 694d861f9643ce20 expired or revoked.
# 主动撤销过期时间
$ etcdctl lease revoke 694d861f9643ce20
- 分布式锁
$ etcdctl lock mutex1
mutex1/694d861f9643ce27
# 在另一个终端 使用相同的命令锁定
$ etcdctl lock mutex1
- 数据存储 - 快照数据保存到ETCD数据库
$ etcdctl snapshot save my.db
Etcd VS Redis
学习了Etcd的基本使用后,相信大多数人跟我有一样的疑问,从目前看来,Etcd该有的功能,Redis基本也能实现,甚至更加强大,那么它们之间有什么区别,以及对应的应用场景分别是什么?
Redis
内存数据库,用于数据库、缓存、消息中间件,通常被称为数据结构服务器,Redis key值存储结构可包含字符串、哈希表、列表、集合、有序集合,Redis 优势:
- 高性能
- 内存缓存
- 丰富的数据结构
- 开源 易用
ETCD
强一致性的分布式键值对存储数据库,提供了一种可靠的方式来存储需要有分布式系统或者集群访问的数据,etcd在网络分区期间优雅地处理主机选择,并将容忍包括主机在内的机器故障。可以看出ECTD应用于分布式系统的数据存储和数据访问。etcd优势:
- 服务发现
- 容错性高
- 安全 访问权限管理