bat面試題匯總zookeeper面試專題及答案_第1頁
bat面試題匯總zookeeper面試專題及答案_第2頁
bat面試題匯總zookeeper面試專題及答案_第3頁
免費預(yù)覽已結(jié)束,剩余6頁可下載查看

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

1、 UU1KKVKX 是什么?UU1KKVKX 是一個分布式的,開放源碼的分布式應(yīng)用程序協(xié)調(diào)服務(wù),是的 )NHH_ 一個開源的實現(xiàn),它是集群的管理者,監(jiān)視著集群中各個節(jié)點的狀態(tài)根據(jù)節(jié)點提交的反饋進行下一步合理操作。最終,將簡單易用的接口和性能高效、功能穩(wěn)定的系統(tǒng)提供給用戶??蛻舳说淖x請求可以被集群中的任意一臺機器處理,如果讀請求在節(jié)點上了器,這個器也是由所連接的 UUQKKVKX 機器來處理。對于寫請求,這些請求會同時發(fā)給其他 zookeeper 機器并且達成一致后,請求才會返回成功。因此,隨著 zookeeper 的集群機器增多,讀請求的吞吐會提高但是寫請求的吞吐會下降。有序性是 UUQKKV

2、KX 中非常重要的一個特性,所有的更新都是全局有序的,每個更新都有一個唯一的時間戳,這個時間戳稱為 zxid(Zookeeper Tranion Id)。而讀請求只會相對于更新有序,也就是讀請求的返回結(jié)果中會帶有這個 zookeeper的 zxid。 UU1KKVKX 、文件系統(tǒng)提供了什么? 、通知機制 UUQKKVKX文件系統(tǒng)UUQKKVKX 提供一個多層級的節(jié)點命名空間(節(jié)點稱為 TUJK)。與文件系統(tǒng)不同的是,這些節(jié)點都可以設(shè)置關(guān)聯(lián)的數(shù)據(jù),而文件系統(tǒng)中只有文件節(jié)點可以存放數(shù)據(jù)而目錄節(jié)點。UUQKKVKX 為了保證高吞吐和低延遲,在內(nèi)存中了這個樹狀的目錄結(jié)構(gòu),這種特性使得 UUQKKVKX

3、 不能用于存放大量的數(shù)據(jù),每個節(jié)點的存放數(shù)據(jù)上限為 1M。 四種類型的 TUJK 、PERSISTENT-持久化目錄節(jié)點客戶端與 UUQKKVKX 斷開連接后,該節(jié)點依舊存在 、PERSISTENT_SEQUENTIAL-持久化順序目錄節(jié)點客戶端與 UUQKKVKX 斷開連接后,該節(jié)點依舊存在,只是 UUQKKVKX 給該節(jié)點名稱進行順序 、EPHEMERAL-臨時目錄節(jié)點客戶端與 UUQKKVKX 斷開連接后,該節(jié)點被刪除 、EPHEMERAL_SEQUENTIAL-臨時順序目錄節(jié)點客戶端與 UUQKKVKX 斷開連接后,該節(jié)點被刪除,只是 UUQKKVKX 給該節(jié)點名稱進行順序 UUQKK

4、VKX 通知機制I TZ 端會對某個 TUJK 建立一個 watcher 事件,當(dāng)該 TUJK 發(fā)生變化時,這些 I知,TZ 會收到 Q 的通然后 I TZ 可以根據(jù) TUJK 變化來做出業(yè)務(wù)上的改變等。 UUQKKVKX 做了什么? 、命名服務(wù) 、配置管理 、集群管理 、分布式鎖 、隊列管理 Q名服務(wù)(文件系統(tǒng))命名服務(wù)是指通過指定的名字來獲取資源或者服務(wù)的地址,利用 Q 創(chuàng)建一個全局的路徑,即是唯一的路徑,這個路徑就可以作為一個名字,指向集群中的集群,提供的服務(wù)的地址,或者一個的對象等等。 Q 的配置管理(文件系統(tǒng)、通知機制)程序分布式的部署在不同的機器上,將程序的配置信息放在 Q 的 z

