1. 程式人生 > >zookeeper的zab協議工作原理之 崩潰恢復模式

zookeeper的zab協議工作原理之 崩潰恢復模式

下篇 來詳細的講解 崩潰恢復模式 的原理

一、什麼情況下zab協議會進入崩潰恢復模式?

   1、當伺服器啟動時

    2、當leader 伺服器出現網路中斷,崩潰或者重啟的情況

    3、當叢集中已經不存在過半的伺服器與Leader伺服器保持正常通訊。

二、zab協議進入崩潰恢復模式會做什麼?

    1、leader出現問題,zab協議進入崩潰恢復模式,並且選舉出新的leader。當新的leader選舉出來以後,如果叢集中已經有過半機器完成了leader伺服器的狀態同(資料同步),退出崩潰恢復,進入訊息廣播模式。

  2、當新的機器加入到叢集中的時候,如果已經存在leader伺服器,那麼新加入的伺服器就會自覺進入崩潰恢復模式,找到

leader進行資料同步。

三、特殊情況下需要解決的兩個問題:

    1、已經被處理的事務請求(proposal)不能丟(commit的)

     2、沒被處理的事務請求(proposal)不能再次出現

什麼時候會出現事務請求被丟失呢?

  當 leader 收到合法數量 follower 的 ACKs 後,就向各個 follower 廣播 COMMIT 命令,同時也會在本地執行 COMMIT 並向連線的客戶端返回「成功」。但是如果在各個 follower 在收到 COMMIT 命令前 leader 就掛了,導致剩下的伺服器並沒有執行都這條訊息。

如何解決 已經被處理的事務請求(proposal)不能丟(commit的)呢?

 1、選舉擁有 proposal 最大值(即 zxid 最大) 的節點作為新的 leader:由於所有提案被 COMMIT 之前必須有合法數量的 follower ACK,即必須有合法數量的伺服器的事務日誌上有該提案的 proposal,因此,zxid最大也就是資料最新的節點儲存了所有被 COMMIT 訊息的 proposal 狀態。

 2、新的 leader 將自己事務日誌中 proposal 但未 COMMIT 的訊息處理。
 3、
新的 leader 與 follower 建立先進先出的佇列, 先將自身有而 follower 沒有的 proposal 傳送給 follower,再將這些 proposal 的 COMMIT 命令傳送給 follower,以保證所有的 follower 都儲存了所有的 proposal、所有的 follower 都處理了所有的訊息。

通過以上策略,能保證已經被處理的訊息不會丟。

問題二出現的場景是:

    當 leader 接收到訊息請求生成 proposal 後就掛了,其他 follower 並沒有收到此 proposal,因此經過恢復模式重新選了 leader 後,這條訊息是被跳過的。 此時,之前掛了的 leader 重新啟動並註冊成了 follower,他保留了被跳過訊息的 proposal 狀態,與整個系統的狀態是不一致的,需要將其刪除。

解決方案是:

 Zab 通過巧妙的設計 zxid 來實現這一目的。一個 zxid 是64位,高 32 是紀元(epoch)編號,每經過一次 leader 選舉產生一個新的 leader,新 leader 會將 epoch 號 +1。低 32 位是訊息計數器,每接收到一條訊息這個值 +1,新 leader 選舉後這個值重置為 0。這樣設計的好處是舊的 leader 掛了後重啟,它不會被選舉為 leader,因為此時它的 zxid 肯定小於當前的新 leader。當舊的 leader 作為 follower 接入新的 leader 後,新的 leader 會讓它將所有的擁有舊的 epoch 號的未被 COMMIT 的 proposal 清除。

相關推薦

zookeeper的zab協議工作原理 崩潰恢復模式

下篇 來詳細的講解 崩潰恢復模式 的原理一、什麼情況下zab協議會進入崩潰恢復模式?   1、當伺服器啟動時    2、當leader 伺服器出現網路中斷,崩潰或者重啟的情況    3、當叢集中已經不存在過半的伺服器與Leader伺服器保持正常通訊。二、zab協議進入崩潰恢復

WEBhttp協議工作原理

除了TCP/IP協議,http可以說是最重要,且使用最多的網路協議了。本節簡要介紹一下http協議的工作原理。 假設現在有一個html檔案:http.html, 存放在Web伺服器上,其URL為www.myweb.com/http.html ,檔案內容為: HTML

