21. 集群最少要幾臺機器,集群規則是怎樣的?
集群規則為 2N+1 臺,N>0,即 3 臺。
22. 集群支持動態添加機器嗎?
其實就是水平擴容了,Zookeeper 在這方面不太好。兩種方式:第 62 頁 共 485 頁全部重啟:關閉所有 Zookeeper 服務,修改配置之后啟動。不影響之前客戶端的會話。
逐個重啟:在過半存活即可用的原則下,一臺機器重啟不影響整個集群對外提供服務。這是比較常用的方式。3.5 版本開始支持動態擴容。
23. Zookeeper 對節點的 watch監聽通知是永久的嗎?為什么
不是永久的?
不是。官方聲明:一個 Watch 事件是一個一次性的觸發器,當被設置了 Watch的數據發生了改變的時候,則服務器將這個改變發送給設置了 Watch 的客戶端,以便通知它們。
為什么不是永久的,舉個例子,如果服務端變動頻繁,而監聽的客戶端很多情況下,每次變動都要通知到所有的客戶端,給網絡和服務器造成很大壓力。
一般是客戶端執行 getData(“/節點 A”,true),如果節點 A 發生了變更或刪除,客戶端會得到它的 watch 事件,但是在之后節點 A 又發生了變更,而客戶端又沒有設置 watch 事件,就不再給客戶端發送。
在實際應用中,很多情況下,我們的客戶端不需要知道服務端的每一次變動,我只要最新的數據即可。
24. Zookeeper 的 java 客戶端都有哪些?
java 客戶端:zk 自帶的 zkclient 及 Apache 開源的 Curator。
25. chubby 是什么,和 zookeeper 比你怎么看?
chubby 是 google 的,完全實現 paxos 算法,不開源。zookeeper 是 chubby的開源實現,使用 zab 協議,paxos 算法的變種。
26. 說幾個 zookeeper 常用的命令。
常用命令:ls get set create delete 等。
27. ZAB 和 Paxos 算法的聯系與區別?
相同點:
1、兩者都存在一個類似于 Leader 進程的角色,由其負責協調多個 Follower 進程的運行
2、Leader 進程都會等待超過半數的 Follower 做出正確的反饋后,才會將一個提案進行提交
3、ZAB 協議中,每個 Proposal 中都包含一個 epoch 值來代表當前的 Leader周期,Paxos 中名字為 Ballot
不同點:
ZAB 用來構建高可用的分布式數據主備系統(Zookeeper),Paxos 是用來構建分布式一致性狀態機系統。
28. Zookeeper 的典型應用場景
Zookeeper 是一個典型的發布/訂閱模式的分布式數據管理與協調框架,開發人員可以使用它來進行分布式數據的發布和訂閱。
通過對 Zookeeper 中豐富的數據節點進行交叉使用,配合 Watcher 事件通知機制,可以非常方便的構建一系列分布式應用中年都會涉及的核心功能,如:
1、數據發布/訂閱
2、負載均衡
3、命名服務
4、分布式協調/通知
5、集群管理
6、Master 選舉
7、分布式鎖
8、分布式隊列