亚洲视频二区_亚洲欧洲日本天天堂在线观看_日韩一区二区在线观看_中文字幕不卡一区

公告:魔扣目錄網(wǎng)為廣大站長(zhǎng)提供免費(fèi)收錄網(wǎng)站服務(wù),提交前請(qǐng)做好本站友鏈:【 網(wǎng)站目錄:http://www.430618.com 】, 免友鏈快審服務(wù)(50元/站),

點(diǎn)擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會(huì)員:747

一、zk是什么:

1、個(gè)人理解zk=文件系統(tǒng)+通知機(jī)制。

2、zk是一個(gè)分布式的應(yīng)用程序協(xié)調(diào)服務(wù),我理解的就是有兩臺(tái)集器A、B,A對(duì)一個(gè)數(shù)據(jù)進(jìn)行了操作,B是如何知道的,這個(gè)就需要zk的支持。

3、 分布式應(yīng)用程序可以基于 ZooKeeper 實(shí)現(xiàn)諸如數(shù)據(jù)發(fā)布/訂閱、負(fù)載均衡、命名服務(wù)、分布式協(xié) 調(diào)/通知、集群管理、Master 選舉、配置維護(hù),名字服務(wù)、分布式同步、分布式鎖和分布式隊(duì)列 等功能。

二、zk的初始化選舉機(jī)制:

1、首先一般選舉里面都有2N+1臺(tái)集器,如果是三臺(tái)機(jī)器的A、B、C,A和B都會(huì)選舉自己,每次投票會(huì)包括推舉的服務(wù)器的myid和zxid,使用(myid,zxid)來表示。

2、集群中的服務(wù)器都接受到投票時(shí),首先判斷投票的有效性,如檢查是不是本輪的投票,是否是looking狀態(tài)的機(jī)器。

3、處理投票,比較zxid大小,越大權(quán)重越大,如果相同再比較myid。

4、統(tǒng)計(jì)投票。

5、改變服務(wù)器的狀態(tài)。

ps:注意:在這個(gè)過程中,有個(gè)重要的數(shù)據(jù)結(jié)構(gòu),electionEpoch即邏輯時(shí)鐘,用來判斷是否在同一輪選舉周期中,每次進(jìn)入新的一輪投票都會(huì)自增,還有一個(gè)state,表示當(dāng)前服務(wù)器的狀態(tài)。

三、zk的運(yùn)行過程中l(wèi)eader崩潰選舉機(jī)制:

1、狀態(tài)變更,余下所有的observing服務(wù)器都會(huì)將自己的服務(wù)器狀態(tài)變成looking狀態(tài)。

2、每個(gè)server會(huì)發(fā)起投票。

3、接受各個(gè)服務(wù)器的投票。

4、處理投票。

5、統(tǒng)計(jì)投票。

6、改變服務(wù)器的狀態(tài)。

注意:其實(shí)崩潰選舉機(jī)制和初始化差不多,但是值得注意一點(diǎn)是每個(gè)機(jī)器中的electionEpoch,也就是邏輯時(shí)鐘,如果有機(jī)器宕機(jī)的話,這個(gè)數(shù)值是和正常的機(jī)器不一樣的,所以需要判斷這個(gè)值不是正常值的機(jī)器投票數(shù)據(jù)是否是正常的。

四、zk中的znode節(jié)點(diǎn):

1、四種類型:(1)、持久化目錄節(jié)點(diǎn)。(2)、持久化順序編號(hào)目錄節(jié)點(diǎn)。(3)、臨時(shí)目錄節(jié)點(diǎn)。(4)、臨時(shí)順序編號(hào)目錄節(jié)點(diǎn)。

五、zk中的監(jiān)控原理:

1、zk類似于linux中的目錄節(jié)點(diǎn)樹方式的數(shù)據(jù)存儲(chǔ),即分層命名空間,zk并不是專門存儲(chǔ)數(shù)據(jù)的,它的作用是主要是維護(hù)和監(jiān)控存儲(chǔ)數(shù)據(jù)的狀態(tài)變化,通過監(jiān)控這些數(shù)據(jù)狀態(tài)的變化,從而可以達(dá)到基于數(shù)據(jù)的集群管理,zk中的杰點(diǎn)的數(shù)據(jù)上限時(shí)1M。

