1. 程式人生 > >Zookeeper客戶端基本操作java實現——建立連線、建立節點、新增修改節點內容、獲取子節點、獲取節點資料、刪除節點

Zookeeper客戶端基本操作java實現——建立連線、建立節點、新增修改節點內容、獲取子節點、獲取節點資料、刪除節點

一、引入Zookeeper包,新增pom依賴

		<dependency>
			  <groupId>org.apache.zookeeper</groupId>
			  <artifactId>zookeeper</artifactId>
			  <version>3.3.6</version>
		</dependency>

二、基本操作實現類
package com.xgd.log.common;

import java.util.List;
import java.util.concurrent.CountDownLatch;

import org.apache.zookeeper.CreateMode;
import org.apache.zookeeper.KeeperException;
import org.apache.zookeeper.WatchedEvent;
import org.apache.zookeeper.Watcher;
import org.apache.zookeeper.Watcher.Event.KeeperState;
import org.apache.zookeeper.ZooDefs.Ids;
import org.apache.zookeeper.ZooKeeper;
import org.apache.zookeeper.data.Stat;

public class BaseZookeeper implements Watcher{

	private ZooKeeper zookeeper;
	private static final int SESSION_TIME_OUT = 2000;
	private CountDownLatch countDownLatch = new CountDownLatch(1);
	@Override
	public void process(WatchedEvent event) {
		
		if (event.getState() == KeeperState.SyncConnected) {
			System.out.println("Watch received event");
			countDownLatch.countDown();
		}
	}
	
	/**連線zookeeper
	 * @param host
	 * @throws Exception
	 */
	public void connectZookeeper(String host) throws Exception{
		zookeeper = new ZooKeeper(host, SESSION_TIME_OUT, this);
		countDownLatch.await();
		System.out.println("zookeeper connection success");
	}
	
	/**
	 * 建立節點
	 * @param path
	 * @param data
	 * @throws Exception
	 */
	public String createNode(String path,String data) throws Exception{
		return this.zookeeper.create(path, data.getBytes(), Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);
	}
	
	/**
	 * 獲取路徑下所有子節點
	 * @param path
	 * @return
	 * @throws KeeperException
	 * @throws InterruptedException
	 */
	public List<String> getChildren(String path) throws KeeperException, InterruptedException{
		List<String> children = zookeeper.getChildren(path, false);
		return children;
	}
	
	/**
	 * 獲取節點上面的資料
	 * @param path
	 * @return
	 * @throws KeeperException
	 * @throws InterruptedException
	 */
	public String getData(String path) throws KeeperException, InterruptedException{
		byte[] data = zookeeper.getData(path, false, null);
		if (data == null) {
			return "";
		}
		return new String(data);
	}
	
	/**
	 * 設定節點資訊
	 * @param path
	 * @param data
	 * @return
	 * @throws KeeperException
	 * @throws InterruptedException
	 */
	public Stat setData(String path,String data) throws KeeperException, InterruptedException{
		Stat stat = zookeeper.setData(path, data.getBytes(), -1);
		return stat;
	}
	
	/**
	 * 刪除節點
	 * @param path
	 * @throws InterruptedException
	 * @throws KeeperException
	 */
	public void deleteNode(String path) throws InterruptedException, KeeperException{
		zookeeper.delete(path, -1);
	}
	
	/**
	 * 獲取建立時間
	 * @param path
	 * @return
	 * @throws KeeperException
	 * @throws InterruptedException
	 */
	public String getCTime(String path) throws KeeperException, InterruptedException{
		Stat stat = zookeeper.exists(path, false);
		return DateUtil.longToString(String.valueOf(stat.getCtime()));
	}
	
	/**
	 * 獲取某個路徑下孩子的數量
	 * @param path
	 * @return
	 * @throws KeeperException
	 * @throws InterruptedException
	 */
	public Integer getChildrenNum(String path) throws KeeperException, InterruptedException{
		int childenNum = zookeeper.getChildren(path, false).size();
		return childenNum;
	}
	/**
	 * 關閉連線
	 * @throws InterruptedException
	 */
	public void closeConnection() throws InterruptedException{
		if (zookeeper != null) {
			zookeeper.close();
		}
	}
	
}


相關推薦

Zookeeper客戶基本操作java實現——建立連線建立節點新增修改節點內容獲取節點獲取節點資料刪除節點

一、引入Zookeeper包,新增pom依賴 <dependency> <groupId>org.apache.zookeeper</groupId> <artifactId>zookeeper<

2018-07-13期 Zookeeper客戶基本操作【本人親自反復驗證通過分享】

RoCE 分享 自動刪除 ast state println await roc 可用 說明:本文檔主要給大家介紹ZK客戶端API基本操作一、新建Java工程1、New->Project->Java Project填寫JAVA工程名字,選擇JDK版本等2、為新建

Hdfs的JAVA客戶基本操作

一:需要的jar包: hadoop-2.4.1\share\hadoop\hdfs\hadoop-hdfs-2.4.1.jar hadoop-2.4.1\share\hadoop\hdfs\lib\所有jar包 hadoop-2.4.1\share\hadoop\commo