LVS | LVS 負載均衡工作原理說明(NAT模式

LVS-NAT模式:NAT用法本來是因為網路IP地址不足而把內部保留IP地址通過對映轉換成公網地址的一種上網方式(源地址NAT)。如果把NAT的過程稍微變化,就可以 成為負載均衡的一種方式。原理其

[Java]Servlet工作原理二:Session與Cookie

工作 一段時間 .cn cookie font ava logs mage ont (未完待續) 一、Cookie Cookie 用於記錄用戶在一段時間內的行為,它有兩個版本:Version 0 和 Version 1,分別對應兩種響應頭 Set-Cookie 和 Set-

[Java]SpringMVC工作原理二:HandlerMapping和HandlerAdapter

!= 子類 exe 指定 ssa ble sina -name manage 一、HandlerMapping 作用是根據當前請求的找到對應的 Handler,並將 Handler(執行程序)與一堆 HandlerInterceptor(攔截器)封裝到 HandlerExe

ARP協議工作原理

-s docke roc 部分 sim p地址 mil ip地址 以太網 ARP協議可以完成任意網絡地址到任意物理地址的轉化,本次主要講解IP網絡地址到以太網(MAC地址)地址的轉化。ARP的工作原理:主機向自己所在的網絡廣播一個ARP請求,該請求包含目標機器的網絡

SpringMVC工作原理:HandlerMapping和HandlerAdapter

一、HandlerMapping 作用是根據當前請求的找到對應的 Handler,並將 Handler(執行程式)與一堆 HandlerInterceptor(攔截器)封裝到 HandlerExecutionChain 物件中。在 HandlerMapping 介面的內部只有一個方法,

很棒的開源監控系統原理系列文章:UAV MOF工作原理Agent注入機制原理

原文連結:https://mp.weixin.qq.com/s/eA6nuYPVvgoCWO4E3yP4BQ 也可關注公眾號:UAVStack智慧運維 大家好,UAVStack推送時間到~ 上月我們為大家介紹了UAVStack中的呼叫鏈技術,助力大家進行問題診斷和系統性能提升,希望大家有

HTTPS協議工作原理(SSL數字證書)

目錄 HTTPS SSL協議的工作過程 SSL數字證書的檢視 HTTPS 我們都知道HTTP協議是明文傳輸的,並且不能驗證對方的身份,而且不能保證資料的完整性。而當我們在網路上進行購物電子交易時,電子網銀轉賬時,這種方式就顯得很不安全了。如果黑客截取了我們和伺服器端的通訊資料

UAV MOF工作原理Agent注入機制原理

大家好,本月我們將為大家推送UAVStack的中介軟體增強框架專題(MOF),為大家詳細講述UAV中的MOF Agent是如何藉助javaagent(premain)和javaassist技術在對應用無侵入的前提下完成資料捕獲的。歡迎繼續關注UAVStack,瞭解UAV更多的技術創新。 前言 MOF(Mo

View的工作原理自定義View

        前面的四篇系列文章,從原始碼開始詳細的分析了View的Measure過程。學以致用,這篇文章就記錄一下,學完View的Measure過程之後,自己自定義View的一些收穫。本文講解的是普通View的自定義,ViewGroup的自定義將在下篇

View的工作原理Measure過程原始碼學習(四)

       上一篇文章,學習了ViewGroup和View的measure流程。文章最後講到,本文將會學習ViewGroup和普通View的onMeasure方法的工作。        因為ViewGroup是

View的工作原理Measure過程原始碼學習(三)

        上一篇文章講解了整個Android應用程式的View檢視的頂級節點DecorView的Measure過程,文章最後就講到了DecorView的onMeasure方法中呼叫super.onMeasure(widthMeasureSpec, h

View的工作原理Measure過程原始碼學習(二)

          上一篇文章從Android程式啟動過程講解了Activity、PhoneWindow以及ViewRoot與DecorView的聯絡。本篇文章詳細講述一下DecorView的measure過程。  

View的工作原理Measure過程原始碼學習(一)

       在Android開發過程中,View控制元件的使用是最基本的技能,而自定義View技能的掌握也是非常重要的。這篇博文講記錄一下在讀任玉剛老師的《Android開發藝術探索》一書中學習到的相關知識以及自己的一些收穫。這裡說明一點,在"View的

自定義View(一)View工作原理測量 measure

在Android中,一個View繪製出來要經過三大流程,分別用measure來測量View的寬高,用layout來確定View在父容器中的位置,最終用draw將View繪製到螢幕上。本章節主要,通過自己的理解來講解一下第一個流程measure的相關知識點。 measure方法在View類中,

Android系統Recovery工作原理使用update.zip升級過程分析

                       ① 在main函式的開頭,首先將使用者設定的option選項存入OPTIONS變數中,它是一個python中的類。緊接著判斷有沒有額外的指令碼,如果有就讀入到OPTIONS變數中。                        ② 解壓縮輸入的zip包,即我們在

SMTP協議工作原理及原始命令碼

1.介紹   簡單郵件傳輸協議(SMTP)的目標是可靠高效地傳送郵件,它獨立於傳送子系統而且僅要求一條可以保證傳送資料單元順序的通道。附錄A,B,C和D描述了不同傳送服務下SMTP的使用。在名詞表中還定義了本文件中使用的術語。   SMTP的一個重要特點是它能夠在

Tomcat工作原理檔案配置詳解

一、Tomcat目錄|---bin:存放啟動和關閉tomcat指令碼;|---conf:存放不同的配置檔案(server.xml和web.xml);|---doc:存放Tomcat文件;|---lib/japser/common:存放Tomcat執行需要的庫檔案(JARS);

比特幣協議工作原理

比特幣 現在,讓我們離開Infocoin,轉向的真正的比特幣協議。比特幣和我們剛才一步步建立起來的Infocoin沒有多大的差別,除了一個明顯的改變。 要使用比特幣,首先你得在電腦裡安裝一個錢包。為了讓你更好的理解,下圖是一個叫做Multibit的錢包的截圖。你可以在