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 简介及基本用法相关推荐

  1. etcd 笔记(01)— etcd 简介、特点、应用场景、常用术语、分布式 CAP 理论、分布式原理

    1. etcd 简介 etcd 官网定义: A highly-available key value store for shared configuration and service discov ...

  2. Spring AOP 简介以及简单用法

    Spring AOP 简介以及简单用法 如果你去面试java开发, 那么Spring的AOP和DI几乎是必问的问题. 那么AOP是什么呢? 一. AOP 所谓Aop就是 Aspect-Oriented ...

  3. React简介及基础用法

    1.React简介 1.1.React概述 React 是用于构建用户界面的 javascript 库,具有声明式.组件化等特点. 1.2.MVC和MVVM模式 MVC(Model-View-Cont ...

  4. kotlin转java_Kotlin热身篇: 简介与基本用法

    改不完的 Bug,写不完的矫情.公众号 杨正友 现在专注移动基础平台开发 ,涵盖音视频, APM和信息安全等各个知识领域:只做全网最 Geek 的公众号,欢迎您的关注!精彩内容不容错过~ 一. kot ...

  5. GNU Binutils简介及基本用法

    [时间:2017-06] [状态:Open] [关键词:GNU, binutils, as, ld, ar, 基础工具,linux,链接器,汇编器] 0 简介 GNU Binary Utilities ...

  6. ETCD 简介 + 使用

    来源:https://blog.csdn.net/bbwangj/article/details/82584988 随着CoreOS和Kubernetes等项目在开源社区日益火热,它们项目中都用到的e ...

  7. 【SqlServer】T-SQL的简介及基本用法

    一.T-SQL概述 SQL Server用于操作数据库的编程语言为Transaction-SQL,简称T-SQL.T-SQL与PL/SQL不同,并没有固定的程序结构. T-SQL包括以下4个部分: D ...

  8. DBLP数据集简介及简单用法

    前一段时间利用大名鼎鼎的DBLP数据集做关于论文合作关系推荐的实验,感觉确实是一个非常不错的数据集,可挖掘的东西很多很多,在此对DBLP及其用法做一个简单介绍. 简介 DBLP--Digital Bi ...

  9. c++中std::map简介及find用法

    目录 一.map简介 二.map的功能 1.快速插入Key -Value 记录. 2.快速删除记录 3.根据Key 修改value记录. 4.遍历所有记录. 三.使用map 四. map的构造函数 五 ...

最新文章

  1. 设计一个shell程序,在/userdata目录下建立50个目录,并对每个目录给754权限!
  2. zabbix-web前端配置
  3. vba动态二维数组_VBA实战技巧05: 动态调整数组以存储所需数据
  4. 【ArcGIS风暴】在ArcGIS中实现将一个圆16等分
  5. 算法五——字符串匹配(上)
  6. centos7全盘备份到本地_CentOS7下制作openssl1.1.1i RPM包并升级
  7. 以下不属于时序逻辑电路的有_静态时序分析圣经翻译计划——附录B:SDF
  8. 在PDA设备上安装和部署 SQL Server Compac 3.5(官方版)
  9. CSS侧边栏宽度不动(更改页面宽度时),内容区宽度自适应
  10. Java-使用字符串修改彩票程序
  11. C语言学习—运算符—“~”取反符号的理解
  12. 解决Carsim2016找不Liscens问题
  13. 生成大量随机数(c语言)
  14. java软件测试技术栈
  15. SSL证书不受信任怎么办?重点关注这4点
  16. 开源软件的版权与许可证
  17. 给语音信号加混响的常用方法(方法一)
  18. HBase的java代码开发(完整源码)
  19. Python练习题——coffee
  20. Xilinx ZYNQ简介

热门文章

  1. Cisco语音专业认证CCVP
  2. eclipse因jdk打不开解决
  3. 如何通过事务消息保障抢购业务的分布式一致性?
  4. 【Android UI】贝塞尔曲线 ② ( 二阶贝塞尔曲线公式 | 三阶贝塞尔曲线及公式 | 高阶贝塞尔曲线 )
  5. java骑车与走路_骑行/步行路线规划
  6. paddlepaddle常见问题解答
  7. k860i 4.2root成功,用root大师20130705
  8. 查看、修改数据库和表的编码格式
  9. excel打开密码忘记了_excel文件密码忘记了
  10. [Unity3D]-协程的介绍和使用