2、zk中的wathc機(jī)制:client端會(huì)對(duì)某個(gè)znode建立一個(gè)watcher事件,當(dāng)該znode發(fā)生變化時(shí),這些client會(huì)收到zk的通知,然后client可以根據(jù)znode變化來做出業(yè)務(wù)上的改變等。

3、圖說明:

Zookeeper 面試總結(jié)

4、main方法會(huì)創(chuàng)建zkClient,在創(chuàng)建zkClient的時(shí)候,會(huì)創(chuàng)建出listener進(jìn)程和connect進(jìn)程。一個(gè)是監(jiān)控進(jìn)程一個(gè)是網(wǎng)絡(luò)連接進(jìn)程。當(dāng)zkClient調(diào)用getChildren等方法注冊(cè)監(jiān)聽器的時(shí)候,connect進(jìn)程向zk注冊(cè)監(jiān)聽器,注冊(cè)后的緝監(jiān)聽器位于zk的監(jiān)聽器列表中,監(jiān)聽器列表中記錄了zkClient的ip地址,端口號(hào),要監(jiān)控的目錄,一旦目標(biāo)文件發(fā)生了改變,zk就會(huì)把這條消息發(fā)送給對(duì)應(yīng)的zkClient的listener進(jìn)程,listener進(jìn)程接受到后,就會(huì)執(zhí)行process方法。在process方法中針對(duì)發(fā)生的事件進(jìn)行處理。

Zookeeper 面試總結(jié)

六、zk的職者:

1、命名服務(wù):命名服務(wù)是指通過指定的名字來獲取資源或者服務(wù)的地址,利用zk創(chuàng)建一個(gè)全局的路徑,即是唯一的路徑,這個(gè)路徑就可以作為一個(gè)名字,指向集群中的集群,提供的服務(wù)的地址,或者一個(gè)遠(yuǎn)程的對(duì)象等等。

2、配置管理(文件系統(tǒng)、通知機(jī)制):程序分布式的部署在不同的機(jī)器上,將程序的配置信息放在zk的znode下,當(dāng)有配置發(fā)生改變時(shí),也就是znode發(fā)生變化時(shí),可以通過改變zk中某個(gè)目錄節(jié)點(diǎn)的內(nèi)容,利用watcher通知給各個(gè)客戶端,從而更改配置。

3、集群管理:是否有機(jī)器退出和加入、選舉master。對(duì)于機(jī)器的退出,所有機(jī)器約定在父目錄下創(chuàng)建臨時(shí)目錄,對(duì)于新機(jī)器的加入,所有機(jī)器創(chuàng)建臨時(shí)順序編號(hào)目錄節(jié)點(diǎn)。

4、分布式鎖:分為兩類,一個(gè)是保持獨(dú)占:客戶端需要的時(shí)候,就去通過createznode的方式實(shí)現(xiàn),所有客戶端都去創(chuàng)建/distribute_lock節(jié)點(diǎn),用完就刪除節(jié)點(diǎn)就行了。一個(gè)是控制時(shí)序,/distribute_lock已經(jīng)預(yù)先存在,所有客戶端在它下面創(chuàng)建臨時(shí)順序編號(hào)目錄節(jié)點(diǎn)。主要流程是:客戶端在獲取分布式鎖的時(shí)候在locker節(jié)點(diǎn)下創(chuàng)建臨時(shí)順序節(jié)點(diǎn),釋放鎖的時(shí)候就刪除,客戶端首先調(diào)用createZnode放在在locker創(chuàng)建臨時(shí)順序節(jié)點(diǎn),然后調(diào)用getChildren來獲取locker下面的所有子節(jié)點(diǎn),此時(shí)不用設(shè)置watch,客戶端獲取了所有子節(jié)點(diǎn)的path之后,反正最后要找到最小序號(hào)的那個(gè)節(jié)點(diǎn),調(diào)用exist方法,同時(shí)對(duì)其注冊(cè)事件監(jiān)聽器

