服務發現系統etcd

圖文消息

etcd概述

一個分佈式,可信賴的鍵值對存儲,用於分佈式系統的最重要數據。

etcd特點

  • 讀取和寫入數據使用標準的HTTP工具,比如curl
  • 將數據存儲在分層組織的目錄中,例如標準文件系統
  • 監聽指定的鍵或者目錄,並對值的變化做出相應的應對
  • 可以使用SSL客戶端證書進行通訊
  • 基準測試可以在一秒內可以完成1000次寫入
  • 可以通過TTL來設置鍵的過期時間
  • 使用Raft協議來保證一致性

安裝使用

wget https://github.com/etcd-io/etcd/releases/download/v3.4.7/etcd-v3.4.7-linux-amd64.tar.gz
tar xzvf etcd-v3.4.7-linux-amd64.tar.gz && cd etcd-v3.4.7-linux-amd64
./etcd --versio
  • 使用apt安裝包管理工具安裝
apt install etcd-server

etcd命令行接口使用

設置一個key的value

curl -s http://127.0.0.1:2379/v2/keys/message -X PUT -d value="Hello etcd" |jq .

改變一個key的value

curl -s http://127.0.0.1:2379/v2/keys/message -X PUT -d value="Hello raft" |jq .

獲取一個key的value

curl -s http://127.0.0.1:2379/v2/keys/message |jq .

刪除一個key節點

curl -s http://127.0.0.1:2379/v2/keys/message -X DELETE |jq .

使用ttl設置key的生命週期,超過這個時間點該值沒有被訪問,就刪除這個key

curl -s http://127.0.0.1:2379/v2/keys/foo -X PUT -d value=bar -d ttl=5 |jq .

應用場景一:服務發現(Service Discovery)

服務發現要解決的也是分佈式系統中最常見的問題之一,即在同一個分佈式集羣中的進程或服務,要如何才能找到對方並建立連接。本質上來說,服務發現就是想要了解集羣中是否有進程在監聽udp或tcp端口,並且通過名字就可以查找和連接。

應用場景二:消息發佈與訂閱

在分佈式系統中,最適用的一種組件間通信方式就是消息發佈與訂閱。

即構建一個配置共享中心,數據提供者在這個配置中心發佈消息,而消息使用者則訂閱他們關心的主題,一旦主題有消息發佈,就會實時通知訂閱者。

通過這種方式可以做到分佈式系統配置的集中式管理與動態更新。

應用場景三:分佈式通知與協調

這裏說到的分佈式通知與協調,與消息發佈和訂閱有些相似。都用到了etcd中的Watcher機制,通過註冊與異步通知機制,實現分佈式環境下不同系統之間的通知與協調,從而對數據變更做到實時處理。

應用場景四:分佈式鎖

因爲etcd使用Raft算法保持了數據的強一致性,某次操作存儲到集羣中的值必然是全局一致的,所以很容易實現分佈式鎖。鎖服務有兩種使用方式,一是保持獨佔,二是控制時序。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章