1.3 Etcd的使用場景
和ZK類似,Etcd有很多使用場景,包括:
配置管理
服務(wù)注冊于發(fā)現(xiàn)
選主
應(yīng)用調(diào)度
分布式隊(duì)列
分布式鎖
1.4 Etcd讀寫性能
按照官網(wǎng)給出的數(shù)據(jù), 在2CPU,1.8G內(nèi)存,SSD磁盤這樣的配置下,單節(jié)點(diǎn)的寫性能可以達(dá)到16K QPS, 而先寫后讀也能達(dá)到12K QPS。這個(gè)性能還是相當(dāng)可觀的。
1.5 Etcd工作原理
Etcd使用Raft協(xié)議來維護(hù)集群內(nèi)各個(gè)節(jié)點(diǎn)狀態(tài)的一致性。簡單說,Etcd集群是一個(gè)分布式系統(tǒng),由多個(gè)節(jié)點(diǎn)相互通信構(gòu)成整體對外服務(wù),每個(gè)節(jié)點(diǎn)都存儲(chǔ)了完整的數(shù)據(jù),并且通過Raft協(xié)議保證每個(gè)節(jié)點(diǎn)維護(hù)的數(shù)據(jù)是一致的。
每個(gè)Etcd節(jié)點(diǎn)都維護(hù)了一個(gè)狀態(tài)機(jī),并且,任意時(shí)刻至多存在一個(gè)有效的主節(jié)點(diǎn)。主節(jié)點(diǎn)處理所有來自客戶端寫操作,通過Raft協(xié)議保證寫操作對狀態(tài)機(jī)的改動(dòng)會(huì)可靠的同步到其他節(jié)點(diǎn)。
1.6 Etcd概念詞匯表
Raft:Etcd所采用的保證分布式系統(tǒng)強(qiáng)一致性的算法。
Node:一個(gè)Raft狀態(tài)機(jī)實(shí)例。
Member: 一個(gè)Etcd實(shí)例。它管理著一個(gè)Node,并且可以為客戶端請求提供服務(wù)。
Cluster:由多個(gè)Member構(gòu)成可以協(xié)同工作的Etcd集群。
Peer:對同一個(gè)Etcd集群中另外一個(gè)Member的稱呼。
Client: 向Etcd集群發(fā)送HTTP請求的客戶端。
WAL:預(yù)寫式日志,Etcd用于持久化存儲(chǔ)的日志格式。
snapshot:Etcd防止WAL文件過多而設(shè)置的快照,存儲(chǔ)Etcd數(shù)據(jù)狀態(tài)。
Proxy:Etcd的一種模式,為Etcd集群提供反向代理服務(wù)。
Leader:Raft算法中通過競選而產(chǎn)生的處理所有數(shù)據(jù)提交的節(jié)點(diǎn)。
Follower:競選失敗的節(jié)點(diǎn)作為Raft中的從屬節(jié)點(diǎn),為算法提供強(qiáng)一致性保證。
Candidate:當(dāng)Follower超過一定時(shí)間接收不到Leader的心跳時(shí)轉(zhuǎn)變?yōu)镃andidate開始競選。
Term:某個(gè)節(jié)點(diǎn)成為Leader到下一次競選時(shí)間,稱為一個(gè)Term。
Index:數(shù)據(jù)項(xiàng)編號(hào)。Raft中通過Term和Index來定位數(shù)據(jù)。