zookeeper-znode解析

一. 數據模型:

? ? ZK擁有一個命名空間就像一個精簡的文件系統,不同的是它的命名空間中的每個節點擁有它自己或者它下面子節點相關聯的數據。ZK中必須使用絕對路徑也就是使用“/”開頭。

二. znode:

? ? zk目錄樹中每個節點對應一個znode。每個znode維護一些屬性,如:當前版本,數據版本,建立時間,修改時間等。

(注: 當設置一個znode節點的數據或讀取時,znode節點的內容會被整個替換或全部讀取出來)? 。?
三. znode類型:
? ?當新建znode時,需要制定該節點當類型, 不同當類型決定了znode節點的行為方式。
? ?1.? 持久節點:創建后只能通過delete進行刪除,否則會一直存在 ,可以通過此類型的znode為應用保存相關數據,即使znode的創建者不在屬于應用系統時,數據也可以保存。
2.? 臨時節點:與持久節點相反,當創建該節點當客戶端崩潰或者關閉了與zk的連接時,節點就會被刪除,臨時節點也可以被非創建者主動刪除。臨時節點不允許有子節點(目前3.4.14版本)。
3.? 持久有序節點:一個znode可以設置為有序節點,設置zode時被分為唯一一個單調遞增的整數。當創建有序節點時,序號會被追加到路徑后。
4.? 臨時有序節點:具有臨時節點特征,但是它會有序列號,分布式鎖中會用到該類型節點。

?創建持久有序節點:

(-s為有序,-e為臨時, 默認為持久) 。

四.? znode 特性:

? 1. 監視(watches):? zk通常以遠程服務的方式被訪問,如果每次訪問znode時,客戶端都需要獲取節點中的內容,這樣代價就很大(如果內容不變,就沒有意義)。為了應對這種場景,zk提供了一個基于通知(notifaction)的機制,客戶端可以向zk中的node設置watch,當zode節點發生變化(觸發監視器)時,向客戶端發送一個通知。需要注意的是:監視點是一個單次觸發的操作,為接受多個通知,客戶端必須在每次通知后設置一個新的監視點。
2. 數據訪問:ZK上存儲的數據需要被原子性的操作(要么修改成功要么回到原樣),也是就讀操作將會讀取節點相關所有數據,寫操作也會修改節點相關所有數據,,而且每個節點都有自己的ACL。

五. znode時間和版本號:

zxid:ZK節點狀態改變會導致該節點收到一個zxid格式的時間戳,這個時間戳是全局有序的,每次更新都會產生一個新的。如果zxid1的值小于zxid2,那么說明zxid2發生的改變在zxid1之后。zxid是一個唯一的事務ID,具有遞增性,一個znode的建立或者更新都會產生一個新的zxid值。

version:每一個znode都有一個版本號,隨著每次數據變化而自增。有兩個api操作可以有條件執行: setdata和delete,這兩個調用以版本號作為傳入參數,只有當傳入參數的版本號與服務器上的版本號一致時,才會調用成功。

各字段內容解析:

?這個版本號的用途就和分布式場景的一個鎖概念有關。修改節點數據之前會讀取這個數據并記錄該數據版本號,當你需要更新時會攜帶這個版本號去提交,如果你此時攜帶的版本號(就是你上次讀取出來的)和當前節點的版本號相同則說明該數據沒有被修改過,那么你的提交就會成功,如果提交失敗說明該數據在你讀取之后和提交之前這段時間內被修改了。

?通過set命令并攜帶版本號提交更新,版本號相同更新就會成功。

? --------------------------------------------------------------------------------------------------------------------------

? ? ? ? ? ? ? ? ? ? ? ? ?深耕運維行業多年,擅長運維體系建設,方案落地。歡迎交流!

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?“V-x”: ywjw996

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?《 運維經緯 》

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/94666.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/94666.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/94666.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Redis 高可用篇

主從復制是怎么實現的? 如果服務器發生了宕機,由于數據恢復是需要點時間,那么這個期間是無法服務新的請求的;如果這臺服務器的硬盤出現了故障,可能數據就都丟失了。 要避免這種單點故障,最好的辦法是將數據…

C++ 指針與引用面試深度解析

C 指針與引用面試深度解析面試官考察指針和引用,不僅是考察語法,更是在考察你對C中 “別名” (Aliasing) 與 “地址” (Addressing) 這兩種間接訪問機制的理解,以及你對 “代碼安全” 和 “接口設計” 的思考深度。第一部分:核心知…

LinuxC語言線程的同步與互斥

一.線程的同步與互斥1. 基礎概念:1.1 互斥:對共享資源的訪問,同一時刻只允許一個訪問者進行訪問,互斥具有唯一和排他性,互斥無法保證對共享資源的訪問順序1.2 同步: 在互斥的基礎上,實現對共享資源的有序訪問。2. 互斥…

Centos 7.6離線安裝docker

在內網環境下,一般不能聯網在線部署,這時候就需要以離線的方式安裝docker。本節內容主要總結一下在CentOS 7.6環境中離線安裝docker的步驟。 1、下載docker安裝包 https://pan.baidu.com/share/init?surlPaUllQZ-dwpgJ7quA5IkcQ&pwd4sfc 2、上傳到服…

生成式推薦模型的長序列特征:離線存儲

文章目錄長序列特征的例子1. Event-level features2. Sequence-level featuresAggregation FeaturesSession-based FeaturesTemporal Order Features3. User-level features4. Interaction features (between user and item/context)how to store the long term user behaviro …

Linux inode 實現機制深入分析

