15.1 簡介
版本說明: 本章內容基於 etcd 3.5 系列版本編寫。官方維護最新兩個次版本(當前為 3.5 和 3.6)。請訪問 etcd 官方發布頁 獲取最新版本訊息。
如圖 15-1 所示,etcd 專案使用該標識。
圖 15-1:etcd 專案標識
etcd 是 CoreOS 團隊於 2013 年 6 月發起的開源專案,它的目標是建立一個高可用的分散式鍵值 (key-value) 資料庫,基於 Go 語言實現。我們知道,在分散式系統中,各種服務的設定訊息的管理分享,服務的發現是一個很基本同時也是很重要的問題。CoreOS 專案就希望基於 etcd 來解決這一問題。
etcd 目前在 github.com/etcd-io/etcd 進行維護。
受到 Apache ZooKeeper 專案和 doozer 專案的啟發,etcd 在設計的時候重點考慮了下面四個要素:
- 簡單:具有定義良好、面向使用者的
API(gRPC) - 安全:支援
HTTPS方式的訪問 - 快速:支援併發
10 k/s的寫操作 - 可靠:支援分佈式結構,基於
Raft的一致性演算法
Apache ZooKeeper 是一套知名的分散式系統中進行同步和一致性管理的工具。
doozer 是一個一致性分散式資料庫。
Raft 是一套透過選舉主節點來實現分散式系統一致性的演算法,相比於大名鼎鼎的 Paxos 演算法,它的過程更容易被人理解,由 Stanford 大學的 Diego Ongaro 和 John Ousterhout 提出。更多細節可以參考 raftconsensus.github.io。
一般情況下,使用者使用 etcd 可以在多個節點上啟動多個實例,並新增它們為一個叢集。同一個叢集中的 etcd 實例將會保持彼此訊息的一致性。