国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

淺談Zookeeper集群選舉Leader節(jié)點(diǎn)源碼

這篇具有很好參考價值的文章主要介紹了淺談Zookeeper集群選舉Leader節(jié)點(diǎn)源碼。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報違法"按鈕提交疑問。

寫在前面:

zookeeper源碼比較復(fù)雜,本文講解的重點(diǎn)為各個zookeeper服務(wù)節(jié)點(diǎn)之間的state選舉。至于各個節(jié)點(diǎn)之間的數(shù)據(jù)同步,不在文本的側(cè)重講解范圍內(nèi)。

在沒有對zookeeper組件有一個整體架構(gòu)認(rèn)識的基礎(chǔ)上,不建議直接死磕細(xì)節(jié)。本文寫作的目的也是基于此,閱讀本文,希望讀者能夠?qū)ookeeper集群架構(gòu)有一個簡單的認(rèn)識。

本文附有整體架構(gòu)的執(zhí)行流程圖,請一定要跟著代碼多走幾遍。本文的二-六節(jié)會對該流程中的關(guān)鍵點(diǎn)進(jìn)行講解






一、前提共識

1、了解zookeeper集群搭建

不了解如何搭建集群的可以參考網(wǎng)上別人的文章:Zookeeper集群搭建及使用

本文需要了解集群相關(guān)的配置為zoo.cfg文件的節(jié)點(diǎn)配置信息:

server.1=第一臺服務(wù)器的主機(jī)名:2881:3881
server.2=第二臺服務(wù)器的主機(jī)名:2882:3882
server.3=第三臺服務(wù)器的主機(jī)名:2883:3882

這里針對每一個zookeeper服務(wù),分別含有288x和388x兩個端口。第一個端口用來同步節(jié)點(diǎn)之間的數(shù)據(jù),第二個端口用來進(jìn)行節(jié)點(diǎn)的state選舉(對應(yīng)代碼為ServerState枚舉類)

在源碼中會new很多的Socket通信,一定要區(qū)分開不同端口的實(shí)例化對象。



2、入口為QuorumPeerMain.main方法

至于為什么直接是這個方法,可以查看對應(yīng)的腳本文件。大部分使用腳本文件進(jìn)行執(zhí)行的,都是同樣的方式(如tomcat)。

如果左邊的sh文件不方便看,可以看右邊的sh文件(畢竟邏輯更簡單)

zookeeper怎么選取的主節(jié)點(diǎn),ZooKeeper,zookeeper,網(wǎng)絡(luò),分布式,java,socket



3、整體流程圖(重點(diǎn))

一定要一定要,跟著流程圖多走幾遍

zookeeper怎么選取的主節(jié)點(diǎn),ZooKeeper,zookeeper,網(wǎng)絡(luò),分布式,java,socket



4、需要有Socket網(wǎng)絡(luò)編程、多線程相關(guān)基礎(chǔ)

源代碼中出現(xiàn)大量的Socket通信,也包含創(chuàng)建大量的多線程代碼。不了解這兩部分知識的小伙伴,看起來可能比較吃力






二、基礎(chǔ)流程

1、入口main

zookeeper怎么選取的主節(jié)點(diǎn),ZooKeeper,zookeeper,網(wǎng)絡(luò),分布式,java,socket



2、流程圖

這部分比較簡單,主要完成的幾件事情可以總結(jié)為:

  1. 解析配置文件的配置信息
  2. 初始化zookeeper用于接收客戶端命令(create、delete、get)的服務(wù)端,可選擇Netty或者NIO方式,并且完成對應(yīng)的服務(wù)端的啟動
  3. 設(shè)置對應(yīng)的集群leader選舉的選舉類型(設(shè)置為3,未來會在Switch中用到該值)
  4. 啟動一個內(nèi)嵌的jetty服務(wù)器,用來查看未來服務(wù)端的信息
  5. 初始化對應(yīng)的多級隊列架構(gòu)
  6. 進(jìn)行具體的集群leader節(jié)點(diǎn)的選舉

