1. 程式人生 > >Zookeeper(三)客戶端指令碼

Zookeeper(三)客戶端指令碼

我們來看下zkCli這個指令碼。進入ZooKeeper的bin目錄後,直接執行如下命令:

$sh zkCli.sh

當看到如下輸出資訊時,表示已經成功連線上本地的ZooKeeper伺服器了。

WatchedEvent state:SyncConnected type:Node path:null

[zk:localhost:2181(CONNECTED)0]

注意上面的命令沒有顯式地指定ZooKeeper伺服器地址,那麼預設是連線本地ZooKeeper伺服器。如果希望連線指定ZooKeeper伺服器,可以通過如下方式實現:、

$sh zkCli.sh -server ip:port

建立

使用create命令,可以建立一個ZooKeeper節點。用法如下:

create [-s] [-e] path data acl

其中,-s或-e分別指定節點特性:順序或臨時節點。預設情況下即不新增-s或-e引數的,建立的是持久節點。

執行如下命令:

[zk:localhost:2181(CONNECTED)0] create /zk-book 123

Created /zk-book

執行完上面的命令,就在ZooKeeper的根節點下建立了一個叫做/zk-book的節點,並且節點的資料內容是“123”。另外,create命令的最後一個引數是acl,它是用來進行全線控制的,預設情況下,不做任何許可權控制。關於ZooKeeper許可權控制,後面我們會介紹

讀取

與讀取相關的命令包括ls命令和set命令

ls

使用ls命令,可以列出ZooKeeper指定節點下的所有子節點。當然,這個命令只能考到指定節點下第一級的所有子節點。用法如下:

ls path [watch]

其中 path表示的是指定資料節點的節點路徑。

執行如下命令:

[zk:localhost:2181(CONNECTED)0] ls /

[zookeeper]

第一次部署的ZooKeeper叢集,預設在根節點"/"下面有一個叫做/zookeeper的保留節點。

get:

使用get命令,可以獲取ZooKeeper指定節點的資料內容和屬性資訊。用法如下:

get path [watch]

執行如下命令:

[zk:localhost:2181(CONNECTED)0] get /zk-book

123

cZxid=0xa

ctime=Thu Jun 20 10:35:00 UTC 2013

mZxid=0xa

mtime=Thu Jun 20 10:35:00 UTC 2013

pZxid=0xa

cversion=0

dataVersion=0

aclVersion=0

ephemeralOwner=0x0

dataLength=3

numChildren=0

從上面的輸出資訊中,我們可以看到,第一行是節點/zk-book的資料內容,其他幾行則是建立該節點的事務ID(cZxid),最後一次更新該節點的事務ID(mZxid)和最後一次更新該節點的時間(mtime)等屬性資訊。關於ZooKeeper節點的資料結構,在後面講解。

更新

使用set命令可以更新指定節點的資料內容。用法如下:

set path data【version】

其中,data就是要更新的內容。注意,set命令後面還有一個version引數。在ZooKeeeper中,節點的資料是由版本概念的,這個用於指定本次更新操作時基於ZNode的哪一個版本進行的。

執行如下命令:

[zk:localhost:2181(CONNECTTED)3] set /zk-book 456

cZxid = 0xa

ctime = Thu jun 20 10:35:00 UTC 2013

mZxid = 0x11

mtime = Fri Jun 21 01:05:49 UTC 2013

pZxid = 0xa

cversion = 0

dataVersion = 1

aclVersion = 0

ephemeralOwner = 0x0

dataLength = 3

numChildren = 0

執行完以上命令後,節點/zk-book的資料內容就已經被更新成“456”了。細心的讀者還會發現,在輸出資訊中,dataVersion的值由原來的0變成了1,這是因為剛才的更新操作導致該節點的資料版本也發生了變更。關於ZNode的資料版本,將在後面做詳細解釋,這裡只是演示簡單操作,不再詳細展開。

刪除

使用delete命令,可以刪除ZooKeeper上的指定節點。用法如下:

delete path [version]

此命令中的version引數和set命令中的version引數的作用是一致的。

執行如下命令:

[zk:localhost:2181(CONNECTED)2] delete /zk-book

執行完以上命令後,就可以把/zi-book這個節點成功刪除了。但是這裡要注意的一點是:要想刪除某一個指定節點,該節點必須沒有子節點存在。這可以通過執行如下命令來進行驗證:

[zk:localhost:2181(CONNECTED) 7] create /zk-book 123

Create /zk-book

[zk:localhost:2181(CONNECTED) 8] create /zk-book/child 12345

Created /zk-book/child

[zk:localhost:2181(CONNECTED) 9] delete /zk-book

Node not empty:..zk-book

上面的這個輸出結果已經很清晰地表明瞭刪除失敗,通過Node not empty這個出錯資訊,可以看出無法刪除一個包含子節點的節點。

注:博主後面工作會比較忙,晚上也沒有時間在忙。估計要停更一段時間,不過等忙完這一陣,博主會努力加油更新的。

相關推薦

Zookeeper客戶指令碼

我們來看下zkCli這個指令碼。進入ZooKeeper的bin目錄後,直接執行如下命令: $sh zkCli.sh 當看到如下輸出資訊時,表示已經成功連線上本地的ZooKeeper伺服器了。 WatchedEvent state:SyncConnected type:Nod

Zookeeper學習 客戶和原生API

safe ima call proc string 過程 心跳 current catch 前言 在這篇博客裏我會主要總結下兩個部分的操作: 在安裝ZooKeeper的機器上利用ZKClient連接Zookeeper的集群,然後利用相應的命令做一些簡單的操作。相信很多沒有

