久久国产精品一区二区三区四区,久色婷婷小香蕉久久,国产日韩欧美在线播放不卡,另类av一区二区

深入淺出 Zookeeper 中的 ZAB 協議
來源:悟空聊架構    時間:2022-03-23 18:38:22

ZAB 協議的全稱是 Zookeeper Atomic Broadcase,原子廣播協議。

作用:通過這個 ZAB 協議可以進行集群間主備節點的數據同步,保證數據的一致性。

在講解 ZAB 協議之前,我們必須要了解 Zookeeper 的各節點的角色。

Zookeeper 各節點的角色

Leader:

負責處理客戶端發送的讀、寫事務請求。這里的事務請求可以理解這個請求具有事務的 ACID 特性。同步寫事務請求給其他節點,且需要保證事務的順序性。狀態為 LEADING。

Follower:

負責處理客戶端發送的讀請求轉發寫事務請求給 Leader。參與 Leader 的選舉。狀態為 FOLLOWING。

Observer:

和 Follower 一樣,唯一不同的是,不參與 Leader 的選舉,且狀態為 OBSERING??梢杂脕砭€性擴展讀的 QPS。啟動階段,如何選 Leader?

Zookeeper 剛啟動的時候,多個節點需要找出一個 Leader。怎么找呢,就是用投票。

比如集群中有兩個節點,A 和 B,原理圖如下所示:

節點 A 先投票給自己,投票信息包含節點 id(SID) 和一個 ZXID,如 (1,0)。SID 是配置好的,且唯一,ZXID 是唯一的遞增編號。節點 B 先投票給自己,投票信息為(2,0)。然后節點 A 和 B 將自己的投票信息投票給集群中所有節點。節點 A 收到節點 B 的投票信息后,檢查下節點 B 的狀態是否是本輪投票,以及是否是正在選舉(LOOKING)的狀態。投票 PK:節點 A 會將自己的投票和別人的投票進行 PK,如果別的節點發過來的 ZXID 較大,則把自己的投票信息更新為別的節點發過來的投票信息,如果 ZXID 相等,則比較 SID。這里節點 A 和 節點 B 的 ZXID 相同,SID 的話,節點 B 要大些,所以節點 A 更新投票信息為(2,0),然后將投票信息再次發送出去。而節點 B 不需要更新投票信息,但是下一輪還需要再次將投票發出去。

這個時候節點 A 的投票信息為(2,0),如下圖所示:

統計投票:每一輪投票,都會統計每臺節點收到的投票信息,判斷是否有過半的節點收到了相同的投票信息。節點 A 和 節點 B 收到的投票信息都為(2,0),且數量來說,大于一半節點的數量,所以將節點 B 選出來作為 Leader。更新節點狀態:節點 A 作為 Follower,更新狀態為 FOLLOWING,節點 B 作為 Leader,更新狀態為 LEADING。運行期間,Leader 宕機了怎么辦?

在 Zookeeper 運行期間,Leader 會一直保持為 LEADING 狀態,直到 Leader 宕機了,這個時候就要重新選 Leader,而選舉過程和啟動階段的選舉過程基本一致。

需要注意的點:

剩下的 Follower 進行選舉,Observer 不參與選舉。投票信息中的 zxid 用的是本地磁盤日志文件中的。如果這個節點上的 zxid 較大,就會被當選為 Leader。如果 Follower 的 zxid 都相同,則 Follower 的節點 id 較大的會被選為 Leader。節點之間如何同步數據的?

不同的客戶端可以分別連接到主節點或備用節點。

而客戶端發送讀寫請求時是不知道自己連的是Leader 還是 Follower,如果客戶端連的是主節點,發送了寫請求,那么 Leader 執行 2PC(兩階段提交協議)同步給其他 Follower 和 Observer 就可以了。但是如果客戶端連的是 Follower,發送了寫請求,那么 Follower 會將寫請求轉發給 Leader,然后 Leader 再進行 2PC 同步數據給 Follower。

兩階段提交協議:

第一階段:Leader 先發送 proposal 給 Follower,Follower 發送 ack 響應給 Leader。如果收到的 ack 過半,則進入下一階段。第二階段: Leader 從磁盤日志文件中加載數據到內存中,Leader 發送 commit 消息給 Follower,Follower 加載數據到內存中。

我們來看下 Leader 同步數據的流程:

① 客戶端發送寫事務請求。② Leader 收到寫請求后,轉化為一個 "proposal01:zxid1" 事務請求,存到磁盤日志文件。③ 發送 proposal 給其他 Follower。④ Follower 收到 proposal 后,Follower 寫磁盤日志文件。

接著我們看下 Follower 收到 Leader 發送的 proposal 事務請求后,怎么處理的:

⑤ Follower 返回 ack 給 Leader。⑥ Leader 收到超過一半的 ack,進行下一階段⑦ Leader 將磁盤中的日志文件的 proposal 加載到 znode 內存數據結構中。⑧ Leader 發送 commit 消息給所有 Follower 和 Observer。⑨ Follower 收到 commit 消息后,將 磁盤中數據加載到 znode 內存數據結構中。

現在 Leader 和 Follower 的數據都是在內存數據中的,且是一致的,客戶端從 Leader 和 Follower 讀到的數據都是一致的。

ZAB 的順序一致性怎么做到的?

Leader 發送 proposal 時,其實會為每個 Follower 創建一個隊列,都往各自的隊列中發送 proposal。

如下圖所示是 Zookeeper 的消息廣播流程:

客戶端發送了三條寫事務請求,對應的 proposal 為:

proposal01:zxid1proposal02:zxid2proposal03:zxid3

Leader 收到請求后,依次放到隊列中,然后 Follower 依次從隊列中獲取請求,這樣就保證了數據的順序性。

Zookeeper 到底是不是強一致性?

官方定義:順序一致性。

不保證強一致性,為什么呢?

因為 Leader 再發送 commit 消息給所有 Follower 和 Observer 后,它們并不是同時完成 commit 的。

比如因為網絡原因,不同節點收到的 commit 較晚,那么提交的時間也較晚,就會出現多個節點的數據不一致,但是經過短暫的時間后,所有節點都 commit 后,數據就保持同步了。

另外 Zookeeper 支持強一致性,就是手動調用 sync 方法來保證所有節點都 commit 才算成功。

這里有個問題:如果某個節點 commit 失敗,那么 Leader 會進行重試嗎?如何保證數據的一致性?歡迎討論。

Leader 宕機數據丟失問題

第一種情況:

假設 Leader 已經將消息寫入了本地磁盤,但是還沒有發送 proposal 給 Follower,這個時候 Leader 宕機了。

那就需要選新的 Leader,新 Leader 發送 proposal 的時候,包含的 zxid 自增規律會發生一次變化:

zxid 的高 32 位自增 1 一次,高 32 位代表 Leader 的版本號。zxid 的低 32 位自增 1,后續還是繼續保持自增長。

當老 Leader 恢復后,會轉成 Follower,Leader 發送最新的 proposal 給它時,發現本地磁盤的 proposal 的 zxid 的高 32 位小于新 Leader 發送的 proposal,就丟棄自己的 proposal。

第二種情況:

如果 Leader 成功發送了 commit 消息給 Follower,但是所有或者部分 Follower 還沒來得及 commit 這個 proposal,也就是加載磁盤中的 proposal 到 內存中,這個時候 Leader 宕機了。

那么就需要選出磁盤日志中 zxid 最大的 Follower,如果 zxid 相同,則比較節點 id,節點 id 大的作為 Leader。

本篇盡量用大白話+畫圖的方式進行講解,希望能給大家帶來啟發。

關鍵詞: 這個時候 強一致性 如下圖所示 發過來的

上一篇:

下一篇:

X 關閉

X 關閉