zookeeper怎么選取的主節(jié)點(diǎn),ZooKeeper,zookeeper,網(wǎng)絡(luò),分布式,java,socket






三、多級隊列構(gòu)建流程

1、多級隊列架構(gòu)講解

看不懂這個圖的,建議先把源碼跟一遍,再回頭看

首先看一下多級隊列架構(gòu)圖

zookeeper怎么選取的主節(jié)點(diǎn),ZooKeeper,zookeeper,網(wǎng)絡(luò),分布式,java,socket



我們可以將該多級隊列可以分為兩層:

第一層:應(yīng)用層,可以理解為我們上層api隊列

代表隊列:sendqueue、recvqueue

對應(yīng)線程名稱:WorkerSender、WorkerReceiver


第二層:傳輸層,可以理解為后臺傳送數(shù)據(jù)的隊列

代表隊列:recvQueue、queueSendMap(map的value為傳輸層隊列)、senderWorkerMap(map的value為SendWorker線程)

對應(yīng)線程名稱:SendWorker、RecvWorker


牢記上面這幾個隊列、map、線程的名字。否則代碼你會看不清楚




處理多級隊列流程大致可以描述為

1、首先會初始化對應(yīng)的ServerSocket端,同時進(jìn)行accept阻塞監(jiān)聽數(shù)據(jù);

2、如果處理leader節(jié)點(diǎn)對應(yīng)的端口接收到數(shù)據(jù),那么就會處理該請求。剛開始初始化的時候是不會有數(shù)據(jù)的,畢竟Socket客戶端都還沒有開始建立,在第10步才建立的;

3、然后會對信息中的sid進(jìn)行判斷,然后剔除掉不需要的socket連接。因為socket通信是全體連接都發(fā)一遍,zk的判定規(guī)則為只能由sid大的發(fā)給sid小的,所以如果小的發(fā)送給了大的,就會關(guān)閉連接,并且開啟一個反向連接;

4、如果是小的發(fā)送給大的,此時就會初始化出我們多級隊列的第二級隊列傳輸層隊列,以及對應(yīng)的SendWorker線程任務(wù)。然后把這個SendWorker任務(wù)放入senderWorkerMap中,未來可以直接取出來直接使用;

5、這里的SendWorker任務(wù),就是真實(shí)的把數(shù)據(jù)通過Socket請求把數(shù)據(jù)發(fā)送給遠(yuǎn)端的邏輯;

6、接下來開始處理第一級隊列應(yīng)用層隊列;

7、即初始化sendqueue和recvqueue這兩個上層傳輸隊列;

8、然后就是初始化對應(yīng)的Socket客戶端。當(dāng)然在初始化客戶端的前提是,我們有業(yè)務(wù)數(shù)據(jù)放到了第一級的隊列中,即第7步中的隊列中要有數(shù)據(jù);

9、上層業(yè)務(wù)隊列有數(shù)據(jù)以后,會將業(yè)務(wù)數(shù)據(jù)封裝為一個ByteBuffer類型的requestBuffer對象,然后把數(shù)據(jù)直接發(fā)送給傳輸層的隊列(queueSendMap中對應(yīng)sid的value對應(yīng)的隊列);

10、輸入發(fā)送后,初始化對應(yīng)的Socket客戶端連接,這樣就能夠把數(shù)據(jù)發(fā)送出去,與此同時,第2步的accept也能接收到數(shù)據(jù),最終形成兩級隊列工作工作的閉環(huán)。


第10步使用Socket發(fā)送的數(shù)據(jù),會與第2步的ServerSocket連接打通。一定要明確這是在集群環(huán)境下的通信,明白這一步,很重要



與之對應(yīng)的recvqueue只是邏輯反一下,首先RecvWorker線程執(zhí)行會獲取到數(shù)據(jù),發(fā)送給一級隊列應(yīng)用層隊列recvqueue,一級隊列對應(yīng)的WQorkRecevier線程任務(wù),就會執(zhí)行對應(yīng)的邏輯,然后處理數(shù)據(jù)。



