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 - 等待傳輸資料