文章出處

etcd是一個高可用的鍵值存儲系統,主要用于共享配置和服務發現。etcd是由CoreOS開發并維護的,靈感來自于 ZooKeeperDoozer,它使用Go語言編寫,并通過Raft一致性算法處理日志復制以保證強一致性。Raft是一個來自Stanford的新的一致性算法,適用于分布式系統的日志復制,Raft通過選舉的方式來實現一致性,在Raft中,任何一個節點都可能成為Leader。Google的容器集群管理系統Kubernetes、開源PaaS平臺Cloud Foundry和CoreOS的Fleet都廣泛使用了etcd。

在分布式系統中,如何管理節點間的狀態一直是一個難題,etcd像是專門為集群環境的服務發現和注冊而設計,它提供了數據TTL失效、數據改變監視、多值、目錄監聽、分布式鎖原子操作等功能,可以方便的跟蹤并管理集群節點的狀態。etcd目前的版本是0.4.5,雖然未發布1.0版本(今年會發布),但其已經使用在多個生產系統中,可見其火熱程度。etcd的特性如下:

  • 簡單: curl可訪問的用戶的API(HTTP+JSON)
  • 安全: 可選的SSL客戶端證書認證
  • 快速: 單實例每秒 1000 次寫操作
  • 可靠: 使用Raft保證一致性

etcd是CoreOS的核心組件,負責節點間的服務發現和配置共享,運行在CoreOS中的應用可以通過etcd讀取或者寫入數據。雖然etcd是為CoreOS而設計,但其可以運行在多個平臺上,包括 OS X、Linux、BSD。

Jason Wilder的一篇博客對分別對常見的服務發現開源項目Zookeeper、Doozer、etcd進行了總結介紹:

Zookeeper是一個用戶維護配置信息、命名、分布式同步以及分組服務的集中式服務框架,它使用Java語言編寫,通過Zab協議來保證節點的一致性。因為Zookeeper是一個CP型系統,所以當網絡分區問題發生時,系統就不能注冊或查找服務。

Doozer是一個一致性的、分布式存儲系統,使用Go語言編寫,通過Paxos來保證強一致性,Doozer項目目前已經停止更新并有將近160個分支。和Zookeeper一樣,Doozer也是一個CP型系統,在網絡分區問題發生時,會有同樣的問題。

etcd是一個用于共享配置和服務發現的高可用的鍵值存儲系統,使用Go語言編寫,通過Raft來保證一致性,有基于HTTP+JSON的API接口。etcd也是一個強一致性系統,但是etcd似乎支持從non-leaders中讀取數據以提高可用性;另外,寫操作仍然需要leader的支持,所以在網絡分區時,寫操作仍可能失敗。

因為設計思路的不同,在原生接口和提供服務方式方面,etcd更適合作為集群配置服務器,用來存儲集群中的大量數據。方便的REST接口也可以讓集群中的任意一個節點在使用key value服務時獲取方便。zookeeper則更加的適合于提供分布式協調服務,他在實現分布式鎖模型方面較etcd要簡單的多。所以在實際使用中應該根據自身使用情況來選擇相應的服務。目前有很多支持etcd的庫和工具,比如命令行客戶端工具etcdctl、Go客戶端go-etcd、Java客戶端jetcd。關于etcd的使用和安裝讀者可以參考官方文檔

 

etcd:用于服務發現的鍵值存儲系統

分布式系統一致性問題和Raft一致性算法

etcd 2.0——etcd的首個主要穩定版本發布了!

etcd是什么東西?它和ZooKeeper有什么區別?

CoreOS 實戰:剖析 etcd

.Net client for etcd

https://github.com/jordansjones/Draft

etcd:Kubernetes和Cloud Foundry之間的那些事

Etcd學習(一)安裝和.NETclient測試

Etcd學習(二)集群搭建Clustering

Etcd學習(三)集群搭建Clustering中Leader問題


文章列表




Avast logo

Avast 防毒軟體已檢查此封電子郵件的病毒。
www.avast.com


arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()