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啟發而催生的項目,除了擁有與之類似的功能外,更專注於以下四點:

 

1.簡單:基於HTTP+JSON的API讓你用curl就可以輕松使用。

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

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

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

 

PS:分布式系統中的數據分為控制數據和應用數據。

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來定位數據。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM