ZooKeeper學習專欄(四):單機模式部署與基礎操作詳解

文章目錄

  • 前言
  • 一、單機模式部署
    • 架構圖
    • 部署流程:
  • 二、zkCli.sh命令行工具基礎操作
  • 三、ACL權限控制實踐
  • 學習資源


前言

本文是Zookeeper學習系列的第四篇,將詳細講解Zookeeper的單機模式部署過程以及基礎命令行操作,包括節點管理、Watcher機制和ACL權限控制。


一、單機模式部署

架構圖

Zookeeper單機模式架構
架構圖說明:

  1. 客戶端連接(藍色部分)
    • 客戶端應用:使用Zookeeper的應用程序
    • zkCli.sh:官方命令行工具
    • SDK:各種語言客戶端庫
    • 均通過TCP協議連接到Zookeeper服務端(默認端口2181)
  2. Zookeeper服務端(綠色部分)
    • 請求處理器:處理客戶端請求的組件
    • 內存數據庫:存儲所有ZNode節點數據(DataTree)
    • 核心工作流程
客戶端請求 → 請求處理器 → 更新內存數據庫 → 寫入事務日志
  1. 本地存儲(紫色部分)
    • 事務日志:所有寫操作的順序記錄(保證持久性)
    • 快照文件:內存數據庫的定期序列化(加速恢復)
    • 配置文件:zoo.cfg中的核心配置項:
dataDir=/tmp/zookeeper/data  # 數據存儲目錄
clientPort=2181              # 客戶端連接端口

部署流程:

1. 下載Zookeeper發行版
首先訪問Apache Zookeeper官網下載最新穩定版。以3.8.0版本為例:

# 下載發行版
wget https://downloads.apache.org/zookeeper/zookeeper-3.8.0/apache-zookeeper-3.8.0-bin.tar.gz# 解壓文件
tar -zxvf apache-zookeeper-3.8.0-bin.tar.gz# 進入目錄
cd apache-zookeeper-3.8.0-bin

2. 修改基礎配置文件
Zookeeper的配置文件位于conf/zoo_sample.cfg,我們需要復制并修改它:

cp conf/zoo_sample.cfg conf/zoo.cfg

編輯conf/zoo.cfg文件,重點關注以下兩個參數:

# 數據存儲目錄(需要手動創建)
dataDir=/tmp/zookeeper/data# 客戶端連接端口
clientPort=2181# 其他保持默認配置
tickTime=2000
initLimit=5
syncLimit=2

創建數據目錄:

mkdir -p /tmp/zookeeper/data

3. 啟動服務端和客戶端
啟動Zookeeper服務:

# 啟動服務端
bin/zkServer.sh start# 查看服務狀態
bin/zkServer.sh status

啟動客戶端連接:

bin/zkCli.sh -server 127.0.0.1:2181

二、zkCli.sh命令行工具基礎操作

1. 基本節點操作
在客戶端命令行中執行以下操作:

# 創建持久節點
[zk: localhost:2181(CONNECTED) 0] create /first_node "Hello Zookeeper"
Created /first_node# 獲取節點數據
[zk: localhost:2181(CONNECTED) 1] get /first_node
Hello Zookeeper# 修改節點數據
[zk: localhost:2181(CONNECTED) 2] set /first_node "Updated data"# 列出節點
[zk: localhost:2181(CONNECTED) 3] ls /
[first_node, zookeeper]# 刪除節點(只能刪除無子節點的節點)
[zk: localhost:2181(CONNECTED) 4] delete /first_node

2. 節點類型實驗
Zookeeper支持多種節點類型:

# 創建臨時節點(會話結束自動刪除)
[zk: localhost:2181(CONNECTED) 5] create -e /ephemeral_node "Temp data"# 創建順序節點(自動追加序號)
[zk: localhost:2181(CONNECTED) 6] create -s /sequential_node "Seq data"
Created /sequential_node0000000001# 創建臨時順序節點(會話結束自動刪除)
[zk: localhost:2181(CONNECTED) 7] create -e -s /ephemeral_seq_node "Both"
Created /ephemeral_seq_node0000000002

3. Watcher機制實踐
Watcher是Zookeeper的核心特性,用于監聽節點變化:

# 在會話1中注冊監聽
[zk: localhost:2181(CONNECTED) 8] create /watch_node "Initial"
[zk: localhost:2181(CONNECTED) 9] get -w /watch_node# 在會話2中修改節點
[zk: localhost:2181(CONNECTED) 0] set /watch_node "Changed"# 會話1將收到通知:
WATCHER::
WatchedEvent state:SyncConnected type:NodeDataChanged path:/watch_node

同樣可以監聽子節點變化:

# 注冊子節點監聽
ls -w /parent_node# 當創建/刪除子節點時會收到通知

