JAVA複習筆記分布式篇:zookeeper

來源:互聯網
上載者:User

標籤:com   應用程式   透明   32位   目的   問題   Google   同步   電腦   

前言:終於到分布式篇,前面把JAVA的一些核心知識複習了一遍,也是一個JAVA程式員最基本要掌握的知識點,接下來分布式的知識點算是互連網行業的JAVA程式員必備的技能;

概念:ZooKeeper是一個分布式的,開放源碼的分布式應用程式協調服務,是Google的Chubby一個開源的實現,是Hadoop和Hbase的重要組件。它是一個為分布式應用提供一致性服務的軟體,提供的功能包括:配置維護、網域名稱服務 (DNS)、分布式同步、組服務等

關鍵詞:分布式,一致性服務 

講得通俗一點,zookeeper的誕生就是為瞭解決分布式一致性的問題。

什麼是分布式一致性?

分布式:分布式系統是由一組通過網路進行通訊、為了完成共同的任務而協調工作的電腦節點群組成的系統。分布式系統的出現是為了用廉價的、普通的機器完成單個電腦無法完成的計算、儲存任務。其目的是利用更多的機器,處理更多的資料

一致性:指對每個節點一個資料的更新,整個叢集都知道更新,並且是一致的 ;

PS:通俗一點以前一台伺服器支撐一個系統的模式升級為多台伺服器(多個容器)去支撐一個系統,這樣這個系統的並發、容災等各方面的能力將得到大大提升(傳統的ngix和叢集也能做到),分布式和叢集最大的一個區別是分布式的節點都是不同業務(比如帳號系統,訂單系統,物流系統,商品系統各自部署在不同伺服器上)這樣做的好處是可以根據不同模組的特性合理地分配資源(比如帳號系統訪問量很大,需要部署3-5台機器,而物流系統的訪問量較小,只需要部署1-2台伺服器即可),一致性就是雖然帳號系統部署了3台伺服器,對於client而言是透明的(訂單系統調用帳號系統的服務,不用知道調用的哪台伺服器上的系統,  結果每次都能得到等冪),那麼如何保證每次都能得到這個等冪結果?也就是zookeeper的要解決的問題

基本架構圖

 

 角色:

  群首(leader): Leader作為整個ZooKeeper叢集的主節點,負責響應所有對ZooKeeper狀態變更的請求;

  追隨者(follower):除了響應本伺服器上的讀請求外(exists,getData,getChildren等唯讀請求),follower還要處理leader的提議,並在leader提交該提議時在本地也進行提交

  觀察者(observer):Observer和Follower比較相似,只有一些小區別:首先observer不參加選舉也不響應提議;其次是observer不需要將事務持久化到磁碟,一旦observer被重啟,需要從leader重新同步整個名字空間。

整個zookeeper叢集只有這3種角色,可以看到leader只有一個,所有對資料變更的請求都需要有leader去調度(leader會向所有節點發送原子廣播,收到一半以上的節點都同意的訊息後才真正提交這個事務),所以leader這個節點相當重要,那如何確立這個learder呢?

答案是選舉,zookeeper採用選舉的方式確立leader(觸發選舉的情境分為2種,一種是伺服器初始化啟動時候,還有一種是伺服器運行期間無法和Leader保持串連)

講解選舉過程前先需要瞭解幾個名詞

electionEpoch:每執行一次leader選舉,electionEpoch就會自增,用來標記leader選舉的輪次

peerEpoch:每次leader選舉完成之後,都會選舉出一個新的peerEpoch,用來標記事務請求所屬的輪次

zxid:事務請求的唯一標記,由leader伺服器負責進行分配。由2部分構成,高32位是上述的peerEpoch,低32位是請求的計數,從0開始。所以由zxid我們就可以知道該請求是哪個輪次的,並且是該輪次的第幾個請求。

lastProcessedZxid:最後一次commit的事務請求的zxid

選舉過程(第一次部署):假設當前有3台伺服器(server0,server1,server3)部署zk ,依次啟動,第一次投票時候每台伺服器都會把票投給自己,投票資訊包含自身節點id和事務id   zxid,第一次server0投出(0,0),server1投出(1,0)server2投出(2,0)

每個節點投完自己的票之後會接收其他伺服器的投票資訊,server0接到server1的投票(1,0),因為     

==============================================未完待續=======================================


  

 

JAVA複習筆記分布式篇:zookeeper

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.