現在很多分散式系統都會用Zookeeper,在Day 5也有稍微提到一下Zookeeper可以用來維護partition metadata。現在就來多介紹一些ZK的用處吧。
ZK有幾個常見的用法:
ZK的資料是以樹狀方式組織,樹的節點叫做znode,可以在znode裡放資料。
由於znode裡的資料是許多成員都關心的,所以ZK有一個notification機制,可以在znode裡的資料更新時通知有事先對該znode註冊watcher的process。
有一種znode叫做ephemeral node,用來監控成員的狀況。這個znode跟建立znode的成員的session狀況是連動的,若session一段時間沒有回報(heartbeat),這個znode節點就會被刪除。因此若有其他成員在此znode上設定watcher,就會在此節點掛掉(即session掛掉時)收到通知。
所有成員都會對master對應的ephemeral node註冊watcher,所以在master失效後,會有成員偵測到而啟動leader election。