etcd 使用小記

來源:互聯網
上載者:User
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。

咱們這不講安裝, 只講使用.

etcd,consul 都是分布式KV, 一般用於服務發現;

1 註冊服務

這裡使用 etcd.clientv3搞事情, GoDoc在 這, 以下是虛擬碼

// key 隨你制定, 只要能標識是那個伺服器(比如 root/game/node_1)即可. value 可以包含addr, 狀態, 優先度等資訊client.OpPut(key,value)

這裡的小提示: 最好實現健全狀態檢查, 再好的代碼也有跑不動的一天, 好像etcd的健全狀態檢查只支援ttl(服務向etcd定時重新PUT), 所以記得設定TTL並整一個Tick定時執行以上代碼吧.

不過consul支援兩種健全狀態檢查, 一種是ttl, 一種是consul主動去檢查服務狀態(詳情看最底下 ↓ 的參考), 個人更喜歡consul. 因為我更喜歡年輕(=無限可能)的東西, 就像Golang一樣.

TTL?

// ttl: 10sresp, _:= cli.Grant(context.TODO(), 10)ctx, _:= context.WithTimeout(context.Background(), 5*time.Second)rsp,err:=cli.Put(ctx,"root/game/node-2",`{"addr":"192.168.1.1:9999"}`,clientv3.WithLease(resp.ID))

現在root/game/node-2在10s後就會自動移除

哦 就這麼簡單

2 擷取服務

你可以看到上面的key是用/分層級的, 就像檔案目錄一樣. 不過其實這個結構不是必須的, 只是推薦吧~.

擷取一個value只需要:

rsp,_ := cli.Get(ctx,"root/game/node_1")log.Print(rsp)

那麼你要擷取root下的所有kv怎麼辦呢? 這樣:

// clientv3.WithPrefix() 這個option的意思就是以首碼擷取,就是只要有這個首碼的key都返回. 現在明白了吧, 為什麼推薦用/分割key, 是不是很優雅?// 將返回一個數組rsp,_ := cli.Get(ctx,"root/",clientv3.WithPrefix())log.Print(rsp)

哦 就這麼簡單

3 watch

剛剛我說設定了TTL將在10s後刪除key, 這麼確定刪除了呢? 那就是watch.

watch的作用就是在新服務改變(重新註冊,下線等)後, 告知各個服務執行相應的邏輯(重新串連新服務,警示等).

ctx := context.TODO()ch := cli.Watch(ctx, "root/", clientv3.WithPrefix())for {    log.Print("rev")    select {    case c := <-ch:        for _, e := range c.Events {            log.Printf("%+v", e)        }    }}

以上代碼在root/下的key有變化就會列印出相應的變化.

Consul我也沒用過, 這裡給個連結consul api, 裡面說的也易懂, 等用到了再來小記吧~ 完.

參考

etcd 使用入門
使用consul實現服務的註冊和發現

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.