Netty學習篇--- 客戶 服務實現雙向通訊

客戶端-服務端:客戶端傳送資料到服務端 上篇文章提到,讀寫處理邏輯是在 Bootstrap的handler()方法指定的,上節課寫的如下程式碼: .handler(new ChannelInitializer<Channel>() {

AIDL使用詳解 客戶通過AIDL與服務通訊 例項專案

專案簡介 我們要實現一個計算器的功能。 首先實現一個服務端,用於提供計算服務,供客戶端去呼叫。它接受客戶端提供的兩個值,計算之後,返回兩個數之和。 第二,實現客戶端介面進行操作。 第三: 我們命名客戶端和服務端。 第四:定義AIDL,連線客戶

黑馬程式設計師 【】java學習之路——TCP客戶上傳檔案到伺服器

import java.net.*; class  TextClient {public static void main(String[] args) throws Exception{Socket s = new Socket("192.168.1.104",10010);BufferedReader b

ESP8266與NodeMCU開發客戶

這一節將講解如何將ESP8266程式設計設定為一個網頁客戶端,訪問www.example.com,傳送請求並獲取返回資料,通過串列埠打印出來 流程如下: 1.首先需要連線上路由器或者任意AP,從而獲得能訪問外網的途徑,這一點在上一章節中已經說明。 相關程式碼: #def

從零開始學Socket:服務客戶簡單通訊

連線上服務端和客戶端之後,我們就要讓他們互動起來了。(到了現在,大家如果對下面程式碼不懂得地方可以去F12跟蹤至原始碼介面檢視,學習就是這樣) 先在服務端編寫傳送函式和接收函式 /// <summary> /// 傳送資料到客戶

spring boot 登錄註冊 demo -- 前後傳遞

lin 表單提交 www col log ref rec put 內容 前端頁面通過thymeleaf渲染     <dependency> <groupId>org.springframework.boot</gro

Spring Cloud Config教程客戶使用

home 本地 snap 遠程 html local nap parent path 要在應用程序中使用這些功能,只需將其構建為依賴於spring-cloud-config-client的Spring引導應用程序(例如,查看配置客戶端或示例應用程序的測試用例)。添加依賴關

zookeeper初探 java客戶連接

cti ring 客戶端連接 test tid pre toolbar client pen pom.xml<dependencies> <dependency> <groupId>org.apache.hadoo

SpringCloud開發學習總結—— 客戶負載均衡Ribbon

均衡 spring java www ref discovery 聯合 方式 嘗試   通過上一章《SpringCloud開發學習總結(三)—— 服務治理Eureka》,我們已經搭建起微服務架構中的核心組件——服務註冊中心(包括單點模式和高可用模式)。同時還註冊了一個服務,

Netty學習3: 客戶和服務的例子

服務端: package com.server; import io.netty.bootstrap.ServerBootstrap; import io.netty.channel.Channel; import io.netty.channel.ChannelFuture; import

Metasploit Framework6客戶滲透

文章的格式也許不是很好看,也沒有什麼合理的順序 完全是想到什麼寫一些什麼,但各個方面都涵蓋到了 能耐下心看的朋友歡迎一起學習,大牛和槓精們請繞道   前五篇文章講解了Metasploit Framework的一些基本使用 而接下來的文章就是具體使用的案例了 滲透技術不是隻明白怎麼用就可以

.NetCore下使用Prometheus實現系統監控和警報 客戶程式碼處理

在程式碼中使用就比較簡單了 Nuget包獲取下 prometheus-net prometheus-net.AspNetCore 然後新增中介軟體就行了 app.UseMetricServer(); 預設地址都是/metrics,在Prometheus中的targets就是指向了這

基於Curator操作ZooKeeper-Curator整合Spring

Java原生API操作ZooKeeper可參看: Java原生API操作Zookeeper(一) Java原生API操作Zookeeper(二) 相關內容: 基於Curator操作ZooKeeper(一)-基本操作 基於Curator操作ZooKeeper(二)-Watche

開發工具:全棧開發工具彙總——後

二、後端 ideaIU-2016.2:java開發工具 常用快捷鍵 作用 Ctrl+Alt+L 格式化程式碼

從Paxos到ZooKeeperZooKeeper的ZAB協議

ZAB協議 (一)ZAB協議是ZooKeeper實現資料一致性的核心演算法 (二)ZAB協議實現了一種主備模式的系統架構保持叢集中各副本之間資料的一致性 ZooKeeper使用單一的主程序接收並處理客戶端所有事務請求,採用ZAB的原子廣播協議,將伺服器資料狀態變更以事務Proposa

SpringCloud原始碼分析--客戶搭建

一、前言 上一節的註冊中心搭建完成了,本節開始搭建客戶端,其實對於springcloud的Eureka註冊中心而言,他本身就是服務端也是客戶端,我們上節待見服務端註冊中心的時候,已經通過配置來設定其不向自己註冊,和不去檢索服務的功能,保持了其作為服務註冊中心的相對的功能單一性。 二、pom檔案

SpringCloud源碼分析--客戶搭建

cati service sco 分享 project 功能單 ice utf work 一、前言 上一節的註冊中心搭建完成了,本節開始搭建客戶端,其實對於springcloud的Eureka註冊中心而言,他本身就是服務端也是客戶端,我們上節待見服務端註冊中心的時候,已經通

cas單點登入 客戶與springboot整合

在springboot專案中實現cas單點登入統一認證,只需要在專案中配置 cas過濾器即可使用. 1. springboot專案pom.xml中 新增web支援依賴 、cas客戶端依賴包 <dependency> <groupId>org