搜尋
首頁Javajava教程ZooKeeper資料​​模型

ZooKeeper資料​​模型

Jun 26, 2017 am 11:12 AM
zookeeper數據模型

ZooKeeper有一個分層的命名空間,類似分散式檔案系統。它們唯一的差異就在於在命名空間中每個節點可以有資料關聯作為它們的子節點。這就像有一個檔案系統允許檔案也作為檔案目錄。節點路徑通常表示為規範的、斜線分隔的絕對路徑。它們沒有相對路徑。任何包含在路徑當中的unicode字元都必須遵循以下約束:
1)空字元不能作為路徑名稱;
2)以下字串不能作為使用,這是優越它們顯示不夠友好,或容易引起混淆(\u0001 - \u001F and \u007F - \u009F)
3)以下字串是不允許的。 ( \ud800 - uF8FF, \uFFF0 - uFFFF)
4)"."字元可以作為名稱的一部分,但是"."和".."不能單獨存在用於表示一個節點的路徑,因為ZooKeeper沒有使用相對路徑。下述例子是無效的"/a/b/./c" or "/a/b/../c"
5)"zookeeper"關鍵字保留

ZNodes

在ZooKeeper樹狀結構中的每個節點都可以稱為znode。 Znodes維護一個狀態資料結構,包含資料變更版本號、ACL變更、時間戳記。版本號碼加上時間戳記可以允許ZooKeeper去進行快取換證和協調更新。每當一個znode的資料變更,版本號碼就會往上加。例如每當客戶端接收資料時,它也會接收到這個資料的版本。同時當客戶端執行更新或刪除操作時,它必須提供正在變更的znode節點的資料版本。如果znode提供的版本號不符合目前資料的實際版本號,更新將會失敗。

注意:

在一個分散式應用程式工程中,單字node可以認為是單一主機、一個伺服器、一個整體的其中某個成員,一個客戶端處理器等等。在ZooKeeper文件中,znodes被認為是資料節點。 Servers被認為是組成ZooKeeper服務的主機。 quorum peers被認為是組成一個整體的服務端,clients被認為是正在使用ZooKeeper服務的一個主機或是一個程序。

Znodes是程式設計師存取的主要實體。它們有許多功能值得我們了解的:

Watches(監聽器)

客戶端可以在znodes進行監聽。 znode的變化會觸發這個監聽器然後清除它。當一個監聽器被觸發的時候,ZooKeeper會給客戶端發送一個通知。

Data Access(資料存取)

在命名空間當中儲存在znode當中的資料是原子讀或寫的。讀取操作將會讀取znode關聯的所有資料字節,寫入操作將會取代所有資料。每個節點有Access Control List (ACL)資料存取清單用於限制誰可以做什麼。

ZooKeeper不是設計用於作為資料庫或大物件儲存的,相反的他是用來管理協調資料的。資料的來源形式可以是配置資訊、狀態資訊、地區資訊等等。不同形式的協調資料的通用屬性是他們都相對比較小,控制在KB位元組。 ZooKeeper客戶端和服務端都有合理性檢查以保證znodes小於1M數據,但是數據可以遠小於這個平均值。在相對比較大的資料進行操作將會導致操作花費的時間較長,從而影響到其他操作的延遲,因為這額外的時間需要透過網路或儲存媒體進行資料的遷移。如果大數據的儲存是必須的,通常處理這種資料的方式是保持在大儲存系統中,例如NFS或HDFS,然後在ZooKeeper中儲存指向資料儲存位置的指標。

Ephemeral Nodes(臨時節點)

ZooKeeper有臨時節點的概念。只要建立節點的會話還處於活躍狀態,那麼這些節點還是存在的,當會話關閉時,這些節點也會被刪除。因為這個行為所以臨時節點不允許有子節點。

Sequence Nodes -- Unique Naming(序列節點-獨特命名)

當創建節點的時候你可以請求ZooKeeper在路徑末尾增加一個單調遞增的計數器。這個計數器對這個父節點是唯一的。計數器的格式是%010d (10進位用0填滿),格式化以便用於簡單排序。例如"0000000001"。查看Queue Recipe 有一個例子用了這個特性。注意:這個用來儲存下一個序號的計數器是一個被父節點維護的有符號的int。這個計數器當遞增超過2147483647 會溢出(結果應該是"-2147483647")。

以上是ZooKeeper資料​​模型的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
如何將Maven或Gradle用於高級Java項目管理,構建自動化和依賴性解決方案?如何將Maven或Gradle用於高級Java項目管理,構建自動化和依賴性解決方案?Mar 17, 2025 pm 05:46 PM

本文討論了使用Maven和Gradle進行Java項目管理,構建自動化和依賴性解決方案,以比較其方法和優化策略。

如何使用適當的版本控制和依賴項管理創建和使用自定義Java庫(JAR文件)?如何使用適當的版本控制和依賴項管理創建和使用自定義Java庫(JAR文件)?Mar 17, 2025 pm 05:45 PM

本文使用Maven和Gradle之類的工具討論了具有適當的版本控制和依賴關係管理的自定義Java庫(JAR文件)的創建和使用。

如何使用咖啡因或Guava Cache等庫在Java應用程序中實現多層緩存?如何使用咖啡因或Guava Cache等庫在Java應用程序中實現多層緩存?Mar 17, 2025 pm 05:44 PM

本文討論了使用咖啡因和Guava緩存在Java中實施多層緩存以提高應用程序性能。它涵蓋設置,集成和績效優勢,以及配置和驅逐政策管理最佳PRA

如何將JPA(Java持久性API)用於具有高級功能(例如緩存和懶惰加載)的對象相關映射?如何將JPA(Java持久性API)用於具有高級功能(例如緩存和懶惰加載)的對象相關映射?Mar 17, 2025 pm 05:43 PM

本文討論了使用JPA進行對象相關映射,並具有高級功能,例如緩存和懶惰加載。它涵蓋了設置,實體映射和優化性能的最佳實踐,同時突出潛在的陷阱。[159個字符]

Java的類負載機制如何起作用,包括不同的類載荷及其委託模型?Java的類負載機制如何起作用,包括不同的類載荷及其委託模型?Mar 17, 2025 pm 05:35 PM

Java的類上載涉及使用帶有引導,擴展程序和應用程序類負載器的分層系統加載,鏈接和初始化類。父代授權模型確保首先加載核心類別,從而影響自定義類LOA

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
4 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

EditPlus 中文破解版

EditPlus 中文破解版

體積小,語法高亮,不支援程式碼提示功能

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )專業的PHP整合開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器