1. 程式人生 > >Consul K/V DATA

Consul K/V DATA

除了提供服務發現和綜合健康檢查,Consul還提供了一個易於使用的鍵/值儲存。這可以用來儲存動態配置,協助服務協調,建立領導人選舉,並啟用其他開發人員可以想構建的任何其他內容。

這個步驟假設您至少有一個Consul代理已經執行。

簡單用法

為了演示如何簡單的開始,我們將操作K/V儲存中的幾個鍵。有兩種方法可以使用:通過HTTP API和通過CLI API。
下面的例子顯示使用CLI API,因為它是最簡單的開始。對於更高階的整合,您可能想要使用HTTP API。

首先讓我們探索KV儲存。我們可以問Consul redis/config/minconns 鍵的值。

$ consul kv get
redis/config/minconns Error! No key exists at: redis/config/minconns

你將看到沒有結果返回,由於KV儲存中沒有該鍵返回了一個錯誤,接下來我們將插入或”put”一個值到KV儲存中。

$ consul kv put redis/config/minconns 1
Success! Data written to: redis/config/minconns

$ consul kv put redis/config/maxconns 25
Success! Data written to: redis/config/maxconns

$ consul kv put -flags
=42 redis/config/users/admin abcd1234 Success! Data written to: redis/config/users/admin

現在再次查詢該鍵你將看到如下結果:

$ consul kv get redis/config/minconns
1

Consul保留額外的元資料在該欄位,你可以使用-detailed標誌檢索詳細資訊:

$ consul kv get -detailed redis/config/minconns
CreateIndex      207
Flags            0
Key              redis/config/minconns
LockIndex        0
ModifyIndex 207 Session - Value 1

對於”redis/config/users/admin”鍵我們可以設定flag值為42.所有的鍵都支援設定一個64位的整型值。
這不是Consul內部使用的,但是它可以用來被客戶新增有意義的元資料到任何鍵值。

使用`recurse`選項可以列出KV儲存中所有keys,返回的結果將按照字母排序。

$ consul kv get -recurse
redis/config/maxconns:25
redis/config/minconns:1
redis/config/users/admin:abcd1234

使用delete命令刪除KV儲存中指定的key。

$ consul kv delete redis/config/minconns
Success! Deleted key: redis/config/minconns

還可以使用recurse選項遞迴選項刪除含某個字首的所有keys:

$ consul kv delete -recurse redis
Success! Deleted keys with prefix: redis

為了更新一個存在鍵的值,可以put一個新值在同樣的路徑上。

$ consul kv put foo bar

$ consul kv get foo
bar

$ consul kv put foo zip

$ consul kv get foo
zip

Consul可以使用Check_And_set提供原子鍵更新操作。執行CAS操作時需指定-cas標誌。

$ consul kv put -cas -modify-index=123 foo bar
Success! Data written to: foo

$ consul kv put -cas -modify-index=123 foo bar
Error! Did not write to foo: CAS failed

在這個例子中,第一個CAS更新成功,因為ModifyIndex的值是123。然後第二次操作失敗,因為ModifyIndex的值不再是123。

下一步

這些只是API支援的幾個小例子。完整的文件,請參閱HTTP APICLI API

接下來,我們將看看Consul支援的web UI。