05.26 大數據並不難,hadoop基礎工具zookeeper

隨著互聯網技術的發展,數據的積累日益增多,從而導致人們對數據處理的速度和存儲的能力越來越高。簡單的依靠高性能主機並不能滿足需求,單機性能越高意味著成本越大,因此人們必須去尋找一種大型分佈式計算的方式,要實現大型分佈式計算,首先就要解決大型服務器之間的通訊和協調問題,而zookeeper,正是為此而生的。

大數據並不難,hadoop基礎工具zookeeper

概念:

Zookeeper是一個源代碼開發的分佈式協調服務,由雅虎創建,是GoogleChubby所開源實現的,它將那些複雜的、容易出錯的分佈式一致性服務封裝起來,構成一個高效可靠的原語集,並提供一系列簡單易用的接口給用戶使用。

優勢:

Zookeeper服務在集群上具有極大優勢,具體體現下如下6點:

A順序一致性

(1)從一個客戶端發起一個事務請求,最終會嚴格按照發起的順序被應用到Zookeeper中

B原子性

(1)所有事務請求的處理結果,在整個集群的所有機器上應用情況是一致的。

C單一視圖

(1)無論客戶端,鏈接到zookeeper集群中哪個服務上,看到的服務端數據都是一樣的。

D可靠性

(1)一旦服務端完成了客戶端一個事務,並響應了客戶端,對服務端的狀態改變是會保存下來的。除非另一個事務對它做了修改。

E實時性

(1)zookeeper保證在一段時間內客戶端最終一定能從服務端讀取最新的數據狀態

F高性能

(1)吞吐量很大,一個3臺機子的zookeeper集群可以達到12-13萬的qps

應用場景

大數據並不難,hadoop基礎工具zookeeper

1、數據發佈/訂閱

數據發佈/訂閱 顧名思義就是一方把數據發佈出來,另一方通過某種手段可以得到這些數據

數據訂閱通常有兩種方式:推模式和拉模式,推模式一般是服務器主動向客戶端推送信息,拉模式是客戶端主動去服務器獲取數據(通常是採用定時輪詢方式),而zookeeper是兩種方式相結合,發佈者將數據發佈到zookeeper集群節點上,訂閱者通過一定的方法告訴服務器,我對哪個節點的數據感興趣,那服務器在這些節點的數據發生變化時,就通知客戶端,客戶端得到通知後可以去服務器獲取數據信息

2、負載均衡

大數據並不難,hadoop基礎工具zookeeper

首先、DB在啟動的時候先把自己在zookeeper上註冊成一個臨時節點,zookeeper的節點後面我們會講到有兩種,一種是永久節點,一種是臨時節點。臨時節點在服務器出現的時候,節點會自動的從zookeeper上刪除,那麼這樣zookeeper上的服務器列表就是最新的可用列表

客戶端在需要讀寫數據庫的時候,首先它去zookeeper得到所有可用DB的鏈接信息(一張列表)

客戶端歲建徐澤一個與之建立連接

當客戶發現連接不可用的時候,可再從zookeeper上獲取可用的DB連接信息,當然也可以在剛獲取的那個列表裡移除掉不可用的連接後再隨機選擇一個DB與之連接

3、命名服務

顧名思義,就是提供名稱的服務,例如數據庫列表的ID,一種是自增的ID,另一種是UUID(898das7da-0231-4shd-ssc8-jels2343js2312),兩種ID各自都有缺陷,自動增長的ID侷限在單庫單表中使用,不能在分佈式中使用,UUID可以在分佈式中使用但是沒有規律難於理解。因此可以借用zookeeper來生成一個順序增長的、便於理解的、可以在集群使用的ID。

4、分佈式協調/通知

在分佈式系統中,節點很容易掛掉(不可使用)。因此經常需要知道某個節點是否掛掉,傳統做法是ping掛掉主機的IP地址,能ping通則說明正常。在zookeeper中,所有的機器都會註冊一個臨時節點,因此只需要判斷這個節點是否存在,就能判斷服務器是否掛掉了。


分享到:


相關文章: