09.Curator临时节点
1.PersistentEphemeralNode类
/**
* @param client client instance
* @param mode creation/protection mode
* @param basePath the base path for the node
* @param data data for the node
*/
public PersistentEphemeralNode(CuratorFramework client, Mode mode, String basePath, byte[] initData)
- EPHEMERAL: 以ZooKeeper的 CreateMode.EPHEMERAL方式创建节点。
- EPHEMERAL_SEQUENTIAL: 如果path已经存在,以CreateMode.EPHEMERAL创建节点,否则以CreateMode.EPHEMERAL_SEQUENTIAL方式创建节点。
- PROTECTED_EPHEMERAL: 以CreateMode.EPHEMERAL创建,提供保护方式。
- PROTECTED_EPHEMERAL_SEQUENTIAL: 类似EPHEMERAL_SEQUENTIAL,提供保护方式。
2.编写示例程序
public class PersistentEphemeralNodeExample
{
private static final String PATH = "/example/ephemeralNode";
private static final String PATH2 = "/example/node";
public static void main(String[] args) throws Exception
{
CuratorFramework client = CuratorFrameworkFactory.newClient("127.0.0.1:2181", new ExponentialBackoffRetry(1000, 3));
client.getConnectionStateListenable().addListener(new ConnectionStateListener()
{
@Override
public void stateChanged(CuratorFramework client, ConnectionState newState)
{
System.out.println("连接状态:" + newState.name());
}
});
client.start();
PersistentEphemeralNode node = new PersistentEphemeralNode(client, Mode.EPHEMERAL, PATH, "临时节点".getBytes());
node.start();
node.waitForInitialCreate(3, TimeUnit.SECONDS);
String actualPath = node.getActualPath();
System.out.println("临时节点路径:" + actualPath + " | 值: " + new String(client.getData().forPath(actualPath)));
client.create().forPath(PATH2, "持久化节点".getBytes());
System.out.println("持久化节点路径: " + PATH2 + " | 值: " + new String(client.getData().forPath(PATH2)));
KillSession.kill(client.getZookeeperClient().getZooKeeper(), "127.0.0.1:2181");
System.out.println("临时节点路径:" + actualPath + " | 是否存在: " + (client.checkExists().forPath(actualPath) != null));
System.out.println("持久化节点路径: " + PATH2 + " | 值: " + new String(client.getData().forPath(PATH2)));
CloseableUtils.closeQuietly(node);
CloseableUtils.closeQuietly(client);
}
}
3.示例程序运行结果
连接状态:CONNECTED
临时节点路径:/example/ephemeralNode | 值: 临时节点
持久化节点路径: /example/node | 值: 持久化节点
连接状态:SUSPENDED
连接状态:LOST
连接状态:RECONNECTED
临时节点路径:/example/ephemeralNode | 是否存在: true
持久化节点路径: /example/node | 值: 持久化节点
-------------------------------------------------------------------------------------------------------------------------------
09.Curator临时节点的更多相关文章
- Zookeeper--0300--java操作Zookeeper,临时节点实现分布式锁原理
删除Zookeeper的java客户端有 : 1,Zookeeper官方提供的原生API, 2,zkClient,在原生api上进行扩展的开源java客户端 3, 一.Zookeeper原生API ...
- Zookeeper的临时节点和永久节点
Zookeeper中节点分为两种:临时节点和永久节点. 临时节点有一个节点: 当创建临时节点的程序停掉之后,这个临时节点就会消失. 更直观的,如下 Persistent是临时节点. Persist ...
- 实验:zk master宕机后,临时节点在新的master上是否存在,结果出人意料
一.实验 实验说明:3台zk集群,主要验证:master上的客户端,在master上建立临时节点,当master宕机时,其他follower选为主后,临时节点是否存在. 主要是通过此来验证,基于zk的 ...
- mysql 创建临时节点
use ZooKeeper; use AnyEvent; use AE; use Data::Dumper; use IO::Socket; my $zk = ZooKeeper->new(ho ...
- 临时节点不能有child 子节点
[zk: 127.0.0.1:2181(CONNECTED) 67] create '/zk01/0001/aaaa' dada Ephemerals cannot have children: /z ...
- zookeeper客户端使用第三方(Curator)封装的Api操作节点
1.为什么使用Curator? Curator本身是Netflix公司开源的zookeeper客户端: Curator 提供了各种应用场景的实现封装: curator-framework 提供了f ...
- 基于zk“临时顺序节点“的分布式锁
import org.apache.zookeeper.*; import org.apache.zookeeper.data.Stat; import java.io.IOException; im ...
- Zookeeper注册节点的掉线自动重新注册及测试方法
转载:http://www.codelast.com/ 在一套分布式的online services系统中,各service通常不会放在一台服务器上,而是通过Zookeeper这样的东西,将自己的se ...
- Curator实现分布式锁
分布式锁的应用 分布式锁服务宕机, ZooKeeper 一般是以集群部署, 如果出现 ZooKeeper 宕机, 那么只要当前正常的服务器超过集群的半数, 依然可以正常提供服务 持有锁资源服务器宕机, ...
随机推荐
- Qt中Pro文件变量详细说明
学习Qt时,发现有些知识看了不经常用就忘了,以下是书本上写的一些关于qmake的相关知识,自己看后,打算把一些经常用到的记下来,整理整理. Qt程序一般使用Qt提供的qmake工具来编译. qmake ...
- python文件夹批处理操作
如图所示,有一个test文件夹,里面有3个子文件夹,每个子文件夹中有若干图片文件 #场景1 读取一个文件夹中所有文件,存入到一个list表中 #coding:utf-8 from __futur ...
- 用python批量执行VBA代码
先说下背景环境 1. 公司需要问卷调查,有两份问卷, 1)是spss问卷,2)是excel问卷.spss问卷数据不全,但有各种标签, excel呢, 生成的数据直接把选项变成了值 2. 现在需要把ex ...
- e641. 使一个组件成为拖放目标
public class DropTargetComponent extends JComponent implements DropTargetListener { public DropTarge ...
- pyqt的setObjectName()/findChild()
根据设置的Name标示查找组件的对象,关键函数:setObjectName()/findChild() findChild()/2:需要两个参数, 参数一:组件的类型,如QLineEdit.QPush ...
- Prime is problem - 素数环问题
题目描述: A ring is compose of n circles as shown in diagram. Put natural number 1, 2, ..., n into each ...
- NET Core 环境搭建和命令行CLI入门[转]
NET Core 环境搭建和命令行CLI入门 时间:2016-07-06 01:48:19 阅读:258 评论:0 收藏:0 [点我收藏+] 标签: N ...
- CentOS6.8安装mysql并设置字符集编码
一.安装: 1. 首先以root用户进入系统 2. 输入命令: yum install mysql mysql-server -y 等待安装完成. 3. 启动MySQL,输入命令: /etc/init ...
- 演示--Jquery核心选择器
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- ms-SQL 递归调用
----递归函数-------------------------------------------------------------------------- create function d ...