5、node 下,當(dāng)有配置發(fā)生改變時,也就是TUJK 發(fā)生變化時,可以通過改變 Q 中某個目錄節(jié)點的內(nèi)容,利用 watcher 通知給各個客戶端,從而更改配置。 UUQKKVKX 集群管理(文件系統(tǒng)、通知機制)所謂集群管理無在乎兩點:是否有機器退出和加入、master。對于第一點,所有機器約定在父目錄下創(chuàng)建臨時目錄節(jié)點,然后父目錄節(jié)點的子節(jié)點變化消息。一旦有機器掛掉,該機器與 UUQKKVKX 的連接斷開,其所創(chuàng)建的臨時目錄節(jié)點被刪除,所有其他機器都收到通知:某個兄弟目錄被刪除,于是,所有人都知道:它上船了。新機器加入也是類似,所有機器收到通知:新兄弟目錄加入,NOMNIUTZ 又有了,對于第二點

6、,稍微改變最小的機器作為 master 就好。一下,所有機器創(chuàng)建臨時順序目錄節(jié)點,每次選取 UUQKKVKX 分布式鎖(文件系統(tǒng)、通知機制)有了 UUQKKVKX 的一致性文件系統(tǒng),鎖變得容易。鎖服務(wù)可以分為兩類,一個是保持獨占,另一個是控制時序。UUQKKVKX 上的一個 znode 看作是一把鎖,通過 IXKGZKTUJK 的方式來實現(xiàn)。所有客對于第一類,戶端都去創(chuàng)建 JOYZXOHZKERUIQ 節(jié)點,最終成功創(chuàng)建的那個客戶端也即擁有了這把鎖。用完刪除掉自己創(chuàng)建的JOYZXOHZKERUIQ 節(jié)點就出鎖。對于第二類, JOYZXOHZKERUIQ 已經(jīng)預(yù)先存在,所有客戶端在它下面創(chuàng)建臨時

7、順序目錄節(jié)點,和選SGYZKX 一樣,最小的獲得鎖,用完刪除,依次方便。 獲取分布式鎖的流程在獲取分布式鎖的時候在 RUIQKX 節(jié)點下創(chuàng)建臨時順序節(jié)點,鎖的時候刪除該臨時節(jié)點。客戶端調(diào)用IXKGZK4UJK 方法在 RUIQKX 下創(chuàng)建臨時順序節(jié)點,然后調(diào)用 MKZ)NORJXKT “RUIQKX” 來獲取 RUIQKX 下面的所有子節(jié)點,注意此時不用設(shè)置任何 =GZINKX??蛻舳双@取到所有的子節(jié)點 VGZN 之后,如果發(fā)現(xiàn)自己創(chuàng)建的節(jié)點在所有創(chuàng)建的子節(jié)點序號最小,那么就認(rèn)為該客戶端獲取到了鎖。如果發(fā)現(xiàn)自己創(chuàng)建的節(jié)點并非 RUIQKX 所有子節(jié)點中最小的,說明自己還沒有獲取到鎖,此時客戶端

8、需要找到比自己小的那個節(jié)點,然后對其調(diào)用 exist()方法,同時對其事件器。之后,讓這個被關(guān)注的節(jié)點刪除,則客戶端的 =GZINKX 會收到相應(yīng)通知,此時再次判斷自己創(chuàng)建的節(jié)點是否是 RUIQKX 子節(jié)點中序號最小的,如果是則獲取到了鎖,如果不是則重復(fù)以上步驟繼續(xù)獲取到比自己小的一個節(jié)點并。當(dāng)前這個過程中還需要許多的邏輯判斷。代碼的實現(xiàn)主要是基于互斥鎖,獲取分布式鎖的重點邏輯在于 BaseDistributedLock,實現(xiàn)了基于UUQKKVKX 實現(xiàn)分布式鎖的細節(jié)。 UUQKKVKX 隊列管理(文件系統(tǒng)、通知機制)兩種類型的隊列: 、同步隊列,當(dāng)一個隊列的成員都聚齊時,這個隊列才可用,否則