久久国产精品一区二区三区四区,久色婷婷小香蕉久久,国产日韩欧美在线播放不卡,另类av一区二区
欧美激情在线狂野欧美精品| 久久精品99国产精品| 亚洲国产电影| 狠狠色综合日日| 久久国产精品一区二区三区四区| 亚洲女同同性videoxma| 国产女精品视频网站免费| 亚洲国内精品在线| 久久精品夜色噜噜亚洲a∨| 欧美大片18| 欧美日韩国产综合久久| 久久精品中文字幕一区二区三区| 美女啪啪无遮挡免费久久网站| 国产女人水真多18毛片18精品视频| 午夜免费在线观看精品视频| 亚洲综合999| 美女主播一区| 国产精品亚洲综合色区韩国| 久久夜色撩人精品| 欧美日韩日日骚| 亚洲无毛电影| 欧美亚洲午夜视频在线观看| 亚洲日本视频| 久久久久一本一区二区青青蜜月| 国产精品天天看| 久久精品国产精品亚洲| 老鸭窝毛片一区二区三区| 久久久久久免费| 欧美二区视频| 亚洲一区二区不卡免费| 欧美高清视频一区二区| 欧美一级欧美一级在线播放| 免费成人av资源网| 一区二区三区波多野结衣在线观看| 国产精品亚洲产品| 国产精品三上| 日韩午夜一区| 欧美亚洲综合久久| 亚洲国产精品美女| 中日韩美女免费视频网址在线观看| 欧美a级片一区| 国内精品久久久久影院 日本资源| 免费不卡在线观看av| 欧美影院精品一区| 欧美黄色一级视频| 一级成人国产| 欧美精品国产| 免费视频一区| 欧美一级片在线播放| 欧美一区精品| 亚洲在线播放电影| 亚洲全部视频| 一区二区三区精品视频| 亚洲国产日韩一级| 国产一区二区欧美日韩| 久久精品av麻豆的观看方式| 国产精品一区久久久| 国产色综合天天综合网| 一本色道久久99精品综合| 欧美精品色综合| 欧美性色aⅴ视频一区日韩精品| 欧美一区二区啪啪| 欧美激情成人在线视频| 欧美日韩在线一二三| 国产欧美一区二区三区另类精品| 亚洲日韩欧美一区二区在线| 亚洲欧美日韩在线高清直播| 亚洲国产日韩欧美在线动漫| 国产一区二区三区直播精品电影| 国产精品欧美经典| 久久精品国产免费观看| 欧美中文在线观看国产| 亚洲片国产一区一级在线观看| 亚洲激精日韩激精欧美精品| 艳女tv在线观看国产一区| 欧美日韩在线播放| 国产区日韩欧美| 狠狠色丁香婷婷综合久久片| 亚洲国产美国国产综合一区二区| 欧美jizzhd精品欧美喷水| 在线亚洲+欧美+日本专区| 欧美在线一二三区| 久久偷窥视频| 国产午夜精品一区二区三区视频| 一本到高清视频免费精品| 国产午夜精品美女视频明星a级| 国产精品女同互慰在线看| 欧美日本亚洲| 玖玖视频精品| 欧美成人r级一区二区三区| 欧美专区一区二区三区| 欧美人成免费网站| 亚洲人成毛片在线播放女女| 久久久蜜桃一区二区人| 国产亚洲激情视频在线| 欧美精品在线免费播放| 亚洲高清资源综合久久精品| 亚洲人成7777| 羞羞色国产精品| 欧美黄色免费网站| 欧美性天天影院| 亚洲国产成人精品久久久国产成人一区| 99riav国产精品| 欧美一级黄色录像| 欧美精品1区2区| 欧美在线www| 国产精品久久影院| 国产精品久久二区二区| 在线播放视频一区| 欧美在线视频观看免费网站| 一本到12不卡视频在线dvd| 久久久久久亚洲精品杨幂换脸| 欧美专区在线观看| 久久成人av少妇免费| 欧美日韩在线播放三区四区| 亚洲国产精品v| 99re66热这里只有精品3直播| 亚洲欧美日韩一区在线观看| 久久久久久国产精品mv| 欧美成人一区二区在线| 国产精品亚洲不卡a| 亚洲天堂网站在线观看视频| 亚洲黄色小视频| 一区在线视频观看| 欧美日韩在线一区二区| aa亚洲婷婷| 亚洲国产日韩精品| 久久综合免费视频影院| 欧美日韩国产小视频| 亚洲男同1069视频| 免费欧美在线视频| 亚洲视频成人| 你懂的亚洲视频| 欧美视频三区在线播放| 欧美日韩国产欧美日美国产精品| 亚洲愉拍自拍另类高清精品| 欧美三级资源在线| 亚洲欧洲视频| 欧美91精品| 韩曰欧美视频免费观看| 国产精品女人久久久久久| 亚洲国产精品尤物yw在线观看| 亚洲在线播放| 久久久久国产精品一区二区| 亚洲在线国产日韩欧美| 亚洲毛片av在线| 欧美激情一区在线| 一本色道久久综合| 欧美伊人精品成人久久综合97| 一区二区亚洲| av不卡免费看| 99精品欧美一区二区三区| 先锋亚洲精品| 欧美极品在线视频| 久久综合图片| 亚洲一区二区三区激情| 久久精品国产99| 亚洲一区二区免费在线| 欧美日韩一区二区三区| 亚洲网站啪啪| 欧美日韩午夜在线视频| 欧美v国产在线一区二区三区| 久久视频一区| 国产日韩一区在线| 欧美日韩国产二区| 亚洲高清一区二区三区| 欧美精品一区二区久久婷婷| 日韩午夜电影av| 国产亚洲精品综合一区91| 久久午夜精品一区二区| 国产主播精品在线| 在线国产欧美| 国产精品theporn88| 欧美另类视频在线| 亚洲日本无吗高清不卡| 欧美中文字幕| 国产精品盗摄久久久| 一区二区三区高清在线| 国产一区二区三区黄| 久久综合999| 亚洲免费成人av电影| 国产真实乱子伦精品视频| 免费人成网站在线观看欧美高清| 亚洲视频精品| 久久久久久久久久久久久9999| 亚洲第一偷拍| 一道本一区二区| 香蕉久久夜色精品国产| 欧美激情第一页xxx| 欧美性天天影院| 亚洲人成在线播放网站岛国| 亚洲黄色av| 亚洲曰本av电影| 韩国自拍一区| 久久久久久久尹人综合网亚洲| 亚洲狠狠丁香婷婷综合久久久| 亚洲中字在线| 国产精品久久国产精品99gif| 久久久久久**毛片大全| 欧美午夜精品伦理|