这篇文章主要讲解了“Zookeeper Znode实例分析”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Zookeeper Znode实例分析”吧!
import java.io.IOException;
import java.util.List;
import org.apache.zookeeper.CreateMode;
import org.apache.zookeeper.ZooDefs.Ids;
import org.apache.zookeeper.KeeperException;
import org.apache.zookeeper.ZooKeeper;
/**
*
* Zookeeper目前的创建的模式为:
*
*
* PPERSISTENT:创建后只要不删就永久存在 EPHEMERAL:会话结束年结点自动被删除,EPHEMERAL结点不允许有子节点
* SEQUENTIAL:节点名末尾会自动追加一个10位数的单调递增的序号,同一个节点的所有子节点序号是单调递增的
* PERSISTENT_SEQUENTIAL:结合PERSISTENT和SEQUENTIAL
* EPHEMERAL_SEQUENTIAL:结合EPHEMERAL和SEQUENTIAL
*
* @author Yin Shuai
*
*/
public class SequenceZnode {
public static final int TIMEOUT = 3000;
public static void main(String[] args) throws IOException,
InterruptedException {
ZooKeeper zkp = new ZooKeeper("127.0.0.1:2181", TIMEOUT, null);
try {
zkp.create("/node1", "data1".getBytes(), Ids.OPEN_ACL_UNSAFE,
CreateMode.PERSISTENT);
if (zkp.exists("/node1", false) != null) {
System.out.println("node1 exists now");
}
try {
zkp.create("/node1", "data1".getBytes(), Ids.OPEN_ACL_UNSAFE,
CreateMode.PERSISTENT);
} catch (KeeperException e) {
System.out.println("keeperException caught:" + e.getMessage());
}
zkp.close();
// zookeeper的会话在这里重新再建立一次
zkp = new ZooKeeper("127.0.0.1:2181", TIMEOUT, null);
// 创建了一系列的持久化—顺序节点
zkp.create("/node-", "same data".getBytes(), Ids.OPEN_ACL_UNSAFE,
CreateMode.PERSISTENT_SEQUENTIAL);
zkp.create("/node-", "same data".getBytes(), Ids.OPEN_ACL_UNSAFE,
CreateMode.PERSISTENT_SEQUENTIAL);
zkp.create("/node-", "same data".getBytes(), Ids.OPEN_ACL_UNSAFE,
CreateMode.PERSISTENT_SEQUENTIAL);
zkp.create("/node-", "same data".getBytes(), Ids.OPEN_ACL_UNSAFE,
CreateMode.PERSISTENT_SEQUENTIAL);
List<String> children = zkp.getChildren("/", null);
for (String child : children) {
System.out.println(child);
}
zkp.close();
} catch (KeeperException e) {
System.err.println("KeeperException have been caught:"
+ e.getMessage());
}
}
}
对于每一种类型的节点,请注意区分,尤其是在重复create Sequenal的节点的过程之中。编号不一定会保持连续的状态 。
1:Zookeeper的连接地址一般要写多个
2:ACL 权限不是递归的,它只针对当前的节点,对子节点没有任何的影响
3:默认的情况下日志文件和数据文件是放在同一个目录之下。
4:
默认情况下日志文件和数据文件是放在同一个目录下的,为缩短延迟提高响应性,你可以把日志文件单独放在另一个目录下。
为避免swaping,运行java时最好把可用物理内在调得大一些,比如对于4G的内在,可以把它调到3G。java有以下两个运行参数:
-Xms<size>
设置虚拟机可用内存堆的初始大小,缺省单位为字节,该大小为1024的整数倍并且要大于1MB,可用k(K)或m(M)为单位来设置较大的内存数。初始堆大小为2MB。
例如:-Xms6400K,-Xms256M
-Xmx<size>
设置虚拟机内存堆的最大可用大小,缺省单位为字节。该值必须为1024整数倍,并且要大于2MB。可用k(K)或m(M)为单位 来设置较大的内存数。缺省堆最大值为64MB。
例如:-Xmx81920K,-Xmx80M
感谢各位的阅读,以上就是“Zookeeper Znode实例分析”的内容了,经过本文的学习后,相信大家对Zookeeper Znode实例分析这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是天达云,小编将为大家推送更多相关知识点的文章,欢迎关注!