大數據開發之zookeeper知識點總結

ZOOKEEPER

 

 

       一、概述

           是一個開源的分佈式的,爲分佈式應用提供協調服務的Apache項目

           基於觀察者模式設計的分佈式服務管理框架,它負責存儲和管理大家都關心的數據,然後接受觀察者的註冊,一旦這些數據發送變化,zookeeper就將負責通知註冊的觀察者做出相應的反應,從而實現集羣中類似Master/Slave管理模式

           Zookeeper = 文件系統 + 通知機制

 

 

       二、應用場景

           提供的服務包括:

                 1、分佈式消息和協調機制

                 2、服務器節點動態上下線

                 3、統一配置管理

                 4、負載均衡

                 5、集羣管理

           場景:

                 1、數據發佈與訂閱

                 2、軟負載均衡

                 3、集羣管理

 

 

       三、本地模式安裝部署

           配置:

                 將zoo_sample.cfg改成zoo.cfg

                 修改dataDir路徑爲zookeeper-3.4.10/data/zkData

                 創建zkData文件夾

           參數解讀:

                 tickTime

                      通信心跳數(默認2000,即2秒)

                 initLimit

                      LF初始通信時限(默認10心跳數)

                 syncLimit

                      LF同步通信時限(默認5心跳數)

                 dataDir

                      數據文件目錄+數據持久化路徑

                 ClientPort

                      客戶端連接端口2181

           分佈式安裝部署在本地基礎上:

                 zoo.cfg加配置

                      server.1=hadoop001:2888:3888

                 dataDir下配置一個文件myid

 

 

       四、數據結構

           數據模型的結構與Unix文件系統很類似,整體上可以看做是一棵樹,每個節點稱作一個ZNode

           很顯然zookeeper集羣自身維護了一套數據結構。這個存儲結構是一個樹形結構,其上的每一個節點,我們稱之爲“znode”,每一個znode默認能夠存儲1MB的數據,每個ZNode都可以通過其路徑唯一標識

       五、選舉機制

           1、半數機制

                 集羣中半數以上機器存活,集羣可用。所以zookeeper適合裝在奇數臺機器上

           2、雖然在配置文件中沒有指定master和slave,但是在工作時,是有一個節點爲leader,其他的則爲follower,leader是通過內部的選舉機制臨時產生的

       六、特點

           1、zookeeper:一個領導者(leader),多個跟隨者(follower)組成的集羣

           2、leader負責進行投票的發起和決議,更新系統狀態

           3、follower用於接收客戶請求並向客戶端返回結果,在選舉leader過程中參與投票

           4、集羣中只要有半數以上節點存活,zookeeper集羣就能正常服務

           5、全局數據一致:每個server保存一份相同的數據副本,client無論連接到哪個server,數據都是一致的

           6、更新請求順序進行,來自同一個client的更新請求按其發送順序依次執行

           7、數據更新原子性,一次數據更新要麼成功,要麼失敗

           8、實時性,在一定的時間範圍內,client能讀到最新數據

      Znode類型

           短暫(ephemeral)

                 臨時目錄節點

                 臨時順序編號目錄節點

           持久(persistent)

                 持久化目錄節點

                 持久化順序編號目錄節點

       七、監聽器原理

           1、main()線程

           2、創建zkClient

           3、getChildren("/" , true)

           4、Client:ip:port:/path

           5、"/"路徑數據發生變化

           6、process()

       八、監聽服務器節點動態上下線案例

           需求:某分佈式系統中,主節點可以有多臺,可以動態上下線,任意一臺客戶端都能實時感知到主節點服務器的上下線

           分析

                 1、服務端啓動時去註冊信息(創建都是臨時節點)

                 2、客戶端啓動就去getChildren,獲取到當前在線服務器列表,並且註冊監聽

                 3、服務器節點下線

                 4、服務器節點上下線事件通知就會發給客戶端

                 5、客戶端回調process()  {重新再去獲取服務器列表,並註冊監聽}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章