Zookeeper 介紹及典型應用場景

衣舞晨風發表於2017-03-26

一、ZooKeeper是什麼?

ZooKeeper是原始碼開放的分散式協調服務,由雅虎建立,是Google Chubby的開源實現。ZooKeeper是一個高效能的分散式資料一致性解決方案,它將那些複雜的、容易出錯的分散式一致性服務封裝起來,構成一個高效可靠的原語集,並提供一系列簡單易用的介面給使用者使用

ZooKeeper是分散式協調服務,它能解決分散式資料一致性問題
A:順序一致性 B:原子性 C:單一檢視 D:可靠性 E:實時性

二、Zookeeper的典型應用場景?

1.資料釋出/訂閱

資料釋出/訂閱 顧名思義就是一方把資料釋出出來,另一方通過某種手段可以得到這些資料。
通常資料訂閱有兩種方式:推模式和拉模式,推模式一般是伺服器主動向客戶端推送資訊, 拉模式是客戶端主動去伺服器獲取資料(通常是採用定時輪詢的方式),ZK採用兩種方式相結合,釋出者將資料釋出到ZK叢集節點上,訂閱者通過一定的方法告訴伺服器,我對哪個節點的資料感興趣,那伺服器在這些節點的資料發生變化時,就通知客戶端,客戶端得到通知後可以去伺服器獲取資料資訊。

2.負載均衡

這裡寫圖片描述
步驟:
1、首先DB在啟動的時候先把自己在ZK上註冊成一個臨時節點,ZK的節點後面我們會講到有兩種,一種是永久節點,一類是臨時節點臨時節點在伺服器出現問題的時候,節點會自動的從ZK上刪除,那麼這樣ZK上的伺服器列表就是最新的可用的列表。
2、客戶端在需要讀寫資料庫的時候首先它去ZooKeeper得到所有可用的DB的連線資訊(一張列表)。
3、客戶端隨機選擇一個與之建立連線。
4、當客戶端發現連線不可用的時候可再次從ZK上獲取可用的DB連線資訊,當然也可以在剛獲取的那個列表裡移除掉不可用的連線後再隨機選擇一個DB與之連線。

3.命名服務

顧名思義,就是提供名稱的服務,例如資料庫表格ID,一般用得比較多的有兩種ID,一種是自動增長的ID,一種是UUID(9291d71a-0354-4d8e-acd8-64f7393c64ae),兩種ID各自都有缺陷,自動增長的ID侷限在單庫單表中使用,不能在分散式中使用,UUID可以在分散式中使用但是由於ID沒有規律難於理解,我們可以借用ZK來生成一個順序增長的,可以在叢集環境下使用的,命名易於理解的ID。

4.分散式協調/通知

心跳檢測
在分散式系統中,我們常常需要知道某個機器是否可用,傳統的開發中,可以通過Ping某個主機來實現,Ping得通說明對方是可用的,相反是不可用的,ZK 中我們讓所有的機其都註冊一個臨時節點,我們判斷一個機器是否可用,我們只需要判斷這個節點在ZK中是否存在就可以了,不需要直接去連線需要檢查的機器 ,降低系統的複雜度。

作者:jiankunking 出處:http://blog.csdn.net/jiankunking

相關文章