consul只key/value存储

除了提供服务发现和综合健康检查,Consul还提供了一个易于使用的键/值存储。这可以用来保存动态配置,协助服务协调,建立领导人选举,并启用其他开发人员可以想构建的任何其他内容。

有两种方法可以使用:通过HTTP API和通过CLI API。下面的例子显示使用CLI API

D:\soft\worksoft\consul_1.0.6_windows_amd64>consul kv get redis/config/minconns
Error! No key exists at: redis/config/minconns

你将看到没有结果返回,由于KV存储中没有该键返回了一个错误,接下来我们将插入或”put”一个值到KV存储中。

D:\soft\worksoft\consul_1.0.6_windows_amd64>consul kv put redis/config/minconns 1
Success! Data written to: redis/config/minconns

现在再次查询该键你将看到如下结果:

D:\soft\worksoft\consul_1.0.6_windows_amd64>consul kv get redis/config/minconns
1

在web UI上可以看到用CLI API创建的key

在web UI上创建一个“duan”的key:

再通过CLI API查询结果:

Consul保留额外的元数据在该字段,你可以使用-detailed标志检索详细信息:

root@server1:~# consul kv get -detailed redis/config/minconns
CreateIndex      1049
Flags            0
Key              redis/config/minconns
LockIndex        0
ModifyIndex      1049
Session          -
Value            1
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

设置值的时候,还可以使用-flags标志
- -flags=<uint>
Unsigned integer value to assign to this key-value pair. This value
is not read by Consul, so clients can use this value however makes sense
for their use case. The default value is 0 (no flags).

flags用来做客户端自定义标志,consul并不使用它,你可以在你自己的程序中随便定义

root@server1:~# consul kv put -flags=42 redis/config/users/admin abcd1234
Success! Data written to: redis/config/users/admin
  • 1
  • 2

设置flag值为42,想设置成什么就设置成什么.所有的键都支持设置一个64位的整型值。

使用-recurse选项可以列出KV存储中所有keys,返回的结果将按照字母排序。

root@server1:~# consul kv get -recurse
redis/config/minconns:1
redis/config/users/admin:abcd1234
  • 1
  • 2
  • 3

使用delete命令删除KV存储中指定的key。

root@server1:~# consul kv delete redis/config/minconns
Success! Deleted key: redis/config/minconns
  • 1
  • 2

还可以使用recurse选项递归选项删除含某个前缀的所有keys:

root@server1:~# consul kv delete -recurse redis
Success! Deleted keys with prefix: redis
  • 1
  • 2

如果要更新一个存在键的值,可以put一个新值在同样的路径上。

root@server1:~# consul kv put foo bar
Success! Data written to: foo
root@server1:~# consul kv get foo
bar
root@server1:~# consul kv put foo zip
Success! Data written to: foo
root@server1:~# consul kv get foo
zip
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

Consul可以使用Check_And_Set提供原子键更新操作。执行CAS操作时需指定-cas标志。至于什么是CAS,请自行百度吧
- -modify-index=<uint>
Unsigned integer representing the ModifyIndex of the key. This is used in combination with the -cas flag.

首先查询foo这个key的详细信息

root@server1:~# consul kv get -detailed foo
CreateIndex      1065
Flags            0
Key              foo
LockIndex        0
ModifyIndex      1067
Session          -
Value            zip
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

看到foo的索引编号ModifyIndex是1067。然后使用CAS操作的方式来修改它

root@server1:~# consul kv put -cas -modify-index=1067 foo bar
Success! Data written to: foo
  • 1
  • 2

修改成功,再查询

root@server1:~# consul kv get -detailed foo
CreateIndex      1065
Flags            0
Key              foo
LockIndex        0
ModifyIndex      1091
Session          -
Value            bar
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

ModifyIndex变成1091了。依然使用上面那个修改命令试试

root@server1:~# consul kv put -cas -modify-index=1067 foo bar
Error! Did not write to foo: CAS failed
  • 1
  • 2

失败了。原因是第一次CAS操作成功,因为ModifyIndex的值是1067,我们输入的也是-modify-index=1067。
第二次操作失败,ModifyIndex已经变成1091了,我们还用-modify-index=1067,Check_And_SetS中的Check这步就失败了,不会再Set了。

原文地址:https://www.cnblogs.com/duanxz/p/9660766.html

时间: 2025-01-17 22:49:57

consul只key/value存储的相关文章

consul 配置---K/V存储及ACL

consul 配置-K/V存储及ACL 标签(空格分隔): consul Consul简介 安装及运行 K/V存储 Java案例(基于Spring boot) ACL配置 小结 1.Consul简介 1.1 consul的作用 服务发现 Consul clients提供服务(例如API) 其他的client发现服务的提供者(通过DNS或http,应用可以轻松的发现他们所依赖的服务) 健康检查 Key-Value存储操作 动态配置 leader选举 feature flagging coordin

