1.什么是etcd
etcd 是一個分布式鍵值對存盤,設計用來可靠而快速的保存關鍵資料并提供訪問,通過分布式鎖,leader
選舉和寫屏障(write barriers)來實作可靠的分布式協作,etcd集群是為高可用,持久性資料存盤和檢索
而準備,
"etcd"這個名字源于兩個想法,即 unix “/etc” 檔案夾和分布式系統"d"istibuted, “/etc” 檔案夾為
單個系統存盤配置資料的地方,而 etcd 存盤大規模分布式系統的配置資訊,因此,"d"istibuted 的
“/etc” ,是為 “etcd”,
etcd 以一致和容錯的方式存盤元資料,分布式系統使用 etcd 作為一致性鍵值存盤,用于配置管理,服務
發現和協調分布式作業,使用 etcd 的通用分布式模式包括領導選舉,分布式鎖和監控機器活動.
etcd is a distributed reliable key-value store for the most critical data of a distributed
system, with a focus on
being:
Simple: well-defined, user-facing API (gRPC)
Secure: automatic TLS with optional client cert authentication
Fast: benchmarked 10,000 writes/sec
Reliable: properly distributed using Raft
etcd is written in Go and uses the Raft consensus algorithm to manage a highly-available replicated log.
etcd is used in production by many companies, and the development team stands behind it in critical
deployment scenarios, where etcd is frequently teamed with applications such
as Kubernetes, locksmith, vulcand, Doorman, and many others. Reliability is further ensured by rigorous testing.
See etcdctl for a simple command line client.
2.使用案例
2.1 CoreOS 的容器
Linux: 在Container Linux上運行的應用程式獲得自動的不宕機 Linux 內核更新, 容器 Linux 使用
locksmith來協調更新,locksmith 在 etcd 上實作分布式信號量,確保在任何給定時間只有集群的一個子
集重新啟動,
2.2 Kubernetes
將配置資料存盤到etcd中,用于服務發現和集群管理; etcd 的一致性對于正確安排和運行服務至關重要,
Kubernetes API 服務器將群集狀態持久化在 etcd 中,它使用etcd的 watch API監視集群,并發布關鍵
的配置更改
3.優點
etcd作為一個受到ZooKeeper與doozer啟發而催生的專案,除了擁有與之類似的功能外,更專注于以下四點,
1 簡單:基于HTTP+JSON的API讓你用curl就可以輕松使用,
2 安全:可選SSL客戶認證機制,
3 快速:每個實體每秒支持一千次寫操作,
4 可信:使用Raft演算法充分實作了分布式,
4.應用場景
場景一:服務發現(Service Discovery)
場景二:訊息發布與訂閱
場景三:負載均衡
場景四:分布式通知與協調
場景五:分布式鎖、分布式佇列
場景六:集群監控與Leader競選
5.相關概念
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來定位資料
6.ETCD部署
ETCD集群部署手冊
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/240866.html
標籤:區塊鏈
上一篇:第45篇 ERC20合約原始碼(含代幣的鎖倉,定期釋放等功能)
下一篇:區塊鏈(1)——以太坊下載安裝