5、隊(duì)列管理:兩種類型的隊(duì)列,一種是同步隊(duì)列,一個(gè)是按照FIFO方式進(jìn)行入隊(duì)和出隊(duì),第二種保證了隊(duì)列消息的不會(huì)丟失,因?yàn)闀?huì)在特定的目錄下創(chuàng)建一個(gè)persistent_sequential節(jié)點(diǎn),創(chuàng)建成功時(shí)watcher通知等待的隊(duì)列,隊(duì)列刪除序列號(hào)最小的節(jié)點(diǎn),此場(chǎng)景下,zk中的znode用于消息存儲(chǔ),znode存儲(chǔ)的數(shù)據(jù)就是消息隊(duì)列中的消息內(nèi)容,sequential序列號(hào)就是消息的編號(hào),按序列取出即可。

七、zk中的數(shù)據(jù)復(fù)制:

1、作用:(1)容錯(cuò)。(2)提高系統(tǒng)的擴(kuò)展功能。(3)提高性能。

2、數(shù)據(jù)復(fù)制分為兩種:

(1)、寫主,對(duì)數(shù)據(jù)的修改提交給指定節(jié)點(diǎn),讀沒有限制,可以在任意的節(jié)點(diǎn)讀取數(shù)據(jù)。

(2)、寫任意:對(duì)數(shù)據(jù)的修改提交給任意的節(jié)點(diǎn),讀也是任意節(jié)點(diǎn)。

八、zk的工作原理:

1、核心就是原子廣播。在ZooKeeper中所有的事務(wù)請(qǐng)求都由一個(gè)主服務(wù)器也就是Leader來處理,其他服務(wù)器為Follower,Leader將客戶端的事務(wù)請(qǐng)求轉(zhuǎn)換為事務(wù)Proposal,并且將Proposal分發(fā)給集群中其他所有的Follower,然后Leader等待Follwer反饋,當(dāng)有 過半數(shù)(>=N/2+1) 的Follower反饋信息后,Leader將再次向集群內(nèi)Follower廣播Commit信息,Commit為將之前的Proposal提交。

2、保證數(shù)據(jù)的一致性:

(1)、順序的一致性。

(2)、原子性。

(3)、單一的系統(tǒng)映像。

(4)、持久性。

3、ZAB協(xié)議的兩種實(shí)現(xiàn)方式:

(1)、恢復(fù)模式:當(dāng)服務(wù)啟動(dòng)或在leader崩潰后,ZAB就進(jìn)入了恢復(fù)模式,在leader選舉出來之前,且大多數(shù)server完成和leader的狀態(tài)同步以后,恢復(fù)模式就結(jié)束了。在這個(gè)過程中,要保證被leader提交的proposal最終被所有的follower執(zhí)行,確保那些只在leader提出的proposal被丟棄。

(2)、廣播模式:即leader提出一個(gè)決議,由follower進(jìn)行投票,leader對(duì)投票結(jié)果進(jìn)行計(jì)算決定是否通過決議,如果通過執(zhí)行該決議,否則什么都不做。

九、zk的watch機(jī)制:

1、一次性觸發(fā)數(shù)據(jù)改變時(shí),一個(gè)watch event會(huì)被發(fā)送到client,但是client只會(huì)接收到一次這樣的消息。

2、watch event異步發(fā)送到watcher的通知事件從server發(fā)送到client是異步的,但是可能由于網(wǎng)絡(luò)延遲原因,所有導(dǎo)致客戶端在不同時(shí)刻監(jiān)聽到事件,zk只保證最終的一致性,而無法保證強(qiáng)一致性。

3、數(shù)據(jù)監(jiān)視由getData和exists方法,getchildren設(shè)置了子節(jié)點(diǎn)監(jiān)視。

4、注冊(cè)watcher:getData、exists、getChildren。

5、觸發(fā)wathcer:create、delete、setData。

十、zk的思維導(dǎo)圖:

Zookeeper 面試總結(jié)

分享到:
標(biāo)簽:Zookeeper
用戶無頭像

網(wǎng)友整理

注冊(cè)時(shí)間:

網(wǎng)站:5 個(gè)   小程序:0 個(gè)  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會(huì)員

趕快注冊(cè)賬號(hào),推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨(dú)大挑戰(zhàn)2018-06-03

數(shù)獨(dú)一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫(kù),初中,高中,大學(xué)四六

運(yùn)動(dòng)步數(shù)有氧達(dá)人2018-06-03

記錄運(yùn)動(dòng)步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績(jī)?cè)u(píng)定2018-06-03

通用課目體育訓(xùn)練成績(jī)?cè)u(píng)定