1. 程式人生 > >Zookeeper(一)——理論篇(一)

Zookeeper(一)——理論篇(一)

一、概述

  1. Zookeeper是一個開源的分散式的,為分散式應用提供協調服務的Apache專案。
  2. Zookeeper從設計模式角度來理解:是一個基於觀察者模式設計的分散式服務管理框架,它負責儲存和管理大家都關心的資料,然後接受觀察者的註冊,一旦這些資料的狀態發生變化,Zookeeper就將負責通知已經在Zookeeper上註冊的那些觀察者做出相應的反應,從而實現叢集中類似Master/Slave管理模式
  3. Zookeeper=檔案系統+通知機制

二、應用場景

提供的服務包括:分散式訊息同步和協調機制、伺服器節點動態上下線、統一配置管理、負載均衡、叢集管理等。

  1. 分散式訊息同步和協調機制
  2. 伺服器節點動態上下線
  3. 負載均衡
  4. 叢集管理

三、單機模式安裝部署

  1. 安裝流程詳見:淺談SpringBoot整合Dubbo(附zookeeper的單機安裝說明)
  2. 引數說明
    • 1). tickTime:通訊心跳數,Zookeeper伺服器心跳時間,單位毫秒:
      Zookeeper使用的基本時間,伺服器之間或客戶端與伺服器之間維持心跳的時間間隔,也就是每個tickTime時間就會發送一個心跳,時間單位為毫秒。 它用於心跳機制,並且設定最小的session超時時間為兩倍心跳時間。(session的最小超時時間是2*tickTime)
    • 2). initLimit:LF初始通訊時限:
      叢集中的follower跟隨者伺服器(F)與leader領導者伺服器(L)之間初始連線時能容忍的最多心跳數(tickTime的數量),用它來限定叢集中的Zookeeper伺服器連線到Leader的時限。 投票選舉新leader的初始化時間 Follower在啟動過程中,會從Leader同步所有最新資料,然後確定自己能夠對外服務的起始狀態。 Leader允許F在initLimit時間內完成這個工作。
    • 3). syncLimit:LF同步通訊時限:
      叢集中Leader與Follower之間的最大響應時間單位,假如響應超過syncLimit * tickTime, Leader認為Follwer死掉,從伺服器列表中刪除Follwer。 在執行過程中,Leader負責與ZK叢集中所有機器進行通訊,例如通過一些心跳檢測機制,來檢測機器的存活狀態。 如果L發出心跳包在syncLimit之後,還沒有從F那收到響應,那麼就認為這個F已經不線上了。
    • 4). dataDir:資料檔案目錄+資料持久化路徑:
      儲存記憶體資料庫快照資訊的位置,如果沒有其他說明,更新的事務日誌也儲存到資料庫。
    • 5). clientPort:客戶端連線埠:
      監聽客戶端連線的