Zookeeper、Dubbo面試題總結
【zookeeper面試】
ZooKeeper是一個分散式的,開放原始碼的分散式應用程式協調服務,是Google的Chubby一個開源的實現,它是叢集的管理者,監視著叢集中各個節點的狀態根據節點提交的反饋進行下一步合理操作。最終,將簡單易用的介面和效能高效、功能穩定的系統提供給使用者。
1、zookeeper是一個開源的分散式協調服務框架。
2、應用場景:分散式通知/協調、負載均衡、配置中心、分散式鎖、分散式佇列等。
3、使用ZAB協議。
4、Paxos演算法。
5、選舉演算法及流程。
6、節點型別:持久節點、持久順序節點、臨時節點、臨時順序節點。
7、不是永久的,一次性的,需要藉助第三方工具實現重複註冊。
8、部署模式:單機模式、偽叢集模式、叢集模式。
9、叢集角色:leader、foller、observer。
10、叢集規則為2N+1臺,N>0,即3臺。
11、叢集需要一半以上的機器可用,所以,3臺掛掉1臺還能工作,2臺不能。
12、3.5版本開始支援動態擴容。
13、java客戶端:zk自帶的zkclient及Apache開源的Curator。
14、chubby是google的,完全實現paxos演算法,不開源。zookeeper是chubby的開源實現,使用zab協議,paxos演算法的變種。
15、常用命令:ls get set create delete等。
【Dubbo面試題】
Spring Eureka 從開源轉變為閉源,Consul 正在崛起,而Dubbo又開始重新更新。目前市場上仍有不少公司使用dubbo我們也需要繼續學習。
1、預設使用的是什麼通訊框架,還有別的選擇嗎?
2、服務呼叫是阻塞的嗎?
3、一般使用什麼註冊中心?還有別的選擇嗎?
4、預設使用什麼序列化框架,你知道的還有哪些?
5、服務提供者能實現失效踢出是什麼原理?
6、服務上線怎麼不影響舊版本?
7、如何解決服務呼叫鏈過長的問題?
8、說說核心的配置有哪些?
9、dubbo推薦用什麼協議?
10、同一個服務多個註冊的情況下可以直連某一個服務嗎?
11、畫一畫服務註冊與發現的流程圖
12、叢集容錯怎麼做?
13、在使用過程中都遇到了些什麼問題?
14、dubbo和dubbox之間的區別?
15、你還了解別的分散式框架嗎?
----------------------------------------------------------------------------------------------------------------------
1、預設也推薦使用netty框架,還有mina。
2、預設是阻塞的,可以非同步呼叫,沒有返回值的可以這麼做。
3、推薦使用zookeeper註冊中心,還有redis等不推薦。
4、預設使用Hessian序列化,還有Duddo、FastJson、Java自帶序列化。
5、服務失效踢出基於zookeeper的臨時節點原理。
6、採用多版本開發,不影響舊版本。
7、可以結合zipkin實現分散式服務追蹤。
8、核心配置有 dubbo:service/ dubbo:reference/ dubbo:protocol/ dubbo:registry/ dubbo:application/ dubbo:provider/ dubbo:consumer/ dubbo:method/
9、預設使用dubbo協議。
10、可以直連,修改配置即可,也可以通過telnet直接某個服務。
11、讀操作建議使用Failover失敗自動切換,預設重試兩次其他伺服器。寫操作建議使用Failfast快速失敗,發一次呼叫失敗就立即報錯。
12、dubbox是噹噹網基於dubbo上做了一些擴充套件,如加了服務可restful呼叫,更新了開源元件等。
16、別的還有spring的spring cloud,facebook的thrift,twitter的finagle等。