157 zookeeper 是什么?
zookeeper 是一個分布式的,開放源碼的分布式應(yīng)用程序協(xié)調(diào)服務(wù)未斑,是 google chubby 的開源實現(xiàn),是 hadoop 和 hbase 的重要組件币绩。它是一個為分布式應(yīng)用提供一致性服務(wù)的軟件蜡秽,提供的功能包括:配置維護、域名服務(wù)缆镣、分布式同步芽突、組服務(wù)等。
zookeeper
158. zookeeper 都有哪些功能董瞻?
集群管理:監(jiān)控節(jié)點存活狀態(tài)寞蚌、運行請求等。
主節(jié)點選舉:主節(jié)點掛掉了之后可以從備用的節(jié)點開始新一輪選主钠糊,主節(jié)點選舉說的就是這個選舉的過程挟秤,使用 zookeeper 可以協(xié)助完成這個過程。
分布式鎖:zookeeper 提供兩種鎖:獨占鎖抄伍、共享鎖艘刚。獨占鎖即一次只能有一個線程使用資源,共享鎖是讀鎖共享截珍,讀寫互斥攀甚,即可以有多線線程同時讀同一個資源,如果要使用寫鎖也只能有一個線程使用岗喉。zookeeper可以對分布式鎖進行控制秋度。
命名服務(wù):在分布式系統(tǒng)中,通過使用命名服務(wù)钱床,客戶端應(yīng)用能夠根據(jù)指定名字來獲取資源或服務(wù)的地址荚斯,提供者等信息。
159. zookeeper 有幾種部署模式?
zookeeper 有三種部署模式:
單機部署:一臺集群上運行鲸拥;
集群部署:多臺集群運行拐格;
偽集群部署:一臺集群啟動多個 zookeeper 實例運行。
160. zookeeper 怎么保證主從節(jié)點的狀態(tài)同步刑赶?
zookeeper 的核心是原子廣播捏浊,這個機制保證了各個 server 之間的同步。實現(xiàn)這個機制的協(xié)議叫做 zab 協(xié)議撞叨。 zab 協(xié)議有兩種模式金踪,分別是恢復(fù)模式(選主)和廣播模式(同步)。當服務(wù)啟動或者在領(lǐng)導(dǎo)者崩潰后牵敷,zab 就進入了恢復(fù)模式胡岔,當領(lǐng)導(dǎo)者被選舉出來,且大多數(shù) server 完成了和 leader 的狀態(tài)同步以后枷餐,恢復(fù)模式就結(jié)束了靶瘸。狀態(tài)同步保證了 leader 和 server 具有相同的系統(tǒng)狀態(tài)。
161. 集群中為什么要有主節(jié)點毛肋?
在分布式環(huán)境中怨咪,有些業(yè)務(wù)邏輯只需要集群中的某一臺機器進行執(zhí)行,其他的機器可以共享這個結(jié)果润匙,這樣可以大大減少重復(fù)計算诗眨,提高性能,所以就需要主節(jié)點孕讳。
162. 集群中有 3 臺服務(wù)器匠楚,其中一個節(jié)點宕機,這個時候 zookeeper 還可以使用嗎厂财?
可以繼續(xù)使用芋簿,單數(shù)服務(wù)器只要沒超過一半的服務(wù)器宕機就可以繼續(xù)使用。
163. 說一下 zookeeper 的通知機制璃饱?
客戶端端會對某個 znode 建立一個 watcher 事件与斤,當該 znode 發(fā)生變化時,這些客戶端會收到 zookeeper 的通知帜平,然后客戶端可以根據(jù) znode 變化來做出業(yè)務(wù)上的改變。