1. 程式人生 > 其它 >如何基於ZK實現高可用架構

如何基於ZK實現高可用架構

zookeeper設計步驟

  設計path   節點的路徑

  選擇znode型別  普通節點、臨時節點等

  設計znode資料  節點中的資料

  設計watch  節點的監聽事件以及對應的處理

ZK實現主備切換架構

  1、設計2個臨時節點 master slave

  2、master節點掛掉時 slave升級master

  3、由於切換時可能會資料衝突,master節點需要記錄時間

  4、節點啟動時嘗試建立master節點,如果失敗則建立slave節點。 當slave節點收到master丟失的事件時,嘗試建立master節點,如果成功刪除slave節點。

ZK實現叢集選舉

  1、最小節點數獲勝

    共用parent node,叢集中每個節點在parent node下建立節點

    當leader節點掛掉時,編號最小的znode成為leader,因此使用臨時有序節點

    根據業務寫入節點

    啟動後在parent節點下建立有序的臨時節點;編號最小的znode成為leader; 當parent下節點刪除時判斷是否為leader

  2、搶建唯一節點

    所有節點只有一個leader 節點,本質上是一個分散式鎖。

    當leader掛掉時,所有節點搶注leader節點,誰搶到是誰的。所以用臨時節點。

    根據業務寫入資料

    啟動後所有節點搶注leader,監控到leader刪除後所有節點搶注leader

  3、法官判決

    共用父節點

    編號最小的成為法官,因此使用有序臨時節點

    根據業務需要寫入資料,比如事務的ID

    編號最小的節點成為法官,法官負責選舉規則,監聽到節點刪除時所有節點更新選舉資料,法官讀取所有節點資料根據演算法選出leader並寫入父節點,所有節點監聽父節點確認自己是不是leader