voldemort分佈式數據庫Rebalance的代碼總結

經過閱讀源代碼 總結了一下官方文件沒有說到的更細節一些的步驟:

開始Rebalance的步驟:
1驗證集羣的狀態,所有的server都是NORMAL_SERVER
2.//向cluster發佈的cluster.xml, 新加的節點 沒有partition信息 舊節點的分區不變,這個cluster叫current cluster
3.  copy一份current cluster,這個拷貝叫transition cluster,for:每個要遷移的分區,將這個分區加入到transition cluster,併發布到每個server上,而且改變每個server的狀態。
4.for:每個分區,數據開始遷移,在一個list中 主到主的遷移要優先於 從到相應從(主的按某順序的下一個節點)的遷移。
5。 for每個分區:上面的工作完成後 crrent cluster=transition cluster
6。若對某個分區的遷移失敗,那麼改變所有Server的狀態,將current cluster發佈到所有server。這時current cluster中已經遷移成功的分區是有效的。而遷移失敗的分區在遷移的過程中事實上已經接受寫數據了,但是由於狀態回滾,這些新寫的數據在回滾後已經是屬於老節點的數據了~ 這時系統恢復到正常狀態只能依靠stealer node自己的repair功能,遍歷自己的數據發現不屬於自己的數據就放到slop庫中等待轉發.最後將恢復。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章