淘宝分布式 key/value 存储引擎Tair安装部署过程及Java客户端测试一例

目录 1. 简介 2. 安装步骤及问题小记 3. 部署配置 4. Java客户端测试 5. 参考资料 声明 1. 下面的安装部署基于Linux系统环境:centos 6(64位),其它Linux版本可能有所差异. 2. 网上有人说tair安装失败可能是因为gcc版本问题,高版本的gcc可能不支持某些特性导致安装失败,经过实验证明,该说法是错误的,tair安装失败有各种可能的原因但绝对与gcc版本无关,比如我的gcc开始版本为4.4.7,后来tair安装失败,我重新编译低版本的gcc(gcc4.1

Tair分布式key/value存储

[http://www.lvtao.net/database/tair.html](特别详细) tair 是淘宝自己开发的一个分布式 key/value 存储引擎. tair 分为持久化和非持久化两种使用方式. 非持久化的 tair 可以看成是一个分布式缓存. 持久化的 tair 将数据存放于磁盘中. 为了解决磁盘损坏导致数据丢失, tair 可以配置数据的备份数目, tair 自动将一份数据的不同备份放到不同的主机上, 当有主机发生异常, 无法正常提供服务的时候, 其于的备份会继续提供服务.

淘宝分布式 key/value 存储引擎Tair安装部署过程及Javaclient測试一例

文件夹 1. 简单介绍 2. 安装步骤及问题小记 3. 部署配置 4. Javaclient測试 5. 參考资料 声明 1. 以下的安装部署基于Linux系统环境:centos 6(64位),其他Linux版本号可能有所差异. 2. 网上有人说tair安装失败可能是由于gcc版本号问题,高版本号的gcc可能不支持某些特性导致安装失败.经过实验证明.该说法是错误的,tair安装失败有各种可能的原因但绝对与gcc版本号无关,比方我的gcc開始版本号为4.4.7,后来tair安装失败,我又一次编译低版

Consul KV

key/value作用 动态修改配置文件 支持服务协同 建立leader选举 提供服务发现 集成健康检查 除了提供服务发现和综合健康检查,Consul还提供了一个易于使用的键/值存储.这可以用来保存动态配置,协助服务协调,建立领导人选举,并启用其他开发人员可以想构建的任何其他内容. 有两种方法可以使用:通过HTTP API和通过CLI API. 一.使用CLI API操作key/value 1.consul kv get 查询 D:\soft\worksoft\consul_1.0.6_wind

分布式--锁

什么是锁? 在单进程的系统中,当存在多个线程可以同时改变某个变量(可变共享变量)时,就需要对变量或代码块做同步,使其在修改这种变量时能够线性执行消除并发修改变量. 而同步的本质是通过锁来实现的.为了实现多个线程在一个时刻同一个代码块只能有一个线程可执行,那么需要在某个地方做个标记,这个标记必须每个线程都能看到,当标记不存在时可以设置该标记,其余后续线程发现已经有标记了则等待拥有标记的线程结束同步代码块取消标记后再去尝试设置标记.这个标记可以理解为锁. 不同地方实现锁的方式也不一样,只要能满足所有

服务发现之美:Consul集群搭建

近几年随着Docker容器技术.微服务等架构的兴起,人们开始意识到服务发现的必要性.微服务架构简单来说,是一种以一些微服务来替代开发单个大而全应用的方法, 每一个小服务运行在自己的进程里,并以轻量级的机制来通信, 通常是 HTTP RESTful API.微服务强调小快灵, 任何一个相对独立的功能服务不再是一个模块, 而是一个独立的服务.那么,当我们需要访问这个服务时,如何确定它的地址呢?这时就需要服务发现了. Consul 是 HashiCorp 公司推出的开源工具,用于实现分布式系统的服务发

简单RPC框架-基于Consul的服务注册与发现

*:first-child { margin-top: 0 !important; } body>*:last-child { margin-bottom: 0 !important; } /* BLOCKS =============================================================================*/ p, blockquote, ul, ol, dl, table, pre { margin: 15px 0; } /* HEAD

consul系列一之基础

一.consul原理 consul的功能 ·服务发现 ·健康检查 ·多数据中心 ·key/value存储 consul的使用场景 ·docker实例的注册与配置共享 ·coreos实例的注册与配置共享 consul的优势 ·使用 Raft 算法来保证一致性, 比复杂的 Paxos 算法更直接. 相比较而言, zookeeper 采用的是 Paxos, 而 etcd 使用的则是 Raft ·支持多数据中心,内外网的服务采用不同的端口进行监听. 多数据中心集群可以避免单数据中心的单点故障,而其部署则