2、入口startLeaderElection

zookeeper怎么選取的主節(jié)點(diǎn),ZooKeeper,zookeeper,網(wǎng)絡(luò),分布式,java,socket
zookeeper怎么選取的主節(jié)點(diǎn),ZooKeeper,zookeeper,網(wǎng)絡(luò),分布式,java,socket



3、初始化二級隊列

1)Listener方法內(nèi)部

  • 綁定服務(wù)端信息
  • accept數(shù)據(jù)
  • 處理數(shù)據(jù)
zookeeper怎么選取的主節(jié)點(diǎn),ZooKeeper,zookeeper,網(wǎng)絡(luò),分布式,java,socket

2)根據(jù)接收到的信息的sid情況進(jìn)行不同的邏輯

  • 如果是自己的就發(fā)給自己
  • 如果不是自己,并且滿足zk的sid由大機(jī)器發(fā)送給小機(jī)器的規(guī)則,則開啟對應(yīng)的兩個用于處理二級隊列(傳輸層隊列)的線程任務(wù)
zookeeper怎么選取的主節(jié)點(diǎn),ZooKeeper,zookeeper,網(wǎng)絡(luò),分布式,java,socket

3)以SendWorker線程任務(wù)為例

  • queueSendMap中獲取對應(yīng)sid的隊列,然后獲取應(yīng)用層隊列中的數(shù)據(jù),并將其發(fā)送給傳輸層隊列
  • 最終調(diào)用send方法,完成數(shù)據(jù)的傳輸
zookeeper怎么選取的主節(jié)點(diǎn),ZooKeeper,zookeeper,網(wǎng)絡(luò),分布式,java,socket
zookeeper怎么選取的主節(jié)點(diǎn),ZooKeeper,zookeeper,網(wǎng)絡(luò),分布式,java,socket



4、初始化一級隊列

1)完成一級隊列的初始化

zookeeper怎么選取的主節(jié)點(diǎn),ZooKeeper,zookeeper,網(wǎng)絡(luò),分布式,java,socket

2)完成一級隊列對應(yīng)的線程任務(wù)的初始化

zookeeper怎么選取的主節(jié)點(diǎn),ZooKeeper,zookeeper,網(wǎng)絡(luò),分布式,java,socket

3)調(diào)用對應(yīng)線程的run方法,然后調(diào)用process方法處理數(shù)據(jù)

zookeeper怎么選取的主節(jié)點(diǎn),ZooKeeper,zookeeper,網(wǎng)絡(luò),分布式,java,socket

4)把數(shù)據(jù)發(fā)送給運(yùn)輸層隊列

zookeeper怎么選取的主節(jié)點(diǎn),ZooKeeper,zookeeper,網(wǎng)絡(luò),分布式,java,socket

5)建立socket客戶端連接

  • 首先調(diào)用內(nèi)部的connetOne方法
  • 然后把數(shù)據(jù)封裝為一個任務(wù),放進(jìn)線程池
  • 在線程任務(wù)中會初始化對應(yīng)的Socket客戶端連接
  • 封裝數(shù)據(jù)寫入到輸出流。此時二級隊列初始化出來的阻塞的ServerSocket就能夠開始向下執(zhí)行,處理接收到的數(shù)據(jù),形成閉環(huán)
zookeeper怎么選取的主節(jié)點(diǎn),ZooKeeper,zookeeper,網(wǎng)絡(luò),分布式,java,socket

將線程任務(wù)放進(jìn)線程池代碼

zookeeper怎么選取的主節(jié)點(diǎn),ZooKeeper,zookeeper,網(wǎng)絡(luò),分布式,java,socket

該任務(wù)會初始化對應(yīng)的客戶端

zookeeper怎么選取的主節(jié)點(diǎn),ZooKeeper,zookeeper,網(wǎng)絡(luò),分布式,java,socket

封裝對應(yīng)的輸出數(shù)據(jù),并完成發(fā)送

