国产免费爽爽视频在线观看,69热视频,俄罗斯久久

91嫩草国内在线,韩国理论电影免费看,6969精品视频在线观看,1024在线视频精品免费,色中色污,饭冈佳奈子在线

分布式協調服務zookeeper知多少

分布式協調服務zookeeper知多少

7 years ago 1 9076

zookeeper簡介

由于之前了解一個分布式框架(dubbo)時,其中涉及到zookeeper,因此今天就先來大概的介紹一下zookeeper。zookeeper是一個用來管理大量的主機的分布式協調服務。

(一) 分布式應用程序

分布式應用程序可以通過在它們之間協調以完成特定的任務,快速且有效的方式在多個系統中的網絡在給定時間(同時)運行
分布式應用程序有兩部分,分別是:服務器和客戶端應用程序。如下圖所示:

(二) 分布式應用程序的優點

可靠性 可擴展性 透明性

(三) zookeeper提供的服務

命名服務 配置管理 集群管理 節點領導者選舉 鎖定和同步服務 數據注冊表

ZooKeeper基礎

(一) ZooKeeper的體系結構

描繪ZooKeeper 的“客戶端 – 服務器架構,如下圖所示

ZooKeeper 架構的一部分組件如下表中所解釋。
1. Client:客戶端,發送消息到服務器。
2. Server:服務器,ZooKeeper集成的一個節點,提供所有的服務給客戶。
3. 合組:ZooKeeper 服務器組。
4. Leader:它執行自動恢復,如果任何連接的節點的故障的服務器節點。
5. Follower:遵循領導指示服務器節點

(二) 分層命名空間

下圖顯示了用于內存中表示 ZooKeeper 文件系統的樹形結構。 ZooKeeper節點被稱為znode。每個znode由一個名稱識別,并通過路徑(/)序列隔開。

zookeeper名字空間由節點znode構成,其組織方式類似文件系統,其中各個節點相當于目錄和文件,通過路徑作為唯一標識。與文件系統不同的是,每個節點具有與之對應的數據內容,同時也可以具有子節點。在 ZooKeeper 數據模型中每個 znode 維護一個 stat 結構。 一個統計(stat )只是提供了一個 znode 元數據。 它由版本號、動作控制列表(ACL)、時間戳、數據長度組成。

ZooKeeper組件

同一個zookeeper服務下的server有兩種,一種是leader server,另一種是follower server。leader特殊之處在于它有決定權。在zookeeper整個服務下的每臺server將復制各個組件。Replicated Database是包含了所有數據的內存數據庫

Zookeeper之leader

讓我們來分析一下一個領導節點在ZooKeeper集合的選舉。考慮集群中有N多的節點。領導人選舉的過程如下
所有節點創建一個順序,znode具有相同路徑,/app/leader/guid_。
ZooKeeper 的集合將追加的10位序列號的路徑。
對于給定的實例,它在znode創建最小數量的節點成為領導者以及所有其他節點的追隨者。
每一個追隨者節點監控下一個最小號的znode。

Zookeeper安裝配置

(一) 安裝Java(略)

(二) ZooKeeper框架的安裝

1. 下載并tar開解壓(略)
2. 創建配置文件
打開 并編輯conf/zoo.cfg 配置文件,并將以下所有參數設置為開始點。

1
2
3
4
5
tickTime = 2000
dataDir = /path/to/zookeeper/data
clientPort = 2181
initLimit = 10
syncLimit = 5

3. 啟動ZooKeeper服務器

1
$ bin/zkServer.sh start

4. 啟動 CLI

1
$ bin/zkCli.sh

5. 停止ZooKeeper服務器

1
$ bin/zkServer.sh stop

Zookeeper CLI

ZooKeeper 命令行界面(CLI)是用來與 ZooKeeper 集成作開發進行交互的。這是在調試和使用不同的選項時的工作有用。
為了執行ZooKeeper的CLI操作, ZooKeeper服務器首先要啟動 (“bin/zkServer.sh start”) , 然后使用 ZooKeeper 客戶端 (“bin/zkCli.sh”). 當客戶端啟動后,可以執行以下操作:(1)創建znodes,(2)獲取數據,(3)監視 znode 變化,(4)設置數據,(5)創建 znode 的子 znode,(6)列出一個 znode 的子 znode,(7)檢查狀態,(8)刪除一個 znode

(一) 創建Znodes

1
create  /path /data

(二) 獲取數據

1
get  /path

(三) 監視

1
 get  /path [watch] 1

(四) 設置數據

1
 set  /path /data

(五) 創建子znode

1
create  /parent/path/subnode/path /data

(六) 列出子znode

1
ls  /path

(七) 檢查狀態

1
stat  /path

(八) 刪除Znode

1
rmr  /path

Zookeeper 常用API

ZooKeeper有一個Java和C綁定的官方API。ZooKeeper社區提供了對于大多數語言(.NET,Python等)的非官方API。使用ZooKeeper的API,應用程序可以連接,互動,操作數據,協調,以及從ZooKeeper集成斷開。

(一) ZooKeeper的API基礎知識

客戶端應遵循下面給出帶 ZooKeeper 集成一個清晰的交互步驟。
連接到ZooKeeper 。ZooKeeper 集成分配客戶端的會話ID。
定期發送心跳到服務器。否則,ZooKeeper 集成過期的會話ID,那么客戶端需要重新連接。
獲得/設置只要znodes會話ID是活動的。
從 ZooKeeper 集成斷開,當所有的任務都完成后。如果客戶端處于非活動狀態較長時間,那么 ZooKeeper 集成會自動斷開客戶機。

(二) Java綁定

讓我們這一章中理解最重要的ZooKeeper API。ZooKeeper API的中心部分是ZooKeeper 類。它提供了一些選項來連接 ZooKeeper 集成在其構造,有以下幾種方法
? connect ? 連接到 ZooKeeper 的集成
? create ? 創建一個 znode
? exists ? 檢查znode是否存在及其信息
? getData ? 從一個特定的znode獲取數據
? setData ? 設置數據在特定znode
? getChildren ? 得到一個特定 znode 的所有可用子節點
? delete ? 得到一個特定的 znode 及其所有子節點
? close ? 關閉連接

(三) 連接到 ZooKeeper 集合

ZooKeeper類通過它的構造函數提供了連接功能。構造函數如下:

1
ZooKeeper(String connectionString, int sessionTimeout, Watcher watcher)

(四) 創建一個Znode

ZooKeeper類提供了一個方法來在集合 ZooKeeper 創建一個新的 znode。創建方法如下:

1
create(String path, byte[] data, List<ACL> acl, CreateMode createMode)

(五) Exists – 檢查一個Znode的存在

exists 方法來檢查 znode 的存在。如果指定的 znode 存在它返回一個 znode 元數據。exists 方法如下

1
exists(String path, boolean watcher)

(六) getData 方法

getData方法來獲取連接在指定 znode 及其狀態的數據。getData方法如下

1
getData(String path, Watcher watcher, Stat stat)

(七) setData 方法

SetData方法來修改附著在指定 znode 的數據。SetData方法如下

1
setData(String path, byte[] data, int version)

(八) getChildren 方法

getChildren方法來得到一個特定的 znode 所有子節點。getChildren 方法如下

1
getChildren(String path, Watcher watcher)

(九) 刪除一個Znode

delete 方法來刪除指定 znode。delete方法如下

1
delete(String path, int version)