4. 理解stat命令
stat命令提供節點的元數據信息:

[zk: localhost:2181(CONNECTED) 10] create /stat_demo "data"
[zk: localhost:2181(CONNECTED) 11] stat /stat_democZxid = 0x2f              # 創建事務ID
ctime = Mon Jul 21 15:30:00 CST 2025  # 創建時間
mZxid = 0x2f              # 最后修改事務ID
mtime = Mon Jul 21 15:30:00 CST 2025  # 最后修改時間
pZxid = 0x2f              # 最后子節點變更事務ID
cversion = 0              # 子節點版本號
dataVersion = 0           # 數據版本號(每次修改+1)
aclVersion = 0            # ACL版本號
ephemeralOwner = 0x0      # 臨時節點所有者(0表示持久節點)
dataLength = 4            # 數據長度
numChildren = 0           # 子節點數量

三、ACL權限控制實踐

Zookeeper通過ACL(Access Control Lists)實現節點權限控制:

# 1. 創建帶ACL的節點(world:anyone只有讀權限)
create /protected_node "sensitive" world:anyone:r# 2. 嘗試修改(將失敗)
set /protected_node "new data"
Authentication is not valid : /protected_node# 3. 添加認證信息
addauth digest user1:password1# 4. 設置ACL(digest模式)
setAcl /protected_node digest:user1:password1:crwda# 5. 現在可以操作節點了
set /protected_node "updated data"# 6. 查看ACL
getAcl /protected_node

ACL權限說明:

  • c:CREATE(創建子節點)
  • r:READ(讀取節點數據)
  • w:WRITE(修改節點數據)
  • -d:DELETE(刪除子節點)
  • a:ADMIN(設置ACL)

學習資源

  • Zookeeper官方文檔
  • Zookeeper ACL詳解

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

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

相關文章

靜態登錄界面

代碼&#xff1a; <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>用戶登錄</title><st…

Three.js 全景圖(Equirectangular Texture)教程:從加載到球面映射

全景圖(Equirectangular Texture)是一種特殊的 2D 圖像,能通過數學轉換模擬 360 環繞視角,常用于創建沉浸式環境(如虛擬全景、天空盒替代方案)。本文將通過完整示例,帶你掌握 Three.js 中全景圖的加載、映射原理與實際應用。 什么是全景圖(Equirectangular Texture)?…

Rocky Linux 9 快速安裝 Node.js

Rocky Linux 9 快速安裝 Node.js 大家好&#xff0c;我是星哥&#xff01;今天給大家帶來 Rocky Linux 9 環境下 Node.js 的安裝教程。 本文將詳細介紹兩種安裝方法&#xff0c;幫你快速搭建穩定的 Node.js 環境。 Node.js 是一個非常流行的 JavaScript 運行時環境&#xff…

.NET依賴注入IOC你了解嗎?

IOC在Web API 中是經常使用的&#xff0c;但是在一些WPF項目并不是經常使用或者被人熟知的&#xff0c;我把相關依賴注入的內容又做了一次學習和整理什么是依賴注入&#xff1f; 依賴注入是一種設計模式和軟件設計原則&#xff0c;用于實現 控制反轉。它的核心思想是&#xff1…

Python----大模型(基于Fastapi+streamlit的機器人對話)

一、準備工作 1.1、魔搭社區下載大模型 通義千問2.5-7B-Instruct 模型庫 from modelscope.hub.snapshot_download import snapshot_download llm_model_dir snapshot_download(Qwen/Qwen2.5-7B-Instruct,cache_dirmodels) 1.2、啟動vllm大模型 python -m vllm.entrypoint…

前端面試專欄-工程化:29.微前端架構設計與實踐

&#x1f525; 歡迎來到前端面試通關指南專欄&#xff01;從js精講到框架到實戰&#xff0c;漸進系統化學習&#xff0c;堅持解鎖新技能&#xff0c;祝你輕松拿下心儀offer。 前端面試通關指南專欄主頁 前端面試專欄規劃詳情 微前端架構設計與實踐 一、微前端核心概念與價值 …

Spring Boot音樂服務器項目-上傳音樂模塊

項目結構圖 相較于上次新增集中在這些地方&#xff1a; &#x1f680; 上傳音樂的核心流程 前端投遞&#xff1a;用戶填寫歌手名 選擇MP3文件 后端接收&#xff1a;/music/upload 接口化身音樂快遞員 安全驗證&#xff1a;先查用戶是否“持證上崗”&#xff08;登錄態&#…

2025年遠程桌面軟件深度評測:ToDesk、向日葵、TeamViewer全方位對比分析

隨著遠程辦公和數字化協作的深入發展&#xff0c;遠程桌面軟件已經成為個人用戶和企業的必備工具。在2025年的今天&#xff0c;遠程控制軟件市場呈現出百花齊放的態勢&#xff0c;其中ToDesk、向日葵和TeamViewer作為市場上的三大主流選擇&#xff0c;各自在技術創新、性能優化…

