7. KV 数据
作为对于提供服务发现和集成健康检查的补充,Consul 提供了一个简单的键值存储(KV store)。它可以用于保存动态配置、辅助服务间协作、建立领导选举以及其他开发者想要实现的功能。
本节要求你至少运行一个 Consul agent。
简单用法
为了演示它的易用性,我们使用若干个键。有两种方法可以访问 Consul KV 存储:通过 HTTP API 或者 Consul KV CLI。下面展示了通过 Consul KV CLI 的使用方法。进阶集成方案参见 Consul KV HTTP API。
首先来看看 KV 存储的样子,来问问 Consul 这个键的值吧:
$ consul kv get redis/config/minconnsError! No key exists at: redis/config/minconns
可见,由于 KV 存储里什么都没有,这个查询也没有结果。我们可以插入一些键值对进来:
$ consul kv put redis/config/minconns 1Success! Data written to: redis/config/minconns$ consul kv put redis/config/maxconns 25Success! Data written to: redis/config/maxconns$ consul kv put -flags=42 redis/config/users/admin abcd1234Success! Data written to: redis/config/users/admin
现在我们有了一些键,来查查看:
$ consul kv get redis/config/minconns1
用 -detailed 标识可以获取 Consul 保存的详细元数据:
$ consul kv get -detailed redis/config/minconnsCreateIndex 207Flags 0Key redis/config/minconnsLockIndex 0ModifyIndex 207Session -Value 1
对于 redis/config/users/admin 这个键我们设置了 flag 为 42。所有键都支持一个 64 位整数的标志位,它不用于 Consul 内部处理,但可以被客户端读取并赋予新的涵义。
通过 -recurse 选项可以递归查询子键,结果按字典序排列:
$ consul kv get -recurseredis/config/maxconns:25redis/config/minconns:1redis/config/users/admin:abcd1234
用 delete 可以删除一个键值对:
$ consul kv delete redis/config/minconnsSuccess! Deleted key: redis/config/minconns
也可以用 -recurse 选项递归删除子键:
$ consul kv delete -recurse redisSuccess! Deleted keys with prefix: redis
要更新一个值,用 put 即可:
$ consul kv put foo bar$ consul kv get foobar$ consul kv put foo zip$ consul kv get foozip
Consul 可以原子性地进行检查并设置(Check-And-Set)操作,用 -cas 标识:
$ consul kv put -cas -modify-index=123 foo barSuccess! Data written to: foo$ consul kv put -cas -modify-index=123 foo barError! Did not write to foo: CAS failed
如上,第一个 CAS 更新成功了,因为 index 是 123。第二个则失败了,因为此时的 index 不再是 123 了。
进阶用法
参见 Consul KV HTTP API 或 Consul KV CLI 文档。
