ETCD 简介及基本用法
ETCD 项目地址
ETCD 官方文档
1. 简介
ETCD 是一个高可用的分布式键值数据库,可用于服务发现。ETCD 采用 raft 一致性算法,基于 Go 语言实现。
特点
简单:安装配置使用简单,提供 HTTP API
安全:支持 SSL 证书
可靠:采用 raft 算法,实现分布式系统数据的可用性和一致性
2. 用法
通过 etcdctl 可以使用 ETCD。假设使用 v3 版本,且集群设置如下:
export ETCDCTL_API=3
HOST_1=10.240.0.17
HOST_2=10.240.0.18
HOST_3=10.240.0.19
ENDPOINTS=$HOST_1:2379,$HOST_2:2379,$HOST_3:2379etcdctl --endpoints=$ENDPOINTS member list
版本设置
ETCD v2 和 v3 两个版本不兼容,且 v2 已经停止支持。如果一个系统上同时按照了两个版本,需要通过环境变量来切换:
export ETCDCTL_API=3
读写数据
put 命令写数据:
etcdctl --endpoints=$ENDPOINTS put foo "Hello World!"
get 命令读数据:
etcdctl --endpoints=$ENDPOINTS get foo
etcdctl --endpoints=$ENDPOINTS --write-out="json" get foo
通过 --write-out="json"
选项读数据时,会读包括元数据在内的所有数据,并以 JSON 格式输出。
通过 prefix 选项读数据
etcdctl --endpoints=$ENDPOINTS put web1 value1
etcdctl --endpoints=$ENDPOINTS put web2 value2
etcdctl --endpoints=$ENDPOINTS put web3 value3etcdctl --endpoints=$ENDPOINTS get web --prefix
删除数据
etcdctl --endpoints=$ENDPOINTS put key myvalue
etcdctl --endpoints=$ENDPOINTS del keyetcdctl --endpoints=$ENDPOINTS put k1 value1
etcdctl --endpoints=$ENDPOINTS put k2 value2
etcdctl --endpoints=$ENDPOINTS del k --prefix
事务性写入 txn
通过 txn
可以将多个请求放入一个事务:
etcdctl --endpoints=$ENDPOINTS put user1 bad
etcdctl --endpoints=$ENDPOINTS txn --interactivecompares:
value("user1") = "bad" success requests (get, put, delete):
del user1 failure requests (get, put, delete):
put user1 good
监控数据变化 watch
通过 watch
选项,可以在将来发生改变时获得通知:
etcdctl --endpoints=$ENDPOINTS watch stock1
etcdctl --endpoints=$ENDPOINTS put stock1 1000etcdctl --endpoints=$ENDPOINTS watch stock --prefix
etcdctl --endpoints=$ENDPOINTS put stock1 10
etcdctl --endpoints=$ENDPOINTS put stock2 20
安全写入 lease
lease
选项可以通过 TTL 写入数据:
etcdctl --endpoints=$ENDPOINTS lease grant 300
# lease 2be7547fbc6a5afa granted with TTL(300s)etcdctl --endpoints=$ENDPOINTS put sample value --lease=2be7547fbc6a5afa
etcdctl --endpoints=$ENDPOINTS get sampleetcdctl --endpoints=$ENDPOINTS lease keep-alive 2be7547fbc6a5afa
etcdctl --endpoints=$ENDPOINTS lease revoke 2be7547fbc6a5afa
# or after 300 seconds
etcdctl --endpoints=$ENDPOINTS get sample
分布式锁 lock
etcdctl --endpoints=$ENDPOINTS lock mutex1# another client with the same name blocks
etcdctl --endpoints=$ENDPOINTS lock mutex1
集群状态
为每台机器指定初始群集配置:
etcdctl --write-out=table --endpoints=$ENDPOINTS endpoint status+------------------+------------------+---------+---------+-----------+-----------+------------+
| ENDPOINT | ID | VERSION | DB SIZE | IS LEADER | RAFT TERM | RAFT INDEX |
+------------------+------------------+---------+---------+-----------+-----------+------------+
| 10.240.0.17:2379 | 4917a7ab173fabe7 | 3.0.0 | 45 kB | true | 4 | 16726 |
| 10.240.0.18:2379 | 59796ba9cd1bcd72 | 3.0.0 | 45 kB | false | 4 | 16726 |
| 10.240.0.19:2379 | 94df724b66343e6c | 3.0.0 | 45 kB | false | 4 | 16726 |
+------------------+------------------+---------+---------+-----------+-----------+------------+etcdctl --endpoints=$ENDPOINTS endpoint health10.240.0.17:2379 is healthy: successfully committed proposal: took = 3.345431ms
10.240.0.19:2379 is healthy: successfully committed proposal: took = 3.767967ms
10.240.0.18:2379 is healthy: successfully committed proposal: took = 4.025451ms
Member
添加,删除,更新成员。
ETCD 简介及基本用法相关推荐
- etcd 笔记(01)— etcd 简介、特点、应用场景、常用术语、分布式 CAP 理论、分布式原理
1. etcd 简介 etcd 官网定义: A highly-available key value store for shared configuration and service discov ...
- Spring AOP 简介以及简单用法
Spring AOP 简介以及简单用法 如果你去面试java开发, 那么Spring的AOP和DI几乎是必问的问题. 那么AOP是什么呢? 一. AOP 所谓Aop就是 Aspect-Oriented ...
- React简介及基础用法
1.React简介 1.1.React概述 React 是用于构建用户界面的 javascript 库,具有声明式.组件化等特点. 1.2.MVC和MVVM模式 MVC(Model-View-Cont ...
- kotlin转java_Kotlin热身篇: 简介与基本用法
改不完的 Bug,写不完的矫情.公众号 杨正友 现在专注移动基础平台开发 ,涵盖音视频, APM和信息安全等各个知识领域:只做全网最 Geek 的公众号,欢迎您的关注!精彩内容不容错过~ 一. kot ...
- GNU Binutils简介及基本用法
[时间:2017-06] [状态:Open] [关键词:GNU, binutils, as, ld, ar, 基础工具,linux,链接器,汇编器] 0 简介 GNU Binary Utilities ...
- ETCD 简介 + 使用
来源:https://blog.csdn.net/bbwangj/article/details/82584988 随着CoreOS和Kubernetes等项目在开源社区日益火热,它们项目中都用到的e ...
- 【SqlServer】T-SQL的简介及基本用法
一.T-SQL概述 SQL Server用于操作数据库的编程语言为Transaction-SQL,简称T-SQL.T-SQL与PL/SQL不同,并没有固定的程序结构. T-SQL包括以下4个部分: D ...
- DBLP数据集简介及简单用法
前一段时间利用大名鼎鼎的DBLP数据集做关于论文合作关系推荐的实验,感觉确实是一个非常不错的数据集,可挖掘的东西很多很多,在此对DBLP及其用法做一个简单介绍. 简介 DBLP--Digital Bi ...
- c++中std::map简介及find用法
目录 一.map简介 二.map的功能 1.快速插入Key -Value 记录. 2.快速删除记录 3.根据Key 修改value记录. 4.遍历所有记录. 三.使用map 四. map的构造函数 五 ...
最新文章
- 设计一个shell程序,在/userdata目录下建立50个目录,并对每个目录给754权限!
- zabbix-web前端配置
- vba动态二维数组_VBA实战技巧05: 动态调整数组以存储所需数据
- 【ArcGIS风暴】在ArcGIS中实现将一个圆16等分
- 算法五——字符串匹配(上)
- centos7全盘备份到本地_CentOS7下制作openssl1.1.1i RPM包并升级
- 以下不属于时序逻辑电路的有_静态时序分析圣经翻译计划——附录B:SDF
- 在PDA设备上安装和部署 SQL Server Compac 3.5(官方版)
- CSS侧边栏宽度不动(更改页面宽度时),内容区宽度自适应
- Java-使用字符串修改彩票程序
- C语言学习—运算符—“~”取反符号的理解
- 解决Carsim2016找不Liscens问题
- 生成大量随机数(c语言)
- java软件测试技术栈
- SSL证书不受信任怎么办?重点关注这4点
- 开源软件的版权与许可证
- 给语音信号加混响的常用方法(方法一)
- HBase的java代码开发(完整源码)
- Python练习题——coffee
- Xilinx ZYNQ简介
热门文章
- Cisco语音专业认证CCVP
- eclipse因jdk打不开解决
- 如何通过事务消息保障抢购业务的分布式一致性?
- 【Android UI】贝塞尔曲线 ② ( 二阶贝塞尔曲线公式 | 三阶贝塞尔曲线及公式 | 高阶贝塞尔曲线 )
- java骑车与走路_骑行/步行路线规划
- paddlepaddle常见问题解答
- k860i 4.2root成功,用root大师20130705
- 查看、修改数据库和表的编码格式
- excel打开密码忘记了_excel文件密码忘记了
- [Unity3D]-协程的介绍和使用