Linux inode 實現機制深入分析 1 Inode 基本概念與作用 Inode(Index Node)是 Linux 和其他類 Unix 操作系統中文件系統的核心數據結構,用于存儲文件或目錄的元數據(metadata)。每個文件或目錄都有一個唯一的 inode&…

Flask 之請求鉤子詳解:掌控請求生命周期

在構建現代 Web 應用時,我們常常需要在請求的不同階段自動執行一些通用邏輯,例如:記錄日志、驗證權限、連接數據庫、壓縮響應、添加安全頭等。如果在每個視圖函數中重復這些代碼,不僅冗余,而且難以維護。Flask 請求鉤子…

設計模式七大原則附C++正反例源碼

設計模式的七大原則是軟件設計的基石,它們指導開發者構建高內聚、低耦合、易維護、可擴展的系統。以下以C++為例,詳細介紹這七大原則: 一、單一職責原則(Single Responsibility Principle, SRP) 定義:一個類應該只有一個引起它變化的原因(即一個類只負責一項職責)。 …

云計算之中間件與數據庫

一、云數據庫的特性云數據庫是指被優化或部署到一個虛擬計算環境中的數據庫,可以實現按需付費、按需擴展、高可用性以及存儲整合等優勢。根據數據庫類型一般分為關系型數據庫和非關系型數據庫(NoSQL數據庫) 。云數據庫的特性序號云數據庫的特…

codeforces(1045)(div2) E. Power Boxes

E.電源箱 每次測試時限: 2 秒 每次測試的內存限制:256 兆字節 輸入:標準輸入 輸出:標準輸出 這是一個互動問題。 給你 nnn 個方格,索引從 111 到 nnn 。這些方格看起來完全相同,但是每個方格都有一個隱藏的…

4G模塊 EC200通過MQTT協議連接到阿里云

命令說明 基礎AT指令ATI顯示MT的ID信息ATCIMI查詢IMSIATQCCID查詢ICCIDATCSQ查詢信號強度ATCGATT?查詢當前PS域狀態MQTT配置指令ATQMTCFG配置MQTT可選參數ATQMTCFG配置MQTT可選參數.ATQMTOPEN打開MQTT客戶端網絡ATQMTCLOSE關閉MQTT客戶端網絡ATQMTCONN連接客戶端到MQTT服務器…

如何選擇合適的安全監測預警系統

在當今高度復雜和互聯的數字化時代,安全威脅無處不在且持續演變。一套高效、可靠的安全監測預警系統已成為組織保障其物理資產、數字信息和關鍵業務連續性的核心基礎設施。然而,面對市場上琳瑯滿目的產品和解決方案,如何做出符合自身需求的選…

ELK-使用logstash-output-zabbix插件實現日志通過zabbix告警

ELK-使用logstash-output-zabbix插件實現日志通過zabbix告警logstash-output-zabbix插件安裝編輯logstash配置文件在zabbix上創建模板實現的效果:elk收集上來的日志中含有報錯時(例如error等),logstash過濾出來將這部分日志打到zabbix,再通過zabbix結合釘…

【C++游記】物種多樣——謂之多態

楓の個人主頁 你不能改變過去,但你可以改變未來 算法/C/數據結構/C Hello,這里是小楓。C語言與數據結構和算法初階兩個板塊都更新完畢,我們繼續來學習C的內容呀。C是接近底層有比較經典的語言,因此學習起來注定枯燥無味&#xf…

Visual Scope (Serial_Digital_Scope V2) “串口 + 虛擬示波器” 工具使用記錄

VisualScope 就是一個 “串口 + 虛擬示波器” 的工具,適合在沒有昂貴示波器/邏輯分析儀時做嵌入式調試。它的核心步驟就是 MCU 定時發數據 → PC 串口接收 → 軟件畫波形。 首先準備串口通信工具后,插入電腦,安裝完USB轉串口驅動后,在“我的電腦”-“設備及管理器”-“端口…

c++ 觀察者模式 訂閱發布架構

#include <iostream> #include <vector> #include <algorithm> #include <memory> #include <mutex>// 觀察者接口 class IObserver { public:virtual ~IObserver() default;virtual void update(const std::string& message) 0; };// 主題…

oracle 表空間擴容(增加新的數據文件)

SELECT tablespace_name,file_name,ROUND(bytes / 1024 / 1024, 2) AS size_mb,ROUND(maxbytes / 1024 / 1024, 2) AS max_size_mb,status,autoextensible FROM dba_data_files ORDER BY tablespace_name;--給表空間增加一個新數據庫文件ALTER TABLESPACE EAS_D_EAS_STANDARDAD…

DAY 58 經典時序預測模型2

知識點回顧&#xff1a; 時序建模的流程時序任務經典單變量數據集ARIMA&#xff08;p&#xff0c;d&#xff0c;q&#xff09;模型實戰SARIMA摘要圖的理解處理不平穩的2種差分 n階差分---處理趨勢季節性差分---處理季節性 昨天我們掌握了AR, MA, 和 ARMA 模型&#xff0c;它們…

【人工智能】AI代理重塑游戲世界:動態NPC帶來的革命性沉浸式體驗

還在為高昂的AI開發成本發愁?這本書教你如何在個人電腦上引爆DeepSeek的澎湃算力! 在當今游戲行業迅猛發展的時代,AI代理技術正悄然引發一場革命,尤其是動態非玩家角色(NPC)的應用,將傳統靜態游戲體驗提升至全新的沉浸式境界。本文深入探討AI代理在游戲中的核心作用,從…