1. 程式人生 > >大資料生態之zookeeper(典型應用場景)

大資料生態之zookeeper(典型應用場景)

1. 命名服務

image

       命名服務是分散式系統中較為常見的一類場景,分散式系統中,被命名的實體通常可以是叢集中的機器、提供的服務地址或者遠端物件,通過命名服務,客戶端可以根據指定名字來獲取資源的實體、服務地址和提供者的資訊。Zookeeper可以幫助應用系統通過資源引用的方式來實現對資源的定位和使用。Zookeeper 也可幫助應用系統通過資源引用的方 式來實現對資源的定位和使用,廣義上的命名服務的資源定位都不是真正意義上的實體資源, 在分散式環境中,上層應用僅僅需要一個全域性唯一的名字。Zookeeper 可以實現一套分散式 全域性唯一 ID的分配機制。

 

2. 配置管理

image

    程式總需要配置,如果程式分散到各個機器上,要逐個改變配置就變得困難,現在這些配置全部放入zookeeper中,儲存在zookeeper的某個目錄節點中,然後所有相關的應用程式對這個目錄節點進行監聽,一旦配置資訊發生變化,每一個應用程式就會收到zookeeper的通知,然後從zookeeper獲取新的配置資訊應用到系統中就好。例:以安裝hadoop叢集為例,叢集中的每一個節點的配置檔案統一,在zk管理配置檔案時,用監聽的手段,監聽配置檔案內容是否被修改,配置檔案是否新增配置檔案是否刪除。以便於各個叢集節點中同步配置檔案。

 

3.叢集管理

所謂的叢集管理分兩大塊:是否有機器加入/退出,選舉master

    (1)是否有節點機器加入或者退出

            所有的機器約定在父目錄GroupMembers 下建立臨時目錄節點,然後監聽父目錄節點的子節點變化的資訊。一旦有機器掛掉,該機器與zookeeper的連線斷開,其所建立的臨時節點目錄被刪除。所有其他機器都收到通知:某個兄弟目錄被刪除,於是,所有人都 知道:有兄弟掛了。新機器加入也是類似,所有機器收到通知:新兄弟目錄加入,又多了個新兄弟。

    (2)選舉master

             所有機器建立臨時順序編號目錄節點,每次選取編號最小 的機器作為 master 就好。

                             image

 

4. 分散式鎖

    在zk中鎖有三種:寫鎖、讀鎖、時序鎖。

寫鎖:在zk上建立的一個臨時的無編號的節點。由於是無序編號,在建立時不會自動編號,導致只能客戶端有一個客戶端得到鎖,然後進行寫入。

讀鎖:在zk上建立一個臨時的有編號的節點,這樣即使下次有客戶端加入是同時建立相同的節點時,他也會自動編號,也可以獲得鎖物件,然後對其進行讀取。

時序鎖:在zk上建立的一個臨時的有編號的節點根據編號的大小控制鎖。

 

5.佇列管理

    在zk中有兩種佇列管理方式:

        (1)同步佇列:當一個佇列的成員都聚齊時,這個佇列才可用,否則一直等待所有成員到達。

                   作用:在約定目錄下建立臨時目錄節點,監聽節點數目是否是我們要求的數目。

        (2)先進先出佇列:佇列按照 FIFO 方式進行入隊和出隊操作。

                  作用:和分散式鎖服務中的控制時序場景基本原理一致,入列有編號,出列按編號。