天天看點

Zookeeper詳細介紹

zookeeper定義:是一個分布式的,開放源碼的分布式應用程式協調服務。

在zookeeper中分為三種角色

1、leader   上司者

2、follower  跟随者

3、observer 監視follower  (是一個隐藏的)

在zookeeper(恢複模式/leader挂掉了/叢集剛啟動)節點狀态分為四種

1、LOOKING:等待狀态,一般出現在沒有leader準備選舉得得時候

2、LEADING:是已經選舉出leader。

3、FOLLOWING:在還沒有leader,正在進行選舉狀态

4、OBSERVERING:是leader和follower都産生後的狀态

zookeeper的六大特性

  • 順序一緻性:按照用戶端發送請求的順序更新資料。
  • 原子性:更新要麼成功,要麼失敗,不會出現部分更新。
  • 單一性 :無論用戶端連接配接哪個server,都會看到同一個視圖。
  • 可靠性:一旦資料更新成功,将一直保持,直到新的更新。
  • 及時性:用戶端會在一個确定的時間内得到最新的資料。

zookeeper的原子廣播

通過跟随者的投票确定某一件事能不能做,故zookeeper跟随者最好是<=255個,并且是奇數

1.請求一開始到follower,follower會将請求發送給leader

2.leader将請求下發給所有的follower,follower來判斷,并将結果傳回給leader

3.将請求寫入的檔案分發到所有的follower------(最終一緻性--及時在寫入的過程中有節點連接配接不上,當恢複的時候還會把節點上寫入資料)

zookeeper的zab協定分為兩種

         1.廣播模式----選舉出來leader,對外提供服務

         2.恢複模式----選舉leader,就是四大狀态

zookeeper的選舉機制

首先會通過自身ID(serverid(設定的myid)),ID大的優先,如果ID相同就會通過zxid選舉,也是zxid大的優先,并且也遵守少數服從多數的原則

zookeeper的znode

znode是zookeeper自身的檔案系統,為了快速的傳輸,通常它們都很小大約是1M,它會實時将DataNode的資料讀取到,并發送到leader,在從leader讀取各個znode檔案合并後的資料,進而保證了它的實時性。這是也是它的六大特性的展現

znode它有分為四種:1.持久2.臨時3.持久順序4.臨時順序

進入zookeeper用戶端的指令是:zkCli.sh -server 192.168.157.123:2181(2181端口号)

通過eclipse建立連接配接     Zookeeper  zk=newzookeeper("192.168.79.125:2181",timeout,watcher)

這些就是簡單的API

  • create - 在樹形結構的位置中建立節點
  • delete - 删除一個節點
  • exists - 測試節點在指定位置上是否存在
  • get data - 從節點上讀取資料
  • set data - 往節點寫入資料
  • get chilren - 檢索節點的子節點清單
  • sync - 等待傳輸資料

zookeeper的監聽機制:監聽是follower給出一個Watch,它監視leader的狀态并将leader的狀态告訴會給follower

繼續閱讀