etcd

1,將數據存儲在集羣中的高可用的K-V存儲golang

2,容許應用實時監聽存儲中的K-V變化網絡

3,可以容忍單點故障 可以應對網絡分區分佈式

 

原理:編碼

 

 

 

 

 

上圖5個節點的集羣命令行

2N+1   5個節點的集羣大多數是N+1  3個節點 只要有3個節點能被賦值,那麼這個日誌就能被提交,不會被丟失3d

1-7日誌是成功被提交的日誌,8是失敗的日誌

 

 

 

上圖由7個節點組成的raft節點  大多數爲zn+1=7  n+1=4大多數爲4blog

1,第一任村長爲f節點並且成功賦值給了其它節點,接着down機了,而後立刻重啓,由於leader重啓了,因此從新選舉事務

a-f看誰運氣好了,每一個節點都有3個編碼爲1的日誌,任一節點均可能成爲leader,get

2,從圖能夠看出f運氣比較好第二次又被選爲村長了

此時f獲得3編碼爲2的3條日誌可是立刻又掛掉了,接着又重啓收到編碼爲3的5條日誌又掛了

此時f節點雖然日誌多 可是成功提交的和其它節點是同樣的多 編碼爲1的  2 ,3 沒有成功提交

3,編碼爲4的日誌能夠看出e爲編碼爲4的節點,並且成功複製了2條日誌給其它節點,此時e又down機了

。。。。。。。。。。。。不一一分析了。。。。。有興趣的能夠繼續分析。。。。

總結:

 

 

 

leader在down機重啓後發現 已經有了新的leader 此時會拉取到新的數據發現 該數據是大多數節點承認的,就會覆蓋本地的

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

實戰任務:

*搭建單機etcd 熟悉命令行操做

*golang調用etcd的put/get/delete/lease/watch

*使用txn事務功能 實現分佈式樂觀鎖

相關文章
相關標籤/搜索