zookeeper怎么選取的主節(jié)點(diǎn),ZooKeeper,zookeeper,網(wǎng)絡(luò),分布式,java,socket





四、LOOKING節(jié)點(diǎn)選舉流程

1、節(jié)點(diǎn)選舉基礎(chǔ)流程講解

zookeeper怎么選取的主節(jié)點(diǎn),ZooKeeper,zookeeper,網(wǎng)絡(luò),分布式,java,socket

流程選舉大致流程可以描述為:

1、第一輪選票:myid為1和myid為2的兩臺機(jī)器,分別把自己的選票發(fā)送出去(vote形式),兩臺機(jī)器會分別對自己收到的選票和自己的選票進(jìn)行比較。會根據(jù)指定的判斷規(guī)則進(jìn)行選擇(粗略可以理解為,是周期、zxid和機(jī)器id幾個要素中大的);

2、myid為1的機(jī)器收到(2,0),會和自己的選票(1,0)進(jìn)行比較,發(fā)現(xiàn)還是(2,0)大,所以最終它會把(2,0)返回回去。此輪中,兩臺機(jī)器發(fā)送的選票都沒有超過半數(shù)(一共3臺服務(wù),配置文件中能獲?。?;

3、第二輪選票:myid為1和myid為2的兩臺機(jī)器,再次發(fā)送自己的選票信息。此時由于myid為1的這臺機(jī)器發(fā)送的就是上一輪接收到的(2,0)選票。那么在第二輪投票時myid為1的機(jī)器就會投出(2,0),與此同時,myid為2的機(jī)器投出的選票也是(2,0);

4、此輪中投出的選票(2,0)超過了半數(shù)(2/3)。最終myid為2的這臺機(jī)器被選為了leader節(jié)點(diǎn);

5、當(dāng)myid為3的節(jié)點(diǎn)進(jìn)來的時候,雖然它的(3,0)大于(2,0),但是其周期比較?。▍⑴c投票的周期次數(shù)),所以myid為2的機(jī)器依然還是leader節(jié)點(diǎn)。



2、LOOKING節(jié)點(diǎn)流程

每一個節(jié)點(diǎn)進(jìn)來以后的第一步邏輯就是這個位置

zookeeper怎么選取的主節(jié)點(diǎn),ZooKeeper,zookeeper,網(wǎng)絡(luò),分布式,java,socket



3、投票PK邏輯源碼

1)首先會把自己的投票信息發(fā)送出去,然后再獲取自己的recvqueue隊列(傳輸層隊列,具體邏輯在多級隊列章節(jié)進(jìn)行過講解)中的投票信息,只要滿足條件,就可以不斷的去獲取隊列中的數(shù)據(jù)

zookeeper怎么選取的主節(jié)點(diǎn),ZooKeeper,zookeeper,網(wǎng)絡(luò),分布式,java,socket

2)緊接著對接收到的選票進(jìn)行邏輯判斷。根據(jù)其不同的state走不同的邏輯,最終根據(jù)判斷邏輯再次把消息發(fā)送出去

zookeeper怎么選取的主節(jié)點(diǎn),ZooKeeper,zookeeper,網(wǎng)絡(luò),分布式,java,socket

3)這是很重要的一個判斷規(guī)則,根據(jù)指定的要素進(jìn)行判定兩個選票的規(guī)則

zookeeper怎么選取的主節(jié)點(diǎn),ZooKeeper,zookeeper,網(wǎng)絡(luò),分布式,java,socket

4)會調(diào)用該方法,最終走到其半數(shù)判定的條件。最終返回選擇出來的leader節(jié)點(diǎn),即endVote對象,如果沒有選擇到leader節(jié)點(diǎn),則返回null

zookeeper怎么選取的主節(jié)點(diǎn),ZooKeeper,zookeeper,網(wǎng)絡(luò),分布式,java,socket
zookeeper怎么選取的主節(jié)點(diǎn),ZooKeeper,zookeeper,網(wǎng)絡(luò),分布式,java,socket



4、其余節(jié)點(diǎn)

