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:2379 etcdctl --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 value3 etcdctl --endpoints=$ENDPOINTS get web --prefix

删除数据

etcdctl --endpoints=$ENDPOINTS put key myvalue
etcdctl --endpoints=$ENDPOINTS del key etcdctl --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 --interactive compares:
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 1000 etcdctl --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 sample etcdctl --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 health 10.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 简介 + 使用

    etcd简介 etcd是一个高可用的分布式键值(key-value)数据库.etcd内部采用raft协议作为一致性算法,etcd基于Go语言实现. etcd是一个服务发现系统,具备以下的特点: 简单: ...

  2. 001.etcd简介及单节点使用

    一 etcd简介 1.1 概述 etcd 是 CoreOS 团队发起的开源项目,是一个管理配置信息和服务发现(service discovery)的项目,它的目标是构建一个高可用的分布式键值(key- ...

  3. 01 . etcd简介原理,应用场景及部署,简单使用

    etcd简介 Etcd是CoreOS团队于2013年6月发起的开源项目,他的目标是构建一个高可用的分布式键值(key-value)数据库,etcd内部采用raft协议作为一致性算法,etcd基于Go语 ...

  4. GNU Binutils简介及基本用法

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

  5. json简介及JsonCpp用法

    [时间:2017-04] [状态:Open] [关键词:数据交换格式,json,jsoncpp,c++,json解析,OpenSource] json简介 本文仅仅是添加我个人对json格式的理解,更 ...

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

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

  7. etcd简介及集群安装部署使用

    目录 1. 简介 2. Linux下载安装 3. 单机模式启动 4. 指定各集群成员的方式配置集群 5. 使用discovery service的方式配置集群 6. 集群模式下客户端命令行 7. et ...

  8. 【c++】标准模板库STL入门简介与常见用法

    一.STL简介 1.什么是STL STL(Standard Template Library)标准模板库,主要由容器.迭代器.算法.函数对象.内存分配器和适配器六大部分组成.STL已是标准C++的一部 ...

  9. postman简介及基本用法

    从分层测试角度来说,接口测试是相对来说性价比最高的,且作为功能测试进阶的必备技能,接口测试值得大家都去学习掌握. 工欲善其事,必先利其器,好的工具能更好的帮助工程师更高效率的完成工作. 常见的接口测试 ...

随机推荐

  1. hibernate的get方法和load方法区别

    读者需注意:Hibernate版本不同,运行机制不太一样,以下是hibernate3.x作为讲解 get方法: Hibernate会确认一下该id对应的数据是否存在,首先在session缓存中查找,然 ...

  2. Djaon 基于 Ajax 的 json 数据传输

    关键参数:contentType:"application/json" data:JSON.stringify({ json数据 }) 再views.py中,使用request.d ...

  3. Git 出现Branch master set up to track remote branch master问题 与忽略文件上传

    错误:在push 到远程仓库是一直提示下列错误,检查了使用status检查了也没有发现错误,最后排查出来是当前分支为((no branch))即右上那个id (┬_┬)..... 原因:出现这个问题的 ...

  4. PHP Web Server 实例

    通过WebService,我们可以调用部署在其它地方的程序,而不用关心被调用的程序是在什么平台用什么语言编写的.这里我们使用php调用. 在php4时代调用WebService大部分使用的nusoap ...

  5. 10-基于TMS320C6678+XC7K325T的6U CPCI Full Camera Link图像处理平台

    基于TMS320C6678+XC7K325T的6U CPCI Full Camera Link图像处理平台 1.板卡概述 板卡由我公司自主研发,基于6UCPCI架构,处理板包含一片TI DSPTMS3 ...

  6. 【Kickstart】2018 Round (Practice ~ C)

    Practice Round Problem A GBus count (9pt/15pt) (2019年1月14日,kickstart群每日一题) 题意:有一条笔直的大路,上面有城市编号从 1 开始 ...

  7. LA 6834 Shopping

    题目链接:https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_ ...

  8. element中的表格处理:循环出表格数据

    最近要做一个表格,但是为了方便维护,我们需要把表格数据循环出来,方便加减节点: <template> <el-table :data="tableData" st ...

  9. iText导出PDF(图片,水印,页眉,页脚)

    项目需要导出PDF,导出的内容包含图片和文本,而且图片的数量不确定,在网上百度发现大家都在用iText,在官网发现可以把html转换为PDF,但是需要收费,那就只能自己写了. 在开始之前先在网上百度了 ...

  10. java 构造方法中super()的作用?

    手贱百度了一下 :java里面自定义类的有参构造方法为什么不用super() 举个例子: class Father { Father(){print ('father');}; } class Son ...