Redis客戶基本操作以及檢視慢查詢

1.連線 redis-cli.exe -h 127.0.0.1 -p 6379 2.驗證密碼 λ redis-cli.exe -h 127.0.0.1 -p 6379127.0.0.1:6379> auth 密碼 3. redis key值獲取    

zookeeper客戶api操作

這裡記錄zookeeper java客戶端api的使用。 客戶端建立Zookeeper例項,然後呼叫這個類提供的方法與zookeeper伺服器進行互動。 Zookeeper的建構函式有如下4種: ZooKeeper(connectString, sessionT

【分散式】Zookeeper客戶基本的使用

  與mysql、redis等軟體一樣,zookeeper的軟體包中也提供了客戶端程式用於對伺服器上的資料進行操作。本節我們就來學習zookeeper客戶端的使用方法。不過在詳細講解zk客戶端的使用方法之前,我們會先來討論zookeeper的資料儲存結構,只有理解了zookeeper的資料儲存結構,才會真正明

單鏈表基本操作java實現

單鏈表基本操作 - java實現 1.單鏈表學習了好久,今天終於有時間寫一下了,帶頭結點的單鏈表上的基本操作,Java實現。 (1) 先來個介面 public interface IList { public void clear(); //清空連結串列 publi

二叉樹的基本操作——java實現

樹 的資料結構 public class TreeNode { private int data; private TreeNode LeftNode; private TreeNode RightNode; public TreeNode() {

zookeeper客戶SHELL操作命令

使用zookeeper安裝bin目錄下的./zkCli.sh連線到zookeeper伺服器上 使用h或者help檢視幫助: stat 命令: 檢視節點的狀態資訊 set命令: 修改節點資料,可攜帶

zookeeper客戶操作JAVA程式碼操作CURD

總結:zookeeper相當於一個遠端平臺,我們可以將資料放在上面,他是一個樹形結構,每一個節點稱為一個Znode 資料模型:每個節點或稱為目錄,都可以存放資料並且存放節點,有雙重功能 重點watch機制: ZooKeeper 中,引入了 Watcher 機制來實現這種分散式的通知功能

HDFS的JAVA客戶編寫(JAVA程式碼實現對HDFS的操作

原始碼如下: package com.sfd.hdfs; import java.io.FileInputStream; import java.io.IOException; import org.apache.commons.compress.ut

鏈表的基本操作java語言實現

auth ndb ack pan log 定義 pac ext col package com.baorant; public class JavaDemo { public static void main(String[] args) {

7.5 zookeeper客戶curator的基本使用

serve server 超時 one c-c tlist result 強制 car 使用zookeeper原生API實現一些復雜的東西比較麻煩。所以,出現了兩款比較好的開源客戶端,對zookeeper的原生API進行了包裝:zkClient和curator。後者是Net

讀《分布式一致性原理》JAVA客戶API操作

rst org RoCE row out 錯誤 throws eat 服務 創建會話 客戶端可以通過創建一個Zookeeper實例來連接服務器。4種構造方法如下 ZooKeeper(connectString, sessionTimeout, watcher);

讀《分布式一致性原理》JAVA客戶API操作2

open size 改變 網絡通 調用 異常 pat ride aca 創建節點 通過客戶端API來創建一個數據節點,有一下兩個接口: public String create(final String path, byte data[], List<ACL&

SWUST--Java實驗(七) 客戶與伺服器聊天實現

import java.awt.BorderLayout; import java.awt.EventQueue; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.border.EmptyBorde

【學習筆記】堆的定義及其建立排序等基本操作實現

目錄 堆的定義: 堆的基本操作的程式碼實現: 詳情請參見《演算法筆記》P335,此處只做簡單的學習筆記記錄。   堆的定義: 堆是一棵完全二叉樹,樹中的每個結點的值都不小於(或不大於)其左右孩子結點。 堆一般用於優先佇列的實現(目前不是很懂),故預設

HDFS客戶搭建與Java API操作HDFS

HDFS客戶端搭建 為什麼不建議使用叢集內操作? 如果每一次上傳檔案都是選擇某一臺DN作為客戶端,就會導致這個節點上的磁碟以及網路I0負載超過其他的節點,久而久之這個節點的磁碟以及網絡卡效能遠遠低於其他節點,從而會導致資料的傾斜問題。 配置叢集客戶端的步驟: 1

zookeeper客戶操作指令彙總

引言: 現如今做分散式,全文搜尋引擎以及訊息中介軟體等等一些開發時,時常會用到註冊中心管理伺服器,將各個外掛之間相互聯絡,因此難免在開發過程中遇到很多疑難問題,這時開發人員難免需要對註冊中心進行維護,因此對註冊中心的客戶端指令的操作無疑是必須掌握的技能,本文是對zookee

ZooKeeper——Curator客戶基本使用(筆記)

Curator使用 Curator是Netflix公司一個開源的zookeeper客戶端,在原生API介面上進行了包裝,解決了很多ZooKeeper客戶端非常底層的細節開發。同時內部實現了諸如Session超時重連,Watcher反覆註冊等功能,實現了Flue