LOOKING節(jié)點(diǎn)的流程為主要邏輯,在第一輪的while循環(huán)過后,就能夠明確每種節(jié)點(diǎn)對應(yīng)的類型是什么,第二次while循環(huán)的時候,就會走到對應(yīng)的節(jié)點(diǎn)方法中去。詳細(xì)的執(zhí)行邏輯可請參考開頭的那張流程圖

zookeeper怎么選取的主節(jié)點(diǎn),ZooKeeper,zookeeper,網(wǎng)絡(luò),分布式,java,socket





五、Zookeeper之間數(shù)據(jù)同步

這里就回到了第一節(jié)中的,第一個共識。即配置集群的時候是有兩個端口,最后面的端口,是用于集群節(jié)點(diǎn)的選舉,倒數(shù)第二個端口則是用于同步Zookeeper節(jié)點(diǎn)之間的數(shù)據(jù)。

既然出現(xiàn)了新的端口通信,那么就會初始化新的服務(wù)端

1、初始化LEADING節(jié)點(diǎn)

zookeeper怎么選取的主節(jié)點(diǎn),ZooKeeper,zookeeper,網(wǎng)絡(luò),分布式,java,socket

2、初始化新端口的服務(wù)端

這里就會根據(jù)新的配置,初始化新的服務(wù)端,用來接收zookeeper客戶端之間的命令

zookeeper怎么選取的主節(jié)點(diǎn),ZooKeeper,zookeeper,網(wǎng)絡(luò),分布式,java,socket





六、LEADING節(jié)點(diǎn)掛之后流程

1、LEADING節(jié)點(diǎn)會不斷發(fā)送PING命令

1)如果是leader節(jié)點(diǎn)則會走這段邏輯

zookeeper怎么選取的主節(jié)點(diǎn),ZooKeeper,zookeeper,網(wǎng)絡(luò),分布式,java,socket

2)在一個while死循環(huán)內(nèi)部,會周期性的給learner發(fā)送ping數(shù)據(jù)

zookeeper怎么選取的主節(jié)點(diǎn),ZooKeeper,zookeeper,網(wǎng)絡(luò),分布式,java,socket

3)封裝對應(yīng)的PING數(shù)據(jù)包

zookeeper怎么選取的主節(jié)點(diǎn),ZooKeeper,zookeeper,網(wǎng)絡(luò),分布式,java,socket



2、FOLLOWING節(jié)點(diǎn)不斷接收命令

1)只要機(jī)器還運(yùn)行著,就會輪循該方法,節(jié)點(diǎn)是FOLLOWING的機(jī)器就會調(diào)用follwLeader方法

zookeeper怎么選取的主節(jié)點(diǎn),ZooKeeper,zookeeper,網(wǎng)絡(luò),分布式,java,socket

2)該方法中會調(diào)用readPacket方法,去接收數(shù)據(jù)。后面的processPacket方法會對接受到的數(shù)據(jù)進(jìn)行處理。在這過程中就會出現(xiàn)獲取不到數(shù)據(jù),然后拋異常。那么就會跳轉(zhuǎn)到上一步,在updateServerState()方法中,就會根據(jù)邏輯,把自己的FOLLWING節(jié)點(diǎn)設(shè)置為LOOKING節(jié)點(diǎn),繼而觸發(fā)后續(xù)的再次選舉流程

zookeeper怎么選取的主節(jié)點(diǎn),ZooKeeper,zookeeper,網(wǎng)絡(luò),分布式,java,socket




至此Zookeeper中Leader節(jié)點(diǎn)選取的流程就告一段落。開頭那張整體的流程圖,一定要多跟著源碼多走幾遍。文章來源地址http://www.zghlxwxcb.cn/news/detail-724213.html

