4.5 zookeeper分散式

尹成發表於2018-11-15

一、 為什麼需要zookeeper
 大部分分散式應用需要一個主控、協調器或控制器來管理物理分佈的子程式(如資源、任務分配等)
 大部分應用需要開發私有的協調程式,缺乏一個通用的機制
 協調程式的反覆編寫浪費,且難以形成通用、伸縮性好的協調器
 zookeeper可以提供通用的分散式鎖服務,用以協調分散式應用,它是一個開源的分散式應用協調服務
 分散式:多臺計算機、它們之間通過網路進行通訊、它們有共同的目標

 協調服務

二、 zookeeper簡介

  1. zookeeper是什麼
     zookeeper是Google的Chubby一個開源的實現,是hadoop的分散式協調服務
     它包含一個簡單的原語集,分散式應用程式可以基於它實現同步服務,配置維護和命名服務等
     將zookeeper翻譯過來,是動物園管理員,可以想象,它是來管理動物的(大象、蜜蜂、小豬)
     它的架構如下圖:

  2. zookeeper能幫我們做什麼
     分散式系統協調:多個節點一起完成一個動作
     叢集成員管理
     分散式鎖
     選主
     分散式事務
     釋出/訂閱(釋出者將資料釋出到zk的一個或一系列節點,訂閱者進行資料訂閱,當有資料變化時,可以及時得到資料的變化通知)

 負載均衡
3. zookeeper的特性
 zookeeper是簡單的
 zookeeper是富有表現力的
 zookeeper是高可用的
 zookeeper是鬆耦合的互動方式
 zookeeper是一個資源庫
4. zookeeper的資料模型
 層次化的目錄結構,命名符合常規檔案系統規範
 每個節點在zookeeper中叫做znode,並且其有一個唯一的路徑標識
 znode中的資料可以有多個版本,比如某一個路徑下存有多個資料版本,那麼查詢這個路徑下的資料就需要帶上版本
 節點不支援部分讀寫,而是一次性完整讀寫

 其中每個單獨的長方形我們稱之為一個節點(znode),節點(znode)的全名稱是整個目錄名,比如Seerver1節點的全節點名稱是/NameService/Server1
5. zookeeper的下載地址
http://mirrors.cnnic.cn/apache/zookeeper/zookeeper-3.4.9/
三、 zookeeper的安裝

  1. 手動安裝(單機、偽分散式、完全分散式)
     解壓,建立一個data目錄,一個log目錄
     在data目錄建立myid檔案,server1寫1
     複製配置檔案為zoo.cfg,編輯配置檔案,需要修改的位置如下:
    dataDir=/xxx/data
    dataLogDir=/xxx/log
    server.1=主機名:2888:3888
     配置環境變數
    zkServer.sh start即可開啟
  2. cloudera manager自動化部署
    四、 zookeeper基本概念
  3. 叢集角色
     Leader客戶端提供讀和寫服
     Follower提供讀服,所有寫服都需要轉交給Leader角色,參與選舉
     Observer提供讀服,參選舉過程,一般是了增強zk叢集的讀請求併發能力
  4. 會話
     zk的客戶端與zk的服端之間的連線
     通過心跳檢測保持客戶端連線的存活
     接收來自服端的watch事件通知
     設定超時時間
  5. zookeeper節點型別
     persistent:persistent節點不和特定的session繫結,不會隨著建立該節點的session的結束而消失,而是一直存在,除非該節點被顯式刪除
     ephemeral:ephemeral節點是臨時性的,如果建立該節點的session結束了,該節點就會被自動刪除,ephemeral節點不能擁有子節點,雖然ephemeral節點與建立它的session繫結,但只要該該節點沒有被刪除,其他session就可以讀寫該節點中關聯的資料,使用-e引數指定建立ephemeral節點
     sequence:嚴格的說,sequence並非節點型別中的一種,sequence節點既可以是ephemeral的,也可以是persistent的,建立sequence節點時,ZooKeeper server會在指定的節點名稱後加上一個數字序列,該數字序列是遞增的,因此可以多次建立相同的sequence節點,而得到不同的節點,使用-s引數指定建立sequence節點
  6. 版本
     Version:當前Znode的版本
     Cversion:當前Znode的子節點的版本
     Aversion:當前Znode的ACL(訪問控制)版本
  7. watcher
     作用於Znode節點
     watcher設定後,一旦觸發一次就會失效,如果需要一直監聽,就需要再次註冊
     多種事件通知:資料更新,子節點狀態等

學院Go語言視訊主頁
https://edu.csdn.net/lecturer/1928

清華團隊帶你實戰區塊鏈開發
掃碼獲取海量視訊及原始碼 QQ群:721929980
在這裡插入圖片描述

相關文章