Consul入門06 - 鍵/值對資料
轉載地址為:https://segmentfault.com/a/1190000005040921
為了提供服務發現以及健康檢測,Consul提供了非常容易使用的鍵/值對儲存。它能被用於儲存動態配置資訊,幫助服務協作,建構leader選舉機制,以及開發者可以想到的建構任何其它的東西。
本篇假設你至少有一個Consul代理在執行。
簡單使用
為了展示儲存鍵/值對是非常簡單的,我們將在鍵/值儲存裡維護一些鍵。
我們在執行代理步驟中展示了查詢本地代理,我們先驗證鍵/值儲存中沒有任何鍵存在:
$ curl -v http://localhost:8500/v1/kv/?recurse
* About to connect() to localhost port 8500 (#0)
* Trying 127.0.0.1... connected
> GET /v1/kv/?recurse HTTP/1.1
> User-Agent: curl/7.22.0 (x86_64-pc-linux-gnu) libcurl/7.22.0 OpenSSL/1.0.1 zlib/1.2.3.4 libidn/1.23 librtmp/2.3
> Host: localhost:8500
> Accept: */*
>
< HTTP/1.1 404 Not Found
< X-Consul-Index: 1
< Date: Fri, 11 Apr 2014 02:10:28 GMT
< Content-Length: 0
< Content-Type: text/plain; charset=utf-8
<
* Connection #0 to host localhost left intact
* Closing connection #0
因為沒有任何鍵,所以我們得到了404的響應,我們可以用 PUT 來儲存一些鍵:
$ curl -X PUT -d 'test' http://localhost:8500/v1/kv/web/key1
true
$ curl -X PUT -d 'test' http://localhost:8500/v1/kv/web/key2?flags=42
true
$ curl -X PUT -d 'test' http://localhost:8500/v1/kv/web/sub/key3
true
$ curl http://localhost:8500/v1/kv/?recurse
[{"CreateIndex":97,"ModifyIndex":97,"Key":"web/key1","Flags":0,"Value":"dGVzdA=="},
{"CreateIndex":98,"ModifyIndex":98,"Key":"web/key2","Flags":42,"Value":"dGVzdA=="},
{"CreateIndex":99,"ModifyIndex":99,"Key":"web/sub/key3","Flags":0,"Value":"dGVzdA=="}]
這裡我們建立了3個鍵,每個都關聯了值"test"。注意 值 欄位的返回是基於base64的編碼,該編碼允許非UTF8字符集。對於鍵"web/key2",我們為其設定了一個42的 標記。所有的鍵都支援設定一個64位長的整形標記值。這個標記並不是由Consul內部使用的,它可以被用於儲存任意鍵值對的元資料資訊。
在設定值之後,我們使用 ?recurse 引數發出了 GET 請求來接收多個鍵的資訊。
你也可以非常容易地獲取單個鍵的資訊:
$ curl http://localhost:8500/v1/kv/web/key1
[{"CreateIndex":97,"ModifyIndex":97,"Key":"web/key1","Flags":0,"Value":"dGVzdA=="}]
刪除一個鍵也同樣非常簡單,使用 DELETE 來刪除一個鍵。我們可以指定完整路徑來刪除單獨一個鍵,或者使用"?recurse"遞迴刪除所有的鍵:
$ curl -X DELETE http://localhost:8500/v1/kv/web/sub?recurse
$ curl http://localhost:8500/v1/kv/web?recurse
[{"CreateIndex":97,"ModifyIndex":97,"Key":"web/key1","Flags":0,"Value":"dGVzdA=="},
{"CreateIndex":98,"ModifyIndex":98,"Key":"web/key2","Flags":42,"Value":"dGVzdA=="}]
使用一個 PUT 請求相同的URI並且提供一個不同的訊息體就可以修改指定的鍵,Consul提供了一個 檢測並設定 的操作,對應的操作是原子的。通過在GET請求中提供 ?cas= 引數以及指定最新的 ModifyIndex 值我們就可以得到原子CAS操作。例如,假設我們想要更新"web/key1":
$ curl -X PUT -d 'newval' http://localhost:8500/v1/kv/web/key1?cas=97
true
$ curl -X PUT -d 'newval' http://localhost:8500/v1/kv/web/key1?cas=97
false
這裡,第一個CAS更新成功了因為最新的 ModifyIndex 是97,而第二個操作失敗了因為最新的 ModifyIndex 不再是97了。
我們可以使用 ModifyIndex 來等待指定鍵值的改變,例如,假設我們想要等待Key2的修改:
$ curl "http://localhost:8500/v1/kv/web/key2?index=101&wait=5s"
[{"CreateIndex":98,"ModifyIndex":101,"Key":"web/key2","Flags":42,"Value":"dGVzdA=="}]
通過提供"?index="引數,我們請求等待直到鍵包含了一個大於101的 ModifyIndex 的值。無論如何由於"?wait=5"引數限制了查詢最多等待5秒,之後會返回當前沒有修改的值。該操作可以高效地等待鍵的更新。另外相同的方法可以用於等待一個鍵的集合,直到鍵集合中任何一個鍵發生的更新。
相關推薦
Consul入門06 - 鍵/值對資料
轉載地址為:https://segmentfault.com/a/1190000005040921 為了提供服務發現以及健康檢測,Consul提供了非常容易使用的鍵/值對儲存。它能被用於儲存動態配置資訊,幫助服務協作,建構leader選舉機制,以及開發者可以想到的建
節點鍵值對資料轉換為json、xml資料
自動化框架的難點和重點不是自動化技術本身,而是如何對資料進行有效的管理。資料驅動的形式一般是Excel或者DB,但是二者儲存資料的形式均為key-value型,因此,如何把單一的鍵值對轉換為複雜的json或xml,就成了資料處理的重點。規則約定:(以值形式的不同來區分節點的型
【自然語言處理入門】01:利用jieba對資料集進行分詞,並統計詞頻
一、基本要求 使用jieba對垃圾簡訊資料集進行分詞,然後統計其中的單詞出現的個數,找到出現頻次最高的top100個詞。 二、完整程式碼 # -*- coding: UTF-8 -*- fr
通過遍歷JSON鍵值對獲取包含某字串的鍵的值_電腦計算機程式設計入門教程自學
有時JSON物件中的鍵名是變化的, 但每次變化都會有規律, 包含有特定的字串字首, 所以如果想要獲取它的值,可 以通過遍歷鍵值對的方式, 判斷如此此鍵名包含有特定字串則取出此鍵的值. 原始碼如下: import console; var str = /
js序列化封裝成一個對象,以鍵值對的方式
tle {} ora serialize strong push com alt tro js序列化封裝成一個對象,以鍵值對的方式 類似:Object {ni: "1", wo: "2", ta: "3", huge: "4", jindong: "5"…} jque
Spark學習筆記3:鍵值對操作
對象 常用 ava java 參數 通過 頁面 ascend 處理過程 鍵值對RDD通常用來進行聚合計算,Spark為包含鍵值對類型的RDD提供了一些專有的操作。這些RDD被稱為pair RDD。pair RDD提供了並行操作各個鍵或跨節點重新進行數據分組的操作接口。 Sp
JavaSE8基礎 HashMap<Integer,String> entrySet遍歷 鍵值對的集合
system brush 現象 image 基礎 cli 集合 eas 所有 os :windows7 x64 jdk:jdk-8u131-windows-x64 ide:Eclipse Oxygen Release (4.7.0) code: p
JavaSE8基礎 HashMap remove 刪除指定的鍵值對
() ava 七天 result [] api 現象 成功 port os :windows7 x64 jdk:jdk-8u131-windows-x64 ide:Eclipse Oxygen Release (4.7.0) code: p
JavaSE8基礎 HashMap remove 根據鍵來刪除鍵值對
print 基礎 ret 優秀 有一個 然而 java源碼 lock 技術分享 os :windows7 x64 jdk:jdk-8u131-windows-x64 ide:Eclipse Oxygen Release (4.7.0) cod
JavaSE8基礎 HashMap isEmpty clear 判斷該映射空不空與刪除所有鍵值對
eas pty java 映射 turn map string ati imp os :windows7 x64 jdk:jdk-8u131-windows-x64 ide:Eclipse Oxygen Release (4.7.0) code:
Hashtable 鍵值對集合
var ole ons nta nbsp console lin write reac // Hashtable 鍵值對集合 一個鍵對應一個值 Hashtable ht=new Hashtable();
[C#]使用Redis來存儲鍵值對(Key-Value Pair)
all style lease scons ice 包管理 列表 有序集合 全部 本文為原創文章、源代碼為原創代碼,如轉載/復制,請在網頁/代碼處明顯位置標明原文名稱、作者及網址,謝謝! 開發工具:VS2017 語言:C# DotNet版本:.Net
C# 發送http方法,利用鍵值對 KeyValuePair,發送分頁命令,日歷的開始和結束時間命令(POST)
!= 方法 call value face all 發送 keyvalue analysis 一個HTTP的類裏面: public static string HttpClientPost(string url, string taskIdx, string
Learning Spark中文版--第四章--使用鍵值對(2)
最小 定制 單個 locate 最大限度 ces 之一 定期 情況 Actions Available on Pair RDDs (鍵值對RDD可用的action) ??和transformation(轉換)一樣,鍵值對RDD也可以使用基礎RDD上的action(開工),並
數據字典Dictionary存放鍵值對
鍵值 err opened str ner oid read mes name 1. 方法思路: 使用數據字典【Dictionary<string, string>】,聲明一個list集合,將“XML子節點名稱”、“節點值”以鍵【節點名稱】值【節點值】對
遍歷對象鍵值對的兩種方法
blog key pre value 遍歷 post body 包裝 function 1、object.keys for (var key of Object.keys(someObject)) { console.log(key + ‘: ‘ + someObje
Intellij IDEA 生成返回值對象快捷鍵
不必要 -- xtra style 需要 實現 alt ctr ext 在編寫一行JAVA語句時,有返回值的方法已經決定了返回對象的類型和泛型類型,我們只需要給這個對象起個名字就行。 如果使用快捷鍵生成這個返回值,我們就可以減少不必要的打字和思考,專註於過程的實現。 步驟:
獲取json鍵值對的對應字符串
out val stat get 獲取 sta sys bject value 獲取json中的姓名 json串ac 關鍵字key public class Json { public static String json(String key;String ac) {
ConfigurationManager 讀寫AppSettings鍵值對
ews con one sku err except line exceptio names using System; using System.Configuration; namespace ConsoleApplication1 { class Prog
6.spark core之鍵值對操作
方式 lines () end 結果 字符 額外 creat 很多 鍵值對RDD(pair RDD)是spark中許多操作所需要的常見數據類型,通常用來進行聚合計算。 創建Pair RDD ??spark有多種方式可以創建pair RDD。比如:很多存儲鍵值對的數據格式在讀