到了這里,關(guān)于淺談Zookeeper集群選舉Leader節(jié)點(diǎn)源碼的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • zookeeper4==zookeeper源碼閱讀,F(xiàn)OLLOWER收到了需要LEADER執(zhí)行的命令后各節(jié)點(diǎn)會執(zhí)行什么

    zookeeper4==zookeeper源碼閱讀,F(xiàn)OLLOWER收到了需要LEADER執(zhí)行的命令后各節(jié)點(diǎn)會執(zhí)行什么

    上面已經(jīng)閱讀并觀察了節(jié)點(diǎn)確定自己的身份后會做些什么,大致就是比對雙方信息然后完成同步。 本篇閱讀, FOLLOWER收到了需要LEADER執(zhí)行的命令后,怎么同步給LEADER的,并且LEADER會執(zhí)行什么操作。 源碼啟動zkCli用于測試 將原本的代碼拷貝一份用IDEA打開后,找到org.apache.zook

    2024年02月03日
    瀏覽(15)
  • Kafka 和 Zookeeper 的 Leader 和 Follower 區(qū)別(選舉&數(shù)據(jù)同步)

    Kafka 和 Zookeeper 的 Leader 和 Follower 區(qū)別(選舉&數(shù)據(jù)同步)

    》Client與Server通過NIO通信 》全局串行化所有的寫操作 》保證同一客戶端的指令被FIFO執(zhí)行 》保證消息通知的FIFO (2)kafka 不同,只有l(wèi)eader 負(fù)責(zé)讀寫,follower只負(fù)責(zé)備份,如果leader宕機(jī)的話,Kafaka動態(tài)維護(hù)了一個同步狀態(tài)的副本的集合(a set of in-sync replicas),簡稱ISR,ISR中有f+1個節(jié)

    2024年04月10日
    瀏覽(17)
  • 一文通吃:從 ZooKeeper 一致性,Leader選舉講到 ZAB 協(xié)議與 PAXOS 算法(上)

    一文通吃:從 ZooKeeper 一致性,Leader選舉講到 ZAB 協(xié)議與 PAXOS 算法(上)

    本文首發(fā)自「慕課網(wǎng)」,想了解更多IT干貨內(nèi)容,程序員圈內(nèi)熱聞,歡迎關(guān)注\\\"慕課網(wǎng)\\\"或慕課網(wǎng)公眾號! 作者:大能 | 慕課網(wǎng)講師 本文將從ZooKeeper集群如何保證一致性,講到zookeeper保證數(shù)據(jù)一致性的協(xié)議,然后展開講Zookeeper集群Leader選舉,包括集群三種節(jié)點(diǎn)的類型,ZAB協(xié)議中

    2024年02月07日
    瀏覽(19)
  • ZooKeeper的應(yīng)用場景(集群管理、Master選舉)

    ZooKeeper的應(yīng)用場景(集群管理、Master選舉)

    隨著分布式系統(tǒng)規(guī)模的日益擴(kuò)大,集群中的機(jī)器規(guī)模也隨之變大,因此,如何更好地進(jìn)行集群管理也顯得越來越重要了。 所謂集群管理,包括集群監(jiān)控與集群控制兩大塊,前者側(cè)重對集群運(yùn)行時狀態(tài)的收集,后者則是對集群進(jìn)行操作與控制。在日常開發(fā)和運(yùn)維過程中,我們經(jīng)

    2024年02月12日
    瀏覽(23)
  • zookeeper選舉流程源碼分析

    zookeeper選舉流程源碼分析 選舉的代碼主要是在 QuorumPeer.java 這個類中。 它有一個內(nèi)部枚舉類,用來表示當(dāng)前節(jié)點(diǎn)的狀態(tài)。 LOOKING: 當(dāng)前節(jié)點(diǎn)在選舉過程中 FOLLOWING:當(dāng)前節(jié)點(diǎn)是從節(jié)點(diǎn) LEADING: 當(dāng)前節(jié)點(diǎn)是主節(jié)點(diǎn) OBSERVING: 當(dāng)前節(jié)點(diǎn)是觀察者狀態(tài),這種狀態(tài)的節(jié)點(diǎn)不參與選舉的投

    2024年02月11日
    瀏覽(21)
  • 如何保證分布式系統(tǒng)中服務(wù)的高可用性:應(yīng)對 ZooKeeper Leader 節(jié)點(diǎn)故障的注冊處理策略

    作者:zhaokk 在現(xiàn)代分布式系統(tǒng)中,高可用性是一個至關(guān)重要的。分布式系統(tǒng)中的各個組件需要保證在各種異常情況下仍然能夠正常工作,確保系統(tǒng)的穩(wěn)定性和可靠性。ZooKeeper(以下簡稱為zk)作為一種常用的分布式協(xié)調(diào)服務(wù),為分布式系統(tǒng)中的各種任務(wù)提供了基礎(chǔ)支持

    2024年02月11日
    瀏覽(26)
  • 使用Zookeeper對集群節(jié)點(diǎn)進(jìn)行管理

    使用Zookeeper對集群節(jié)點(diǎn)進(jìn)行管理

    Zookeeper是Hadoop生態(tài)系統(tǒng)中分布式的服務(wù)管理框架,負(fù)責(zé)存儲和管理集群中的公共數(shù)據(jù)如配置信息等,并且對節(jié)點(diǎn)進(jìn)行注冊和通知管理。它具有如下幾個特點(diǎn): 集群由一個領(lǐng)導(dǎo)者(Leader),多個跟隨者(Follower)組成 集群中只要有半數(shù)以上節(jié)點(diǎn)存活,Zookeeper集群就能正常服務(wù)。

    2024年02月06日
    瀏覽(17)
  • Zookeeper集群單節(jié)點(diǎn)啟動成功但未同步其他節(jié)點(diǎn)數(shù)據(jù)

    Zookeeper集群單節(jié)點(diǎn)啟動成功但未同步其他節(jié)點(diǎn)數(shù)據(jù)

    首先排查節(jié)點(diǎn)啟動是否正常: 在zookeeper的bin目錄下執(zhí)行:sh zkServer.sh status 判斷當(dāng)前節(jié)點(diǎn)數(shù)據(jù)leader 還是follower ?節(jié)點(diǎn)都啟動正常,但某一個zookeeper集群節(jié)點(diǎn)(下面簡稱“異常節(jié)點(diǎn)”)不同步其他節(jié)點(diǎn)數(shù)據(jù),解決步驟: 1、查看異常節(jié)點(diǎn)的配置文件(**/zookeeper/conf/zoo.cfg) 2、找到

    2024年02月11日
    瀏覽(18)
  • Zookeeper 集群中節(jié)點(diǎn)之間數(shù)據(jù)是如何同步的

    1.首先集群啟動時,會先進(jìn)行領(lǐng)導(dǎo)者選舉,確定哪個節(jié)點(diǎn)是 Leader ,哪些節(jié)點(diǎn)是 Follower 和 Observer 2.然后 Leader 會和其他節(jié)點(diǎn)進(jìn)行數(shù)據(jù)同步,采用發(fā)送快照和發(fā)送 Diff 日志的方式 3.集群在工作過程中,所有的寫請求都會交給 Leader 節(jié)點(diǎn)來進(jìn)行處理,從節(jié)點(diǎn)只能處理讀請求 4.

    2024年02月09日
    瀏覽(17)
  • Kafka學(xué)習(xí)--3、Kafka Broker、節(jié)點(diǎn)服役和退役、Kafka 副本、Leader 選舉流程、故障處理

    Kafka學(xué)習(xí)--3、Kafka Broker、節(jié)點(diǎn)服役和退役、Kafka 副本、Leader 選舉流程、故障處理

    1.1 Kafka Broker工作流程 1.1.1 Zookeeper儲存的Kafka信息 (1)啟動Zookeeper集群、再啟動Kafka集群,然后啟動Zookeeper客戶端 (2)通過ls命令可以查看kafka相關(guān)信息。 1.1.2 Kafka Broker總體工作流程 1、模擬Kafka上下線,Zookeeper中數(shù)據(jù)變化 (1)查看/kafka/brokers/ids 路徑上的節(jié)點(diǎn)。 (2)查看

    2024年02月10日
    瀏覽(39)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包