zookeeper -- 第一章 zookeeper介紹

概述:做爲一枚搬磚工人,只能不能的學習,稍微偷懶感受就要被淘汰了,趕忙彌補下。下面開始囉嗦的理論知識闡述,雖然囉嗦可是對於後續理解仍是頗有必要。java

一、Zookeeper介紹

Zookeeper是一個高性能,分佈式的,開源分佈式應用協調服務。它提供了簡單原始的功能,分 布式應用能夠基於它實現更高級的服務,好比同步,配置管理,集羣管理,名空間。它被設計爲 易於編程,使用文件系統目錄樹做爲數據模型。服務端跑在java上,提供java和C的客戶端 APInode

什麼是分佈式?linux

什麼是協調服務?編程

二、Zookeeper介紹 -- 分佈式系統

A distributed system consists of multiple computers that communicate through a computer network and interact with each other to achieve a common goal數組

  • 多臺計算機構成網絡

  • 計算機之間經過我網絡進行通訊數據結構

  • 彼此進行交互併發

  • 共同目標負載均衡

三、Zookeeper介紹 -- 分佈式系統協調

協調: 多個節點一塊兒完成的一個動做框架

舉例:

  • 集羣成員管理 (Group membership)

  • 鎖 (Locking)

  • 選主 (Leader Election)

四、Zookeeper介紹 -- 數據模型

輸入圖片說明

  • 分層結構

  • 樹形結構中的每一個節點叫作Znode

  • 每一個Znode都有數據 (byte[] 數組),也能夠有子節點

  • 節點路徑 一、斜線分割: /Zoo/Duck 二、沒有相對路勁

  • 經過數據結構stat來存儲數據的變化 ACL的變化和時間戳

  • 數據發生變化時,版本號會遞增

  • 能夠對Znode中的數據進行讀寫操做

五、Zookeeper介紹 -- 典型應用場景

一、數據發佈/訂閱

數據發佈/訂閱即所謂的配置中心:發佈者將數據發佈到zk的一個或者一系列節點上,訂閱者進行數據訂閱,當數據有變化時,能夠及時獲得數據的變化通知

輸入圖片說明

二、負載均衡

本質是利用zookeeper的配置管理功能,涉及的步驟爲:

1.服務提供者把本身的域名及、IP、端口的映射註冊到zk中

2.服務消費者經過域名從zk中獲取到對應的IP及端口,這個IP及端口有多個,只是獲取其中一個

3.當服務提供者宕機時,對應的域名與IP的對應就會減小一個映射

4.阿里的dubbo服務框架就是基於zk來實現服務路由和負載

三、命名服務

在分佈式系統中,命名服務(ͧName Serviceͨ)也是很重要的應用場景,經過zk也能夠實現相似 於J2EE中的JNDI的效果ͺ分佈式環境下,命名服務更可能是資源定位,並非是真正的實體資源, 其本質也是用到zk的集中配置管理和查找

四、分佈式協調/通知

  • 經過watcher和通知機制實現

  • 分佈式鎖

  • 分佈式事務

五、集羣管理

  • 當前集羣中的機器數量

  • 集羣中機器的運行時狀態

  • 集羣中節點的上下線操做

  • 集羣節點的統一配置

六、Master 選舉

  • 臨時節點

  • 順序節點

七、分佈式鎖

  • 排它鎖

  • 共享鎖

八、分佈式隊列

  • FIFO

五、Zookeeper介紹 -- 基本概念

一、集羣角色

  • Leader:爲客戶端提供讀和寫服務

  • Follower:提供讀服務,全部寫服務都須要轉交給Leader角色,參與選舉

  • Observer:提供讀服務,不參與選舉過程,通常是爲了加強zk集羣的讀請求併發能力

二、會話ͧ(Session)

– Zk的客戶端與zk的服務端之間的鏈接

– 經過心跳檢測保持客戶端鏈接的存活

– 接收來自服務端的watch事件通知

– 能夠設置超時時間

三、數據節點(Znode)

  • 不是機器的意思

  • ZK樹形結構中的數據節點,用於存儲數據

  • 持久節點:一旦建立,除非主動調用刪除操做,不然一直存儲在zk上

  • 臨時節點:與客戶端的會話綁定,一旦客戶端會話失效,這個客戶端建立的全部臨時及誒單都會被移除

  • SEQUENTIAL Znode :建立節點時,若是設置屬性SEQUENTIAL,則會自動在節點名後面追加一個整型數字

四、版本

  • version : 當前Znode的版本

  • Cversion : 當前Znode的子節點的版本

  • Aversion : 當前Znode的ACL(訪問控制)版本

五、Watcher

  • 做用於Znode節點上

  • 多種事件通知:數據更新,子節點狀態等

五、ACL (Access Control Lists)

  • 相似於linux/unix的權限控制

  • CREATE:建立子節點的權限

  • READ:獲取節點數據和子節點列表的權限

  • WRITE:更新節點數據的權限

– DELETE:刪除子節點的權限

  • ADMIN:設置節點ACL的權限
相關文章
相關標籤/搜索