9、一直等待所有成員到達。 、隊列按照 ,/,5 方式進行入隊和出隊操作。第一類,在約定目錄下創(chuàng)建臨時目錄節(jié)點,節(jié)點數(shù)目是否是要求的數(shù)目。第二類,和分布式鎖服務(wù)中的控制時序場景基本原理一致,入列有,出列按。在特定的目錄下創(chuàng)建PERSISTENT_SEQUENTIAL 節(jié)點,創(chuàng)建成功時 Watcher 通知等待的隊列,隊列刪除序列號最小的節(jié)點用以消費。此場景下 UUQKKVKX 的 TUJK 用于消息,TUJK的數(shù)據(jù)就是消息隊列中的消息內(nèi)容,9+7;+4:/2 序列號就是消息的,按序取出即可。由于創(chuàng)建的節(jié)點是持久化的,所以不必擔(dān)心隊列消息的丟失問題。 UUQKKVKX 數(shù)據(jù)UUQKKVKX 作為一個

10、集群提供一致的數(shù)據(jù)服務(wù),自然,它要在所有機器間做數(shù)據(jù)。數(shù)據(jù)的好處: 、容錯:一個節(jié)點出錯,不致于讓整個系統(tǒng)停止工作,別的節(jié)點可以接管它的工作; 、提高系統(tǒng)的擴展能力 :把負載分布到多個節(jié)點上,或者增加節(jié)點來提高系統(tǒng)的負載能力; 、提高性能:讓客戶端本地就近的節(jié)點,提高用戶速度。從客戶端讀寫的來看,數(shù)據(jù)集群系統(tǒng)分下面兩種: 、寫主 =XOZK3GYZKX :對數(shù)據(jù)的修改提交給指定的節(jié)點。讀無此限制,可以任何一個節(jié)點。這種情況下客戶端需要對讀與寫進行區(qū)別,俗稱讀寫分離; 、寫任意 =XOZK T_ :對數(shù)據(jù)的修改可提交給任意的節(jié)點,跟讀一樣。這種情況下,客戶端對集群節(jié)點的角色與變化透明。對 UUQ

11、KKVKX 來說,它采用的方式是寫任意。通過增加機器,它的讀吞吐能力和響應(yīng)能力擴展性非常好,而寫,隨著機器的增多吞吐能力肯定下降(這也是它建立 UHYKXKX 的原因),而響應(yīng)能力則取決于具體實現(xiàn)方式,是延遲保持最終一致性,還是立即快速響應(yīng)。 UUQKKVKX 工作原理是原子廣播,這個機制保證了各個 Server 之間的同步。實現(xiàn)這個機制的協(xié)議叫做 Zab 協(xié)UUQKKVKX 的議。GH 協(xié)議有兩種模式,它們分別是恢復(fù)模式(選主)和廣播模式(同步)。當(dāng)服務(wù)啟動或者在者后,GH 就進入了恢復(fù)模式,當(dāng)者被出來,且大多數(shù) 9KXKX 完成了和 RKGJKX 的狀態(tài)同步以后,恢復(fù)模式就結(jié)束了。狀態(tài)同步

12、保證了 RKGJKX 和 9KXKX 具有相同的系統(tǒng)狀態(tài)。 UUQKKVKX 是如何保證事務(wù)的順序一致性的?UUQKKVKX 采用了遞增的事務(wù) Id 來標(biāo)識,所有的 VXUGR(提議)都在被際時候加上了 OJ,OJ 實上是一個 位的數(shù)字,高 位是 KVUIN(時期!有! 世! 新時代)用來標(biāo)識 RKGJKX 是否發(fā)生改變,如果新的 RKGJKX 產(chǎn)生出來,KVUIN 會自增,低 32 位用來遞增計數(shù)。當(dāng)新產(chǎn)生 VXU庫的GR 的時候,會依據(jù)數(shù)據(jù)兩階段過程,首先會向其他的 YKXKX 發(fā)出事務(wù)執(zhí)行請求,如果超過半數(shù)的機器都能執(zhí)行并且能夠成功,那么就會開始執(zhí)行。 UUQKKVKX 下 9KXKX

