分佈式協議學習筆記(二) 日誌複製

一旦Leader選定以後,咱們將複製全部的操做到每一個節點上。服務器

這個是經過心跳包中的Append Entries message結構體來進行實現的網絡

 

客戶端發送一個操做到Leader中(即便客戶端發送操做到Follower,操做也會被轉發到Leader處理)分佈式

Leader將操做附加到本身的Log日誌中學習

基本操做記錄

Leader將隨後將操做發送給Follower,Follower再回復給Leader,當Leader確認該操做被一半以上設備接受,則提交該操做Log(正式記錄),而且回覆給客戶端操做處理結果3d

再追加一個+2操做日誌

網絡分區

如今假設有5個服務器節點,因爲某種緣由被切割成兩個網絡分區.根據以前得的論述,在通過一段選舉超時間後,各個區域都會選舉出各自的Leader(固然 若是被隔開的是兩個Folloer 那麼就只能選舉出一個新的Leader和兩個長期處於選舉狀態的節點)blog

假設有不一樣的客戶端分別給不一樣的區域的Leader發送操做. 設置8的操做會被提交,由於該操做能夠被過半的節點接受,而設置3的操做不行。學習筆記

撤銷網絡分割後,咱們會看到,因爲後選舉出來的Leader具備更高的TERM計數,因此設置8的操做被更新到每一個節點上im

A B節點會回滾本身以前的Log,而且更新新的Leader的Log記錄客戶端

相關文章
相關標籤/搜索