ZooKeeper(3.4.5) - 开源客户端 Curator(2.7.0) 的简单示例

时间:2021-04-26 08:24:29

一、创建会话

1. 创建会话

package com.huey.dream.demo;

import org.apache.curator.framework.CuratorFramework;
import org.apache.curator.framework.CuratorFrameworkFactory;
import org.apache.curator.retry.ExponentialBackoffRetry;

/**
* 使用Curator创建会话
*
@author huey
*
@version 1.0
* @created 2015-3-1
*/
public class CarutorDemo {

public static void main(String[] args) throws Exception {
CuratorFramework client
= CuratorFrameworkFactory.newClient(
"192.168.1.109:2181", // 服务器列表
5000, // 会话超时时间,单位毫秒
3000, // 连接创建超时时间,单位毫秒
new ExponentialBackoffRetry(1000, 3) // 重试策略
);
client.start();

client.close();
}
}

2. 使用链式风格的API接口创建会话

package com.huey.dream.demo;

import org.apache.curator.framework.CuratorFramework;
import org.apache.curator.framework.CuratorFrameworkFactory;
import org.apache.curator.retry.ExponentialBackoffRetry;

/**
* 使用链式风格的API接口创建会话
*
@author huey
*
@version 1.0
* @created 2015-3-1
*/
public class CarutorDemo {

public static void main(String[] args) throws Exception {
CuratorFramework client
= CuratorFrameworkFactory.builder()
.connectString(
"192.168.1.109:2181")
.sessionTimeoutMs(
5000)
.connectionTimeoutMs(
3000)
.retryPolicy(
new ExponentialBackoffRetry(1000, 3))
.build();
client.start();

client.close();
}
}

 

二、创建节点

package com.huey.dream.demo;

import org.apache.curator.framework.CuratorFramework;
import org.apache.curator.framework.CuratorFrameworkFactory;
import org.apache.curator.retry.ExponentialBackoffRetry;
import org.apache.zookeeper.CreateMode;

/**
* 使用Curator创建节点
*
@author huey
*
@version 1.0
* @created 2015-3-1
*/
public class CarutorDemo {

public static void main(String[] args) throws Exception {
CuratorFramework client
= CuratorFrameworkFactory.builder()
.connectString(
"192.168.1.109:2181")
.sessionTimeoutMs(
5000)
.connectionTimeoutMs(
3000)
.retryPolicy(
new ExponentialBackoffRetry(1000, 3))
.build();
client.start();

client.create()
.creatingParentsIfNeeded()
.withMode(CreateMode.PERSISTENT)
.forPath(
"/zk-huey/cnode", "hello".getBytes());

client.close();
}
}

 

三、删除节点

package com.huey.dream.demo;

import org.apache.curator.framework.CuratorFramework;
import org.apache.curator.framework.CuratorFrameworkFactory;
import org.apache.curator.retry.ExponentialBackoffRetry;
import org.apache.zookeeper.CreateMode;

/**
* 使用Curator删除节点
*
@author huey
*
@version 1.0
* @created 2015-3-1
*/
public class CarutorDemo {

public static void main(String[] args) throws Exception {
CuratorFramework client
= CuratorFrameworkFactory.builder()
.connectString(
"192.168.1.109:2181")
.sessionTimeoutMs(
5000)
.connectionTimeoutMs(
3000)
.retryPolicy(
new ExponentialBackoffRetry(1000, 3))
.build();
client.start();

client.create()
.creatingParentsIfNeeded()
.withMode(CreateMode.PERSISTENT)
.forPath(
"/zk-huey/cnode", "hello".getBytes());

client.delete()
.guaranteed()
.deletingChildrenIfNeeded()
.withVersion(
-1)
.forPath(
"/zk-huey");

client.close();
}
}

 

四、读取节点数据

package com.huey.dream.demo;

import org.apache.curator.framework.CuratorFramework;
import org.apache.curator.framework.CuratorFrameworkFactory;
import org.apache.curator.retry.ExponentialBackoffRetry;
import org.apache.zookeeper.CreateMode;
import org.apache.zookeeper.data.Stat;

/**
* 使用Curator读取节点数据
*
@author huey
*
@version 1.0
* @created 2015-3-1
*/
public class CarutorDemo {

public static void main(String[] args) throws Exception {
CuratorFramework client
= CuratorFrameworkFactory.builder()
.connectString(
"192.168.1.109:2181")
.sessionTimeoutMs(
5000)
.connectionTimeoutMs(
3000)
.retryPolicy(
new ExponentialBackoffRetry(1000, 3))
.build();
client.start();

client.create()
.creatingParentsIfNeeded()
.withMode(CreateMode.PERSISTENT)
.forPath(
"/zk-huey/cnode", "hello".getBytes());

Stat stat
= new Stat();
byte[] nodeData = client.getData()
.storingStatIn(stat)
.forPath(
"/zk-huey/cnode");
System.out.println(
"NodeData: " + new String(nodeData));
System.out.println(
"Stat: " + stat);

client.close();
}
}

 

五、更新节点数据

package com.huey.dream.demo;

import org.apache.curator.framework.CuratorFramework;
import org.apache.curator.framework.CuratorFrameworkFactory;
import org.apache.curator.retry.ExponentialBackoffRetry;
import org.apache.zookeeper.CreateMode;
import org.apache.zookeeper.data.Stat;

/**
* 使用Curator更新节点数据
*
@author huey
*
@version 1.0
* @created 2015-3-1
*/
public class CarutorDemo {

public static void main(String[] args) throws Exception {
CuratorFramework client
= CuratorFrameworkFactory.builder()
.connectString(
"192.168.1.109:2181")
.sessionTimeoutMs(
5000)
.connectionTimeoutMs(
3000)
.retryPolicy(
new ExponentialBackoffRetry(1000, 3))
.build();
client.start();

client.create()
.creatingParentsIfNeeded()
.withMode(CreateMode.PERSISTENT)
.forPath(
"/zk-huey/cnode", "hello".getBytes());

client.setData()
.withVersion(
-1)
.forPath(
"/zk-huey/cnode", "world".getBytes());

client.close();
}
}

 

六、 获取子节点列表

package com.huey.dream.demo;

import java.util.List;

import org.apache.curator.framework.CuratorFramework;
import org.apache.curator.framework.CuratorFrameworkFactory;
import org.apache.curator.retry.ExponentialBackoffRetry;
import org.apache.zookeeper.CreateMode;

/**
* 使用Curator
*
@author huey
*
@version 1.0
* @created 2015-3-1
*/
public class CarutorDemo {

public static void main(String[] args) throws Exception {
CuratorFramework client
= CuratorFrameworkFactory.builder()
.connectString(
"192.168.1.109:2181")
.sessionTimeoutMs(
5000)
.connectionTimeoutMs(
3000)
.retryPolicy(
new ExponentialBackoffRetry(1000, 3))
.build();
client.start();

client.create()
.creatingParentsIfNeeded()
.withMode(CreateMode.PERSISTENT)
.forPath(
"/zk-huey/cnode", "hello".getBytes());

List
<String> children = client.getChildren().forPath("/zk-huey");
System.out.println(
"Children: " + children);

client.close();
}
}