13、工作狀態(tài)每個 9KXKX 在工作過程中有三種狀態(tài):2551/4-:當(dāng)前 9KXKX 不知道 leader 是誰,正在搜尋2+*/4-:當(dāng)前 9KXKX 即為出來的 RKGJKX,5225=/4-:RKGJKX 已經(jīng)出來,當(dāng)前 9KXKX 與之同步 UUQKKVKX 是如何選取主 RKGJKX 的?當(dāng) RKGJKX新的或者 RKGJKX 失去大多數(shù)的 LURRUKX,這時 Q 進入恢復(fù)模式,恢復(fù)模式需要重新出一個RKGJKX,讓所有的 9KXKX 都恢復(fù)到一個正確的狀態(tài)。Q 的算法有兩種:一種是基于 HGYOI VGUY 實現(xiàn)算法為 fast paxos。的,另外一種是基于 LGYZ VGUY

14、算法實現(xiàn)的。系統(tǒng)默認(rèn)的 、UUQKKVKX 選主流程 HGYOI VGUY ( )線程由當(dāng)前 9KXKX 發(fā)起的線程擔(dān)任,其主要功能是對投票結(jié)果進行統(tǒng)計,并選出的9KXKX;( )線程首先向所有 9KXKX 發(fā)起一次詢問 包括自己 ;( )存線程收到回復(fù)后,驗證是否是自己發(fā)起的詢問 驗證 OJ 是否一致 ,然后獲取對方的 OJ S_OJ ,并儲到當(dāng)前詢問對象列表中,最后獲取對方提議的 RKGJKX 相關(guān)信息 OJ OJ ,并將這些信息到當(dāng)次的投票表中;( )收到所有 9KXKX 回復(fù)以后,就計算出 OJ 最大的那個 9KXKX,并將這個 9KXKX 相關(guān)信息設(shè)置成下一次要投票的 9KXKX;(

15、 )線程將當(dāng)前 OJ 最大的 9KXKX 設(shè)置為當(dāng)前 9KXKX 要T 的 2KGJKX,如果此時獲勝的 9KXKX 獲得 的 9KXKX 票數(shù),設(shè)置當(dāng)前狀的 RKGJKX 為獲勝的 9KXKX,將根據(jù)獲勝的 9KXKX 相關(guān)信息設(shè)置自己的態(tài),否則,繼續(xù)這個過程,直到 RKGJKX 被出來。 通過流程分析可以得出:要使 2KGJKX 獲得多數(shù)9KXKX 的支持,則 9KXKX 總數(shù)必須是奇數(shù) T ,且存活的 9KXKX 的數(shù)目不得少于 T 每個 9KXKX 啟動后 都會重復(fù)以上流程。在恢復(fù)模式下,如果是剛從狀態(tài)恢復(fù)的或者剛啟動的 YKXKX 還會從磁盤快照中恢復(fù)數(shù)據(jù)和會話信息,Q 會事務(wù)日志并

16、定期進行快照,方便在恢復(fù)時進行狀態(tài)恢復(fù)。 、UUQKKVKX 選主流程 HGYOI VGUY LGYZ VGUY 流程是在過程中,某 9KXKX 首先向所有 9KXKX 提議自己要成為 RKGJKX,當(dāng)其它 9KXKX 收到提議以后,解決 KVUIN 和 OJ 的,并接受對方的提議,然后方發(fā)送接受提議完成的消息,重復(fù)這個流程,最后一定能出 2KGJKX。 UUQKKVKX 同步流程選完 2KGJKX 以后,Q 就進入狀態(tài)同步過程。 、2KGJKX 等待 YKXKX 連接; 、,URRUKX 連接 RKGJKX,將最大的 OJ 發(fā)送給 RKGJKX; 、2KGJKX 根據(jù) LURRUKX 的 O

