Zookeeper面試試題
在現(xiàn)實的學(xué)習(xí)、工作中,我們都不可避免地要接觸到試題,借助試題可以檢測考試者對某方面知識或技能的掌握程度。那么一般好的試題都具備什么特點呢?以下是小編整理的Zookeeper面試試題,希望對大家有所幫助。
一、談下你對Zookeeper的認識?
ZooKeeper是一個分布式的,開放源碼的分布式應(yīng)用程序協(xié)調(diào)服務(wù)。它是一個為分布式應(yīng)用提供一致性服務(wù)的軟件,提供的.功能包括:配置維護、域名服務(wù)、分布式同步、組服務(wù)等。
ZooKeeper的目標(biāo)就是封裝好復(fù)雜易出錯的關(guān)鍵服務(wù),將簡單易用的接口和性能高效、功能穩(wěn)定的系統(tǒng)提供給用戶。
二、Zookeeper都有哪些功能?
1、集群管理:監(jiān)控節(jié)點存活狀態(tài)、運行請求等;
2、主節(jié)點選舉:主節(jié)點掛掉了之后可以從備用的節(jié)點開始新一輪選主,主節(jié)點選舉說的就是這個選舉的過程,使用Zookeeper可以協(xié)助完成這個過程;
3、分布式鎖:Zookeeper提供兩種鎖:獨占鎖、共享鎖。獨占鎖即一次只能有一個線程使用資源,共享鎖是讀鎖共享,讀寫互斥,即可以有多線線程同時讀同一個資源,如果要使用寫鎖也只能有一個線程使用。Zookeeper可以對分布式鎖進行控制。
4、命名服務(wù):在分布式系統(tǒng)中,通過使用命名服務(wù),客戶端應(yīng)用能夠根據(jù)指定名字來獲取資源或服務(wù)的地址,提供者等信息。
三、談下你對ZAB協(xié)議的了解?
ZAB協(xié)議是為分布式協(xié)調(diào)服務(wù)Zookeeper專門設(shè)計的一種支持崩潰恢復(fù)的原子廣播協(xié)議。ZAB協(xié)議包括兩種基本的模式:崩潰恢復(fù)和消息廣播。
當(dāng)整個Zookeeper集群剛剛啟動或者Leader服務(wù)器宕機、重啟或者網(wǎng)絡(luò)故障導(dǎo)致不存在過半的服務(wù)器與Leader服務(wù)器保持正常通信時,所有服務(wù)器進入崩潰恢復(fù)模式,首先選舉產(chǎn)生新的Leader服務(wù)器,然后集群中Follower服務(wù)器開始與新的Leader服務(wù)器進行數(shù)據(jù)同步。
當(dāng)集群中超過半數(shù)機器與該Leader服務(wù)器完成數(shù)據(jù)同步之后,退出恢復(fù)模式進入消息廣播模式,Leader服務(wù)器開始接收客戶端的事務(wù)請求生成事物提案來進行事務(wù)請求處理。
四、Zookeeper怎么保證主從節(jié)點的狀態(tài)同步?
Zookeeper的核心是原子廣播機制,這個機制保證了各個server之間的同步。實現(xiàn)這個機制的協(xié)議叫做Zab協(xié)議。Zab協(xié)議有兩種模式,它們分別是恢復(fù)模式和廣播模式。
1、恢復(fù)模式
當(dāng)服務(wù)啟動或者在領(lǐng)導(dǎo)者崩潰后,Zab就進入了恢復(fù)模式,當(dāng)領(lǐng)導(dǎo)者被選舉出來,且大多數(shù)server完成了和leader的狀態(tài)同步以后,恢復(fù)模式就結(jié)束了。狀態(tài)同步保證了leader和server具有相同的系統(tǒng)狀態(tài)。
2、廣播模式
一旦leader已經(jīng)和多數(shù)的follower進行了狀態(tài)同步后,它就可以開始廣播消息了,即進入廣播狀態(tài)。這時候當(dāng)一個server加入ZooKeeper服務(wù)中,它會在恢復(fù)模式下啟動,發(fā)現(xiàn)leader,并和leader進行狀態(tài)同步。
待到同步結(jié)束,它也參與消息廣播。ZooKeeper服務(wù)一直維持在Broadcast狀態(tài),直到leader崩潰了或者leader失去了大部分的followers支持。
五、Zookeeper有幾種部署模式?
Zookeeper有三種部署模式:
1、單機部署:一臺集群上運行;
2、集群部署:多臺集群運行;
3、偽集群部署:一臺集群啟動多個Zookeeper實例運行。
六、說一下Zookeeper的通知機制?
client端會對某個znode建立一個watcher事件,當(dāng)該znode發(fā)生變化時,這些client會收到zk的通知,然后client可以根據(jù)znode變化來做出業(yè)務(wù)上的改變等。