http://www.yunweipai.com/archives/8131.html 新一代etcd:etcd3html
etcd是一個高可用的 Key/Value 存儲系統,主要用於分享配置和服務發現。
簡單:支持 curl 方式的用戶 API (HTTP+JSON)
安全:可選 SSL 客戶端證書認證
快速:單實例可達每秒 1000 次寫操做
可靠:使用 Raft 實現分佈式node
下載安裝etcdlinux
例如 https://github.com/coreos/etcd/releases/download/v0.4.6/etcd-v0.4.6-Linux-amd64.tar.gz 版本git
解壓便可使用,默認端口是 2379github
使用以下:數據庫
基於http的API很是易用,這個指導將展現兩種方式:包括etcdctl和curl的例子, 注意必須爲curl加上-L標誌, 由於etcd會自動透明地將寫操做重定向到etcd集羣的master。 安全
設定key : message 的值爲: Hello, 這裏使用 curl 方式 。以下:curl
$ curl -L -X PUT http://127.0.0.1:2379/v2/keys/message -d value="Hello" {"action":"set","node":{"key":"/message","value":"Hello","modifiedIndex":4,"createdIndex":4}}
讀取key: message的值分佈式
$ curl -L http://127.0.0.1:2379/v2/keys/message{"action":"get","node":{"key":"/message","value":"Hello","modifiedIndex":4,"createdIndex":4}}
刪除key:url
Golang 讀取寫入Etcd數據庫
$ curl -L -X DELETE http://127.0.0.1:2379/v2/keys/message{"action":"delete","node":{"key":"/message","modifiedIndex":19,"createdIndex":4}}
package main import ( "github.com/coreos/go-etcd/etcd" "log" ) func main() { client := etcd.NewClient( []string{ "http://127.0.0.1:2379", }, ) for { resp, err := client.Get("message", false, false) if err != nil { log.Fatal(err) } log.Printf("Current creds: %s: %s\n", resp.Node.Key, resp.Node.Value) receiver := make(chan *etcd.Response) go client.Watch("/message", 0, false, receiver, nil) r := <-receiver log.Printf("Got updated creds: %s: %s\n", r.Node.Key, r.Node.Value) } }