崩溃恢复的实现原理
前面我們已經清楚了ZAB協議中的消息廣播過程,ZAB協議的這個基于原子廣播協議的消息廣播過程,在正常情況下是沒有任何問題的,但是一旦Leader節點崩潰,或者由于網絡問題導致Leader服務器失去了過半的Follower節點的聯系(leader失去與過半follower節點聯系,可能是leader節點和follower節點之間產生了網絡分區,那么此時的leader不再是合法的leader了),那么就會進入到崩潰恢復模式。崩潰恢復狀態下zab協議需要做兩件事
1. 選舉出新的leader
2. 數據同步
前面在講解消息廣播時,知道ZAB協議的消息廣播機制是簡化版本的2PC協議,這種協議只需要集群中過半的節點響應提交即可。但是它無法處理Leader服務器崩潰帶來的數據不一致問題。因此在ZAB協議中添加了一個“崩潰恢復模式”來解決這個問題。
那么ZAB協議中的崩潰恢復需要保證,如果一個事務Proposal在一臺機器上被處理成功,那么這個事務應該在所有機器上都被處理成功,哪怕是出現故障。為了達到這個目的,我們先來設想一下,在zookeeper中會有哪些場景導致數據不一致性,以及針對這個場景,zab協議中的崩潰恢復應該怎么處理。
?
?
總結
 
                            
                        - 上一篇: 消息广播的实现原理
- 下一篇: 已经被处理的消息不能丢
