zookeeper面試題


ZooKeeper是什么?提供了什么

是一個基於觀察者模式設計的分布式服務管理框架,它負責存儲和管理大家都關心的數據,然后接受觀察者的注冊,一旦這些數據的狀態發生變化,
Zookeeper就將負責通知已經在Zookeeper上注冊的那些觀察者做出相應的反應,從而實現集群中類似Master/Slave管理模式

 Zookeeper=文件系統(可以在zk上存儲數據)+通知機制

Zookeeper文件系統

Zookeeper提供一個多層級的節點命名空間(節點稱為znode)。與文件系統不同的是,這些節點都可以設置關聯的數據,而文件系統中只有文件節點可以存放數據而目錄節點不行。
Zookeeper為了保證高吞吐和低延遲,在內存中維護了這個樹狀的目錄結構,這種特性使得Zookeeper不能用於存放大量的數據,每個節點的存放數據上限為1M。

Zookeeper選舉機制

半數機制:集群中半數以上機器存活,集群可用,否則集群處於癱瘓狀態不可用。所以zookeeper適合裝在奇數台機器上;
使用奇數個即可,效果和偶數個一樣,避免資源浪費

四種類型的數據節點 Znode

PERSISTENT-持久節點
除非手動刪除,否則節點一直存在於Zookeeper上
EPHEMERAL-臨時節點
臨時節點的生命周期與客戶端會話綁定,一旦客戶端會話失效(客戶端與zookeeper連接斷開不一定會話失效),那么這個客戶端創建的所有臨時節點都會被移除。
PERSISTENT_SEQUENTIAL-持久順序節點
基本特性同持久節點,只是增加了順序屬性,節點名后邊會追加一個由父節點維護的自增整型數字。
EPHEMERAL_SEQUENTIAL-臨時順序節點
基本特性同臨時節點,增加了順序屬性,節點名后邊會追加一個由父節點維護的自增整型數字。

Zookeeper Watcher 機制

1)首先要有一個main()線程
2)在main線程中創建Zookeeper客戶端,這時就會創建兩個線程,一個負責網絡連接通信(connect),一個負責監聽(listener)。
3)通過connect線程將注冊的監聽事件發送給Zookeeper。
4)在Zookeeper的注冊監聽器列表中將注冊的監聽事件添加到列表中。
5)Zookeeper監聽到有數據或路徑變化,就會將這個消息發送給listener線程。
6)listener線程內部調用了process()方法。

說幾個zookeeper常用的命令。

ls create ls2 delete rmr get set stat

chubby是什么,和zookeeper比你怎么看

chubby是google的,完全實現paxos算法,不開源。zookeeper是chubby的開源實現,使用zab協議,paxos算法的變種。

ZAB和Paxos算法的聯系與區別?

相同點:
兩者都存在一個類似於Leader進程的角色,由其負責協調多個Follower進程的運行
Leader進程都會等待超過半數的Follower做出正確的反饋后,才會將一個提案進行提交
ZAB協議中,每個Proposal中都包含一個 epoch 值來代表當前的Leader周期,Paxos中名字為Ballot
不同點:
ZAB用來構建高可用的分布式數據主備系統(Zookeeper),Paxos是用來構建分布式一致性狀態機系統。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM