天天看點

分布式系統概念與Zookeeper簡介zookeeper簡介分布式概念zk資料模型介紹

分布式系統概念與Zookeeper簡介

  • zookeeper簡介
    • 特點
    • 目錄說明
  • 分布式概念
    • 優點
  • zk資料模型介紹
    • Zookeeper資料模型基本操作
    • zk的作用展現
    • zk特性-session的基本原理
    • 常用的zookeeper指令行

zookeeper簡介

官方文檔對zookeeper的介紹:

Apache ZooKeeper is an effort to develop and maintain an open-source server which enables highly reliable distributed coordination.

ApacheZooKeeper是一項開發和維護開源伺服器的工作,它能夠提供高可靠的分布式協調服務。

zookeeper主要有以下幾個作用:

1)中間件,提供協調服務。

2)作用于分布式系統,發揮其優勢,可以為大資料服務。

3)支援java,提供java和c語言的用戶端api。

特點

1)一緻性

資料一緻性,按照順序分批入庫。

2)原子性

事務要麼成功要麼失敗。

3)單一視圖

用戶端連接配接叢集中的任一zk結點,資料都是一緻的。

4)可靠性

每次對zk的操作狀态都會儲存在服務端。

5)實時性

用戶端可以讀取到zk服務端的最新資料 。

目錄說明

Bin:主要的一些執行指令。

Conf:存放配置檔案,需要修改zk.cfg。

Contrib:附加的一些功能。

Dist-maven:Mvn編譯後的目錄。

Docs:文檔。

Lib:需要依賴的jar包。

Recipes:案例demo代碼。

src:源檔案。

分布式概念

分布式系統主要有以下幾個特征:

1)很多台計算機組成一個整體,一個整體一緻對外并且處理同一請求。

2)内部的每台計算機都可以互相通信(rest/rpc)。

3)用戶端到服務端的一次請求到相應結束會曆經多台計算機。

優點

1)增大系統容量

2)加強系統可用

3)提高子產品重用度

4)提高運作速度

5)系統可擴充性高

zk資料模型介紹

Zookeeper是一個樹形結構,類似于前端開發中的tree.js元件

分布式系統概念與Zookeeper簡介zookeeper簡介分布式概念zk資料模型介紹

1)zk的資料模型也可以了解為linux/unix的檔案目錄:/usr/local/…

2)每一個結點都稱之為znode,它可以有子結點,也可以有資料

3)每個結點分為臨時結點和永久結點,臨時結點在用戶端斷開後消失

4)每個zk結點都有各自的版本号,可以通過指令行來顯示結點資訊

5)每當結點資料發生變化,那麼該結點的版本号會累加(樂觀鎖)

6)删除/修改過時結點,版本号不比對則會報錯

7)結點可以設定權限acl,可以通過權限來限制使用者的通路

Zookeeper資料模型基本操作

分布式系統概念與Zookeeper簡介zookeeper簡介分布式概念zk資料模型介紹

zk的作用展現

1)master結點選舉,主結點挂了以後,從結點就會接手工作,并且保證這個結點是唯一的,這也是所謂首腦模式,進而保證我們的叢集是高可用的

2)統一配置檔案管理,隻需要部署一台伺服器,則可以把相同的配置檔案同步更新到其他所有伺服器,此操作在雲計算中用的特别多

3)釋出與訂閱,類似消息隊列MQ,dubbo釋出者把資料存在znode上,訂閱者會讀取這個資料

4)提供分布式鎖,分布式環境中不同程序之間争奪資源,類似于多線程中的鎖

5)叢集管理,叢集中保證資料的強一緻性(一緻性可分為強一緻性,順序一緻性,弱一緻性)

zk特性-session的基本原理

zookeeper中session意味着一個實體連接配接,用戶端連接配接伺服器成功之後,會發送一個連接配接型請求,此時就會有session 産生

1)用戶端與服務端之間的連接配接存在會話

2)每個會話都可以設定一個逾時時間

3)心跳結束,session則過期

4)Session過期,則臨時結點znode會被抛棄

5)心跳機制:用戶端向服務端的ping包請求

常用的zookeeper指令行

ls /

:檢視目錄

分布式系統概念與Zookeeper簡介zookeeper簡介分布式概念zk資料模型介紹

ls2 /

:顯示資料的目錄和狀态資訊

分布式系統概念與Zookeeper簡介zookeeper簡介分布式概念zk資料模型介紹

cZxid Zookeeper為結點配置設定的Id

cTime 結點建立時間

mZxid 修改後的id

mtime 修改時間

pZxid 子結點id

cversion 子結點的version //更新一次版本加一

dataVersion 目前結點資料的版本号

aclVersion 權限Version

dataLength 資料長度

numChildren 子結點個數

stat /

:查詢資料的狀态資訊

分布式系統概念與Zookeeper簡介zookeeper簡介分布式概念zk資料模型介紹

get /

:取出結點資料

分布式系統概念與Zookeeper簡介zookeeper簡介分布式概念zk資料模型介紹

create /xxx content

:創造xxx結點,内容為content

分布式系統概念與Zookeeper簡介zookeeper簡介分布式概念zk資料模型介紹

create -e /xxx content

:創造xxx臨時結點

分布式系統概念與Zookeeper簡介zookeeper簡介分布式概念zk資料模型介紹
分布式系統概念與Zookeeper簡介zookeeper簡介分布式概念zk資料模型介紹

可以發現ephemeralOwner發生了變化,不再是0x0,0x0為永久結點,上圖為臨時結點。臨時結點會話斷開後經過心跳機制的時間周期就會被消除:

分布式系統概念與Zookeeper簡介zookeeper簡介分布式概念zk資料模型介紹

create -s xxx content

:建立順序結點

分布式系統概念與Zookeeper簡介zookeeper簡介分布式概念zk資料模型介紹

節點名後面的數字會遞增

set /xxx content

:修改結點内容

分布式系統概念與Zookeeper簡介zookeeper簡介分布式概念zk資料模型介紹

set /xxx content number

:使用樂觀鎖進行修改

分布式系統概念與Zookeeper簡介zookeeper簡介分布式概念zk資料模型介紹

如果不使用最新的datafVersion會出錯

delete /xxx

:删除結點

分布式系統概念與Zookeeper簡介zookeeper簡介分布式概念zk資料模型介紹

delete /xxx number

:删除對應版本号的結點