一、zookeeper是什麼?
zookeeper是一個分佈式的,開放源碼的分佈式應用程序協調服務,是google chubbynode
的開源實現,是hadoop和hbase的重要組件。它是一個爲分佈式應用提供一致性服務的軟件,提供的功能包括:配置維護、域名服務、分佈式同步、組服務等。服務器
二、zookeeper都有哪些功能?
1)集羣管理:控制節點存活狀態、運行請求等;分佈式
2)主節點選舉:主節點掛掉了以後能夠從備用的節點開始新一輪選主,主節點選舉說的就是這個選舉的過程,使用zookeeper能夠協助完成這個過程;oop
3)分佈式鎖:zookeeper提供了兩種鎖:獨佔鎖、共享鎖。獨佔鎖即一次只能一個線程使用資源,共享鎖是讀鎖共享,讀寫互斥,便可以有多線線程同時讀同一個資源,若是要使用寫鎖也只能有一個線程使用。zookeeper能夠對分佈式鎖進行控制。性能
4)命名服務:在分佈式系統中,經過使用命名服務,客戶端應用可以根據指定名字來獲取資源或服務的地址,提供者等信息。google
三、zookeeper有三種部署模式:
1)單機部署:一臺集羣上運行;spa
2)集羣部署:多臺集羣運行;線程
3)僞集羣部署:一臺集羣啓動多個zookeeper實例運行。server
四、zookeeper怎麼保證主從節點的狀態同步?
zookeeper的核心是原子廣播,這個機制保證了各個server之間的同步。實現這個機制的協議叫作zab協議。zab協議有兩種模式,分別是恢復模式(選主)和廣播模式(同步)。當服務啓動或者在領導者崩潰後,zab就進入了恢復模式,當領導者被選舉出來,且大多數server完成了和leader的狀態同步之後,回覆模式就結束了。狀態同步保證了leader和server具備相同的系統狀態。事件
五、集羣中爲何要有主節點?
在分佈式環境中,有些業務邏輯只須要集羣中的某一臺機器進行執行,其餘的機器能夠共享這個結果,這樣能夠大大減小重複計算,提供性能,因此就須要主節點。
六、集羣中有3臺服務器,其中一個節點宕機,這個時候zookeeper還可使用嗎?
能夠繼續使用,單數服務器只要沒超過一半的服務器宕機就能夠繼續使用。
七、說一下zookeeper的通知機制?
客戶端端會對某個znode創建一個watcher事件,當該znode發生變化時,這些客戶端會收到zookeeper的通知,而後客戶端能夠根據znode變化來作出業務上的改變。