ETCD-介紹

ETCD是什麼?算法

 

ETCD是用於共享配置和服務發現的分佈式、一致性的KV存儲系統。安全

      ( A distributed, reliable key-value store for the most critical data of a distributed system.)網絡

ETCD是CoreOS公司發起的一個開源項目,受權協議爲Apache。運維

ETCD是一個受到ZooKeeper與doozer啓發而催生的項目,除了擁有與之相似的功能外,更專一於如下四點:curl

 

1.簡單:基於HTTP+JSON的API讓你用curl就能夠輕鬆使用。分佈式

2.安全:可選SSL客戶認證機制。( https協議是由ssl+http協議構建的可進行加密傳輸、身份認證的網絡協議,比http協議安全性高)加密

3.快速:每一個實例每秒支持一千次寫操做。url

4.可信:使用Raft算法充分實現了分佈式。spa

 

PS:分佈式系統中的數據分爲控制數據和應用數據。.net

ETCD的使用場景默認處理的數據都是控制數據,對於應用數據,只推薦數據量很小,可是更新訪問頻繁的狀況。

 

Zookeeper,ETCD的比較

 

基本概念:

•服務註冊—— 一個服務將其位置信息在中心註冊節點註冊的過程。該服務通常會將它的主機IP地址以及端口號進行註冊,有時也會有服務訪問的認證信息,使用協議,版本號,以及關於環境的一些細節信息。

•服務發現—— client端的應用實例查詢中心註冊節點以獲知服務位置的過程。

ETCD vs ZK

•一致性與複雜度:ETCD使用[Raft]協議, ZK使用[ZAB](類PAXOS協議),前者容易理解,方便實現; 

                         paxos 和raft的對比: https://blog.csdn.net/colorant/article/details/73887706

•運維方面:ETCD安裝部署與運維簡單,ZK安裝部署複雜,依賴較多,維護相對複雜;

•項目活躍度:ETCD社區與開發活躍,ZK發展緩慢;

•API:ETCD提供HTTP+JSON,跨平臺跨語言,ZK須要使用其客戶端;

•訪問安全方面:ETCD支持HTTPS訪問,ZK在這方面缺失;

•編寫語言:ETCD用go編寫;ZK使用JAVA編寫,偏向於重型應用,有大量依賴。

 

        總而言之,ETCD能夠算得上是後起之秀了。在一致性協議複雜度、運維、安全、項目活躍度等多個角度上,ETCD相比zookeeper都佔據優點。

具體比較分析,詳見:https://blog.csdn.net/shlazww/article/details/38736511

 

ETCD概念詞彙表

 

Raft:etcd所採用的保證分佈式系統強一致性的算法。

Node:一個Raft狀態機實例。

Member: 一個etcd實例。它管理着一個Node,而且能夠爲客戶端請求提供服務。

Cluster:由多個Member構成能夠協同工做的etcd集羣。

Peer:對同一個etcd集羣中另一個Member的稱呼。

Client: 向etcd集羣發送HTTP請求的客戶端。

WAL:預寫式日誌,etcd用於持久化存儲的日誌格式。

snapshot:etcd防止WAL文件過多而設置的快照,存儲etcd數據狀態。

Proxy:etcd的一種模式,爲etcd集羣提供反向代理服務。

Leader:Raft算法中經過競選而產生的處理全部數據提交的節點。

Follower:競選失敗的節點做爲Raft中的從屬節點,爲算法提供強一致性保證。

Candidate:當Follower超過必定時間接收不到Leader的心跳時轉變爲Candidate開始競選。

Term:某個節點成爲Leader到下一次競選時間,稱爲一個Term。

Index:數據項編號。Raft中經過Term和Index來定位數據。

相關文章
相關標籤/搜索