更新時(shí)間:2023-01-04 11:19:36 來(lái)源:動(dòng)力節(jié)點(diǎn) 瀏覽1229次
1.什么是 ZooKeeper?
答:ZooKeeper 是一個(gè)開(kāi)源的分布式應(yīng)用程序協(xié)調(diào)服務(wù),是一個(gè)典型的分布式數(shù)據(jù)一致性解決方案。設(shè)計(jì)目的是將那些復(fù)雜且容易出錯(cuò)的分布式一致性服務(wù)封裝起來(lái),構(gòu)成一個(gè)高效可靠的系統(tǒng),并以一系列簡(jiǎn)單易用的原子操作提供給用戶使用。
2.ZooKeeper 提供了哪些功能?
答:ZooKeeper 主要提供以下功能:
分布式服務(wù)注冊(cè)與訂閱:在分布式環(huán)境中,為了保證高可用性,通常同一個(gè)應(yīng)用或同一個(gè)服務(wù)的提供方都會(huì)部署多份,達(dá)到對(duì)等服務(wù)。而消費(fèi)者就須要在這些對(duì)等的服務(wù)器中選擇一個(gè)來(lái)執(zhí)行相關(guān)的業(yè)務(wù)邏輯,比較典型的服務(wù)注冊(cè)與訂閱,如 Dubbo。
分布式配置中心:發(fā)布與訂閱模型,即所謂的配置中心,顧名思義就是發(fā)布者將數(shù)據(jù)發(fā)布到 ZooKeeper 節(jié)點(diǎn)上,供訂閱者獲取數(shù)據(jù),實(shí)現(xiàn)配置信息的集中式管理和動(dòng)態(tài)更新。
命名服務(wù):在分布式系統(tǒng)中,通過(guò)命名服務(wù)客戶端應(yīng)用能夠根據(jù)指定名字來(lái)獲取資源、服務(wù)地址和提供者等信息。
分布式鎖:這個(gè)主要得益于 ZooKeeper 為我們保證了數(shù)據(jù)的強(qiáng)一致性。
3.ZooKeeper 有幾種搭建模式?
答:ZooKeeper 通常有三種搭建模式:
單機(jī)模式:zoo.cfg 中只配置一個(gè) server.id 就是單機(jī)模式了,此模式一般用在測(cè)試環(huán)境,如果當(dāng)前主機(jī)宕機(jī),那么所有依賴于當(dāng)前 ZooKeeper 服務(wù)工作的其他服務(wù)器都不能進(jìn)行正常工作;
偽分布式模式:在一臺(tái)機(jī)器啟動(dòng)不同端口的 ZooKeeper,配置到 zoo.cfg 中,和單機(jī)模式相同,此模式一般用在測(cè)試環(huán)境;
分布式模式:多臺(tái)機(jī)器各自配置 zoo.cfg 文件,將各自互相加入服務(wù)器列表,上面搭建的集群就是這種完全分布式。
4.ZooKeeper 有哪些特性?
答: ZooKeeper 特性如下:
順序一致性(Sequential Consistency):來(lái)自相同客戶端提交的事務(wù),ZooKeeper 將嚴(yán)格按照其提交順序依次執(zhí)行;
原子性(Atomicity):于 ZooKeeper 集群中提交事務(wù),事務(wù)將“全部完成”或“全部未完成”,不存在“部分完成”;
單一系統(tǒng)鏡像(Single System Image):客戶端連接到 ZooKeeper 集群的任意節(jié)點(diǎn),其獲得的數(shù)據(jù)視圖都是相同的;
可靠性(Reliability):事務(wù)一旦完成,其產(chǎn)生的狀態(tài)變化將永久保留,直到其他事務(wù)進(jìn)行覆蓋;
實(shí)時(shí)性(Timeliness):事務(wù)一旦完成,客戶端將于限定的時(shí)間段內(nèi),獲得最新的數(shù)據(jù)。
5.以下關(guān)于 ZooKeeper 描述錯(cuò)誤的是?
A:所有的節(jié)點(diǎn)都具有穩(wěn)定的存儲(chǔ)能力 B:ZooKeeper 任意節(jié)點(diǎn)之間都能夠進(jìn)行通信(消息發(fā)送 & 接收) C:為了提高性能,ZooKeeper 允許同一份數(shù)據(jù)存在一部分節(jié)點(diǎn)寫成功,另一部分節(jié)點(diǎn)寫失敗 D:ZooKeeper 集群運(yùn)行期間,只要半數(shù)以上節(jié)點(diǎn)存活,ZooKeeper 就能正常服務(wù) 答:C 題目解析:ZooKeeper 不允許同一份數(shù)據(jù)存在一部分節(jié)點(diǎn)寫成功,另一部分節(jié)點(diǎn)寫失敗的情況,這不符合 ZooKeeper“一致性”的原則。
6.ZooKeeper 如何實(shí)現(xiàn)分布式鎖?
答:ZooKeeper 實(shí)現(xiàn)分布式鎖的步驟如下:
客戶端連接 ZooKeeper,并在 /lock 下創(chuàng)建臨時(shí)的且有序的子節(jié)點(diǎn),第一個(gè)客戶端對(duì)應(yīng)的子節(jié)點(diǎn)為 /lock/lock-10000000001,第二個(gè)為 /lock/lock-10000000002,以此類推。
客戶端獲取 /lock 下的子節(jié)點(diǎn)列表,判斷自己創(chuàng)建的子節(jié)點(diǎn)是否為當(dāng)前子節(jié)點(diǎn)列表中序號(hào)最小的子節(jié)點(diǎn),如果是則認(rèn)為獲得鎖,否則監(jiān)聽(tīng)剛好在自己之前一位的子節(jié)點(diǎn)刪除消息,獲得子節(jié)點(diǎn)變更通知后重復(fù)此步驟直至獲得鎖;
執(zhí)行業(yè)務(wù)代碼;
完成業(yè)務(wù)流程后,刪除對(duì)應(yīng)的子節(jié)點(diǎn)釋放鎖。
7.ZooKeeper 如何實(shí)現(xiàn)分布式事務(wù)?
答:ZooKeeper 實(shí)現(xiàn)分布式事務(wù),類似于兩階段提交,總共分為以下 4 步:
客戶端先給 ZooKeeper 節(jié)點(diǎn)發(fā)送寫請(qǐng)求;
ZooKeeper 節(jié)點(diǎn)將寫請(qǐng)求轉(zhuǎn)發(fā)給 Leader 節(jié)點(diǎn),Leader 廣播給集群要求投票,等待確認(rèn);
Leader 收到確認(rèn),統(tǒng)計(jì)投票,票數(shù)過(guò)半則提交事務(wù);
事務(wù)提交成功后,ZooKeeper 節(jié)點(diǎn)告知客戶端。
8.集群中為什么要有主節(jié)點(diǎn)?
答:在分布式環(huán)境中,有些業(yè)務(wù)邏輯只需要集群中的某一臺(tái)機(jī)器進(jìn)行執(zhí)行,其他的機(jī)器可以共享這個(gè)結(jié)果,這樣可以大大減少重復(fù)計(jì)算,提高性能,這就是主節(jié)點(diǎn)存在的意義。
9.Dubbo 是什么?
答:Dubbo 是一款高性能、輕量級(jí)的開(kāi)源 Java RPC 框架,它提供了三大核心能力:面向接口的遠(yuǎn)程方法調(diào)用,智能容錯(cuò)和負(fù)載均衡,以及服務(wù)自動(dòng)注冊(cè)和發(fā)現(xiàn)。
10.Dubbo 有哪些特性?
答:Dubbo 特性如下:
面向接口代理的高性能 RPC 調(diào)用:提供高性能的基于代理的遠(yuǎn)程調(diào)用能力,服務(wù)以接口為粒度,為開(kāi)發(fā)者屏蔽遠(yuǎn)程調(diào)用底層細(xì)節(jié);
智能負(fù)載均衡:內(nèi)置多種負(fù)載均衡策略,智能感知下游節(jié)點(diǎn)健康狀況,顯著減少調(diào)用延遲,提高系統(tǒng)吞吐量;
服務(wù)自動(dòng)注冊(cè)與發(fā)現(xiàn):支持多種注冊(cè)中心服務(wù),服務(wù)實(shí)例上下線實(shí)時(shí)感知;
高度可擴(kuò)展能力:遵循微內(nèi)核+插件的設(shè)計(jì)原則,所有核心能力如 Protocol、Transport、Serialization 被設(shè)計(jì)為擴(kuò)展點(diǎn),平等對(duì)待內(nèi)置實(shí)現(xiàn)和第三方實(shí)現(xiàn);
運(yùn)行期流量調(diào)度:內(nèi)置條件、腳本等路由策略,通過(guò)配置不同的路由規(guī)則,輕松實(shí)現(xiàn)灰度發(fā)布,同機(jī)房?jī)?yōu)先等功能;
可視化的服務(wù)治理與運(yùn)維:提供豐富服務(wù)治理、運(yùn)維工具:隨時(shí)查詢服務(wù)元數(shù)據(jù)、服務(wù)健康狀態(tài)及調(diào)用統(tǒng)計(jì),實(shí)時(shí)下發(fā)路由策略、調(diào)整配置參數(shù)。
以上就是“offer拿到手軟的指南,Java分布式面試題”,你能回答上來(lái)嗎?如果想要了解更多的Java面試題相關(guān)內(nèi)容,可以關(guān)注動(dòng)力節(jié)點(diǎn)Java官網(wǎng)。
相關(guān)閱讀
0基礎(chǔ) 0學(xué)費(fèi) 15天面授
有基礎(chǔ) 直達(dá)就業(yè)
業(yè)余時(shí)間 高薪轉(zhuǎn)行
工作1~3年,加薪神器
工作3~5年,晉升架構(gòu)
提交申請(qǐng)后,顧問(wèn)老師會(huì)電話與您溝通安排學(xué)習(xí)
初級(jí) 202925
初級(jí) 203221
初級(jí) 202629
初級(jí) 203743