Kafka
152.kafka 可以脫離 zookeeper 單獨使用嗎?為什么?
kafka 不能脫離 zookeeper 單獨使用,因為 kafka 使用 zookeeper 管理和協調 kafka 的節點服務器。
153.kafka 有幾種數據保留的策略?
kafka 有兩種數據保存策略:
1.按照過期時間保留。
2.按照存儲的消息大小保留。
154.kafka 同時設置了 7 天和 10G 清除數據,到第五天的時候消息達到了 10G,這個時候 kafka 將如何處理?
這個時候 kafka 會執行數據清除工作,時間和大小不論那個滿足條件,都會清空數據。
155.什么情況會導致 kafka 運行變慢?
cpu 性能瓶頸
磁盤讀寫瓶頸
網絡瓶頸
156.使用 kafka 集群需要注意什么?
集群的數量不是越多越好,最好不要超過 7 個,
因為節點越多,消息復制需要的時間就越長,整個群組的吞吐量就越低。
集群數量最好是單數,因為超過一半故障集群就不能用了,設置為單數容錯率更高。
Zookeeper
157.zookeeper 是什么?
zookeeper 是一個分布式的,開放源碼的分布式應用程序協調服務,是 google chubby 的開源實現,是 hadoop 和 hbase 的重要組件。它是一個為分布式應用提供一致性服務的軟件,提供的功能包括:配置維護、域名服務、分布式同步、組服務等。
158.zookeeper 都有哪些功能?
集群管理:監控節點存活狀態、運行請求等。
主節點選舉:主節點掛掉了之后可以從備用的節點開始新一輪選主,主節點選舉說的就是這個選舉的過程,使用 zookeeper 可以協助完成這個過程。
分布式鎖:zookeeper 提供兩種鎖:獨占鎖、共享鎖。獨占鎖即一次只能有一個線程使用資源,共享鎖是讀鎖共享,讀寫互斥,即可以有多線線程同時讀同一個資源,如果要使用寫鎖也只能有一個線程使用。zookeeper可以對分布式鎖進行控制。
命名服務:在分布式系統中,通過使用命名服務,客戶端應用能夠根據指定名字來獲取資源或服務的地址,提供者等信息。
159.zookeeper 有幾種部署模式?
zookeeper 有三種部署模式:
單機部署:一台集群上運行;
集群部署:多台集群運行;
偽集群部署:一台集群啟動多個 zookeeper 實例運行。
160.zookeeper 怎么保證主從節點的狀態同步?
zookeeper 的核心是原子廣播,這個機制保證了各個 server 之間的同步。實現這個機制的協議叫做 zab 協議。 zab 協議有兩種模式,分別是恢復模式(選主)和廣播模式(同步)。當服務啟動或者在領導者崩潰后,zab 就進入了恢復模式,當領導者被選舉出來,且大多數 server 完成了和 leader 的狀態同步以后,恢復模式就結束了。狀態同步保證了 leader 和 server 具有相同的系統狀態。
161.集群中為什么要有主節點?
在分布式環境中,有些業務邏輯只需要集群中的某一台機器進行執行,其他的機器可以共享這個結果,這樣可以大大減少重復計算,提高性能,所以就需要主節點。
162.集群中有 3 台服務器,其中一個節點宕機,這個時候 zookeeper 還可以使用嗎?
可以繼續使用,單數服務器只要沒超過一半的服務器宕機就可以繼續使用。
163.說一下 zookeeper 的通知機制?
客戶端端會對某個 znode 建立一個 watcher 事件,當該 znode 發生變化時,這些客戶端會收到 zookeeper 的通知,然后客戶端可以根據 znode 變化來做出業務上的改變。