17、J 確定同步點; 、完成同步后通知 LURRUKX 已經(jīng)成為 VZUJGZK 狀態(tài); 、,URRUKX 收到 VZUJGZK 消息后,又可以重新接受 I TZ 的請求進行服務(wù)了。 分布式通知和協(xié)調(diào)發(fā)送通知實際是通過控制臺改變某個節(jié)點的狀態(tài),然后 zk 將這些變化發(fā)送給注對于系統(tǒng)調(diào)度來說:操作冊了這個節(jié)點的 watcher 的所有客戶端。對于執(zhí)行情況匯報:每個工作進程都在某個目錄下創(chuàng)建一個臨時節(jié)點。并攜帶工作的進度數(shù)據(jù),這樣匯總的進程可以目錄子節(jié)點的變化獲得工作進度的實時的全局情況。 機器中為什么會有 RKGJKX?在分布式環(huán)境中,有些業(yè)務(wù)邏輯只需要集群中的某一臺機器進行執(zhí)行,其他的機器可以共享

18、這個結(jié)果,這樣可以大大減少重復(fù)計算,提高性能,于是就需要進行 RKGJKX。 Q 節(jié)點宕機如何處理?UUQKKVKX 本身也是集群,配置不少于 個服務(wù)器。UUQKKVKX 自身也要保證當(dāng)一個節(jié)點宕機時,其他節(jié)點會繼續(xù)提供服務(wù)。如果是一個 ,URRUKX 宕機,還有 臺服務(wù)器提供不會丟失; 如果是一個 2KGJKX 宕機,UUQKKVKX 會,因為 UUQKKVKX 上的數(shù)據(jù)是有多個副本的,數(shù)據(jù)并出新的 2KGJKX。1 集群的機制是只要超過半數(shù)的節(jié)點正常,集群就能正常提供服務(wù)。只有在 1 節(jié)點掛得太多,只剩一半或不到一半節(jié)點能工作,集群才失效。 所以 個節(jié)點的 IRYZKX 可以掛掉 個節(jié)點

19、RKGJKX 可以得到 票$ 個節(jié)點的 IRYZKX 就不能掛掉任何 個節(jié)點了 RKGJKX 可以得到 票# UUQKKVKX 負載均衡和 TMOT 負載均衡區(qū)別Q 的負載均衡是可以調(diào)控,TMOT 只是能調(diào)權(quán)重,其他需要可控的都需要自己寫插件;但是 TMOT 的吞吐量比Q 大很多,應(yīng)該說按業(yè)務(wù)選擇用哪種方式。 UUQKKVKX GZIN 機制=GZIN 機制:一個 =GZIN 事件是一個的觸發(fā)器,當(dāng)被設(shè)置了 =GZIN 的數(shù)據(jù)發(fā)生了改變的時候,則服務(wù)器將這個改變發(fā)送給設(shè)置了 =GZIN 的客戶端,以便通知它們。UUQKKVKX 機制的特點: 、觸發(fā)數(shù)據(jù)發(fā)生改變時,一個 GZINKX KKTZ 會被發(fā)送到 I TZ,但是 I TZ 只會收到一次這樣的信息。 、GZINKX KKTZ 異步發(fā)送 GZINKX同事件從 YKXKX 發(fā)送到 ITZ 是異步的,這就存在一個問題,不的客戶端和服務(wù)器之間通過 YUIQKZ 進行通信,由于網(wǎng)絡(luò)延遲或其他導(dǎo)致客戶端在不通的時刻到事件,由于 UUQKKVKX 本身提供了 ordering guarantee,即客戶端了事件后,才會感知它所監(jiān)視 znode 發(fā)生變化。所以使用 UUQKKVKX 不能期望能夠到節(jié)點每次

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論