深度學習-全連接神經網絡2

六、反向傳播算法 反向傳播&#xff08;Back Propagation&#xff0c;簡稱BP&#xff09;算法是用于訓練神經網絡的核心算法之一&#xff0c;它通過計算損失函數&#xff08;如均方誤差或交叉熵&#xff09;相對于每個權重參數的梯度&#xff0c;來優化神經網絡的權重。 1、前…

C語言的歷史

C 語言是一種 通用的、過程式的編程語言&#xff0c;由 丹尼斯里奇&#xff08;Dennis Ritchie&#xff09; 在 1972 年于貝爾實驗室開發。它以 高效、靈活、貼近硬件 而著稱&#xff0c;廣泛應用于系統軟件、嵌入式系統、驅動程序、游戲引擎、數據庫系統等底層開發領域。 C語…

jupyter使用

啟動win rcmdjupyter notebook創建python文件

linux 環境服務發生文件句柄泄漏導致服務不可用

問題描述&#xff1a;服務調用遠程rest接口 報錯&#xff0c;發生too many open files 異常&#xff0c;系統句柄資源耗盡&#xff0c;導致服務不可用。排查經過&#xff1a;1、針對報錯代碼進行本地構建&#xff0c;構造異常&#xff0c;并進行壓測。問題未復現2、經過討論分析…

手機錄制視頻時,硬編碼和軟編碼哪個質量高?(硬件編碼、軟件編碼)

文章目錄**1. 畫質對比**- **軟編碼**&#xff1a;- **硬編碼**&#xff1a;**2. 性能與功耗**- **軟編碼**&#xff1a;- **硬編碼**&#xff1a;**3. 實際應用中的權衡****4. 現代手機的折中方案****5. 如何選擇&#xff1f;****總結**在手機錄制視頻時&#xff0c; 軟編碼的…

IPv4與IPv6雙棧協議:網絡過渡的關鍵技術

為什么需要IPv4與IPv6共存&#xff1f; 在網絡技術的世界中&#xff0c;兼容性問題始終是最大的挑戰之一。IPv4和IPv6之間存在根本性的不兼容性&#xff0c;這意味著使用不同協議的設備無法直接通信。這種情況就像是兩個人試圖用完全不同的語言進行對話一樣。 目前的網絡現狀…

【牛客刷題】數字變換

一、題目描述 給出兩個數字a,ba,ba,b,aaa每次可以乘上一個大于1的正整數得到新的aa

MySQL 學習一 存儲結構和log

1.InnoDB邏輯存儲結構 表空間->段->區->頁->行->數據表空間&#xff1a;覆蓋了所有的數據和索引&#xff0c;系統表在系統表空間&#xff0c;還有默認表空間等 段&#xff1a;多個段組成表空間 區&#xff1a;多個區組成段&#xff0c;一般每個區的大小通常是1M…

TCP day39

六&#xff1a;C/S和B/S端 C/S&#xff1a;Client, server B/S&#xff1a;Browser server 1.cs 專用客戶端 bs 通用客戶端 2.協議不同 Cs 標準協議&#xff0c;自定義協議 Bs http 超文本傳輸 3.cs 功能復雜 bs 功能弱 4.bs 資源都在ser&#xff0c;有ser發送到cli cs 大部分資…

6 種無線傳輸照片從安卓到 Mac 的方法

將大量照片從安卓設備傳輸到電腦上&#xff0c;不僅可以備份照片&#xff0c;還能釋放設備存儲空間。雖然使用 USB 數據線可以在 Windows 電腦上輕松完成傳輸&#xff0c;但將安卓手機連接到 Mac 并非如此簡單。因此&#xff0c;許多用戶更傾向于無線傳輸照片從安卓到 Mac。您可…

在vscode 使用 remote-ssh

vscode安裝插件Remote-SSH,直接安裝即可 安裝完畢之后 在左下角有這個圖標 點擊之后選擇連接到主機然后選擇添加新鏈接之后輸入用戶名和主機地址 非默認端口使用 -p 端口號之后選擇第一個即可如果使用的是密碼,直接連接,然后輸入密碼即可如果使用的密鑰,則修改.ssh\config文件中…

RabbitMQ03——面試題

目錄 一、mq的作用和使用場景 二、mq的優點 2.1架構設計優勢 2.2功能特性優勢 2.3性能與可靠性優勢 2.4生態系統優勢 2.5對比優勢 三、mq的缺點 3.1性能與擴展性限制 3.2功能局限性 3.3運維復雜度 3.4與其他消息隊列的對比劣勢 四、mq相關產品&#xff0c;每種產品…