首页 > 其他分享 >Zookeeper 创建6种的节点实例(转)

Zookeeper 创建6种的节点实例(转)

时间:2023-10-24 13:44:06浏览次数:36  
标签:seq zk Zookeeper 2181 实例 CONNECTED 节点 localhost

原文:https://blog.csdn.net/pengweismile/article/details/115444734

作者:伟娃娃

Zookeeper是Apache Hadoop的一个子项目,它主要用来解决分布式系统中经常遇到的一些数据管理问题,例如,统一命名,状态同步,集群管理,分布式应用配置管理。

Zookeeper的定位,这个动物园的管理者,如下图

ookeeper又2个特性
特性一 树形结构,每个子目录可以被增加删除

特性二 事件监听机制

特性一
zookeeper可以对目录树中的任意一个节点进行监听。监听是只监听目录下面的目录变化。

zookeeper类似一个文件系统,每个子目录被称为目录节点,允许我们自由的增加删除目录节点。

 

znode节点的类型:

持久化目录节点(PERSISTENT), 创建好之后就永久存在
持久化顺序编号节点(PERSISTENT_SEQUENTIAL),创建好节点后还可以默认带个自增的编号
临时目录节点(EPHEMERAL),和sessionId绑定的,当客户端被关闭之后,对于的临时目录节点会被删除
历史顺序编号目录节点(EPHEMERAL_SEQUENTIAL),临时节点带个自增的编号
容器节点(Container),3.5.3新增的特性,没有子节点的容器节点会被清除掉。
TTL节点,3.5.3新增的特性,位节点设定了失效时间。具体失效时间却决于后台检测失效线程的轮询频率。
临时节点被删除过程:

 

长连接和短连接的区别,根据自己的业务来定的。

Zookeeper的安装

Step1:配置JAVA环境,检验环境:

java ‐version

Step2: 下载解压 zookeeper

wget https://mirror.bit.edu.cn/apache/zookeeper/zookeeper‐3.5.8/apache‐zookeeper‐3.5.8‐bin.tar.gz

https://zookeeper.apache.org/releases.html#download

tar ‐zxvf apache‐zookeeper‐3.5.8‐bin.tar.gz
 
cd apache‐zookeeper‐3.5.8‐bin

Step5: 检测是否启动成功

ps -ef| grep zookeeper

Step6: 连接服务器

bin/zkCli.sh ‐server ip:port

创建不同的节点

-s: 顺序节点-

e: 临时节点

-c: 容器节点

-t: 可以给节点添加过期时间,默认禁用,需要通过系统参数启用

zoomkeeper在目录上的增删改查

[zk: localhost:2181(CONNECTED) 4] create /test "hello"
Created /test
[zk: localhost:2181(CONNECTED) 5] get /test
hello
[zk: localhost:2181(CONNECTED) 6] set /test "hello world"
[zk: localhost:2181(CONNECTED) 7] get /test
hello world
[zk: localhost:2181(CONNECTED) 8] delete /test
[zk: localhost:2181(CONNECTED) 9] get /test
org.apache.zookeeper.KeeperException$NoNodeException: KeeperErrorCode = NoNode for /test
[zk: localhost:2181(CONNECTED) 10] 

ZK中没有相对路径一说, 所有路径都是绝对路径。

创建子目录,操作

[zk: localhost:2181(CONNECTED) 10] create /test1/sub1 hello
Node does not exist: /test1/sub1
[zk: localhost:2181(CONNECTED) 11] create /test1 hello1
Created /test1
[zk: localhost:2181(CONNECTED) 12] create /test1/sub1 "hello sub"
Created /test1/sub1
[zk: localhost:2181(CONNECTED) 13] ls -R /test1
/test1
/test1/sub1

创建顺序节点 -s

 
[zk: localhost:2181(CONNECTED) 22] create /seq
Created /seq
[zk: localhost:2181(CONNECTED) 24] create -s /seq/Allen- "hello"
Created /seq/Allen-0000000001
[zk: localhost:2181(CONNECTED) 25] create -s /seq/Allen- "hello"
Created /seq/Allen-0000000002
[zk: localhost:2181(CONNECTED) 26] create -s /seq/Allen- "hello"
Created /seq/Allen-0000000003
[zk: localhost:2181(CONNECTED) 27] create -s /seq/Allen- "hello"
Created /seq/Allen-0000000004
[zk: localhost:2181(CONNECTED) 28] create -s /seq/Allen- "hello"
Created /seq/Allen-0000000005
[zk: localhost:2181(CONNECTED) 30] ls -R /seq
/seq
/seq/Allen-0000000001
/seq/Allen-0000000002
/seq/Allen-0000000003
/seq/Allen-0000000004
/seq/Allen-0000000005
[zk: localhost:2181(CONNECTED) 31] 

创建临时节点 -e:

[zk: localhost:2181(CONNECTED) 31] create -e /ephemeral "hello ephemeral"
Created /ephemeral
[zk: localhost:2181(CONNECTED) 32] get -s /ephemeral
hello ephemeral
cZxid = 0x15
ctime = Mon Apr 05 03:57:30 PDT 2021
mZxid = 0x15
mtime = Mon Apr 05 03:57:30 PDT 2021
pZxid = 0x15
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x1001f373c3a0001
dataLength = 15
numChildren = 0

临时节点与持久节点的区别在于上面节点元数据信息的ephemeraOwner的值是不一样的。当客户端关掉,临时节点就没有了。临时节点下面是不能有子节点的。

[zk: localhost:2181(CONNECTED) 34] create -e /ephemeral/sub
Ephemerals cannot have children: /ephemeral/sub
[zk: localhost:2181(CONNECTED) 35] 

 

[zk: localhost:2181(CONNECTED) 33] get -s /seq
null
cZxid = 0xe
ctime = Mon Apr 05 03:54:16 PDT 2021
mZxid = 0xe
mtime = Mon Apr 05 03:54:16 PDT 2021
pZxid = 0x14
cversion = 6
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 0
numChildren = 6
[zk: localhost:2181(CONNECTED) 34] 

创建临时顺序节点 -e -s

[zk: localhost:2181(CONNECTED) 37] create -e -s /seq-eph
Created /seq-eph0000000005
[zk: localhost:2181(CONNECTED) 38] create -e -s /seq-eph
Created /seq-eph0000000006
[zk: localhost:2181(CONNECTED) 39] create -e -s /seq-eph

创建container节点 -c, 唯一的区别是,当删除掉container节点下的所有子节点后, container节点本身也会被清除掉

[zk: localhost:2181(CONNECTED) 3] create -c /container
Created /container
[zk: localhost:2181(CONNECTED) 4] create /container/sub1
Created /container/sub1
[zk: localhost:2181(CONNECTED) 5] create /container/sub2
Created /container/sub2
[zk: localhost:2181(CONNECTED) 6] create /container/sub3
Created /container/sub3
[zk: localhost:2181(CONNECTED) 7] ls -R /container
/container
/container/sub1
/container/sub2
/container/sub3
[zk: localhost:2181(CONNECTED) 8] delete /container/sub1
[zk: localhost:2181(CONNECTED) 9] delete /container/sub2
[zk: localhost:2181(CONNECTED) 10] delete /container/sub3
[zk: localhost:2181(CONNECTED) 11] ls /
[container, seq, seq0000000002, test1, zookeeper]
[zk: localhost:2181(CONNECTED) 12] ls /
[container, seq, seq0000000002, test1, zookeeper]
[zk: localhost:2181(CONNECTED) 16] ls /
[seq, seq0000000002, test1, zookeeper]

创建就ttl节点 -t ,ttl节点的特性是可以创建一个打失效时间的节点,失效时间过来之后节点会被自动删除。

1. 关闭服务

[allen@localhost bin]$ ./zkServer.sh stop ../zoo.cfg 
/usr/bin/java
ZooKeeper JMX enabled by default
Using config: ../zoo.cfg
Stopping zookeeper ... ./zkServer.sh: line 213: kill: (61723) - No such process
STOPPED
[allen@localhost bin]$ 

2. 添加扩展的业务,在zkServer.sh 中增加如下配置

-Dzookeeper.extendedTypesEnabled=true

 3. 重新启动服务

[allen@localhost bin]$ ./zkServer.sh start ../zoo.cfg 
/usr/bin/java
ZooKeeper JMX enabled by default
Using config: ../zoo.cfg
Starting zookeeper ... STARTED
[allen@localhost bin]$ vi zkServer.sh 
[allen@localhost bin]$ ./zkCli.sh
/usr/bin/java
Connecting to localhost:2181

如下, ttl-note在一段时间后自己就没有了,不用手动删除。

[zk: localhost:2181(CONNECTED) 0] create -t 5000 /ttl-node ttttt
Created /ttl-node
[zk: localhost:2181(CONNECTED) 1] ls /
[seq, seq0000000002, test1, ttl-node, zookeeper]
[zk: localhost:2181(CONNECTED) 2] ls /
[seq, seq0000000002, test1, ttl-node, zookeeper]
[zk: localhost:2181(CONNECTED) 9] ls /
[seq, seq0000000002, test1, ttl-node, zookeeper]
[zk: localhost:2181(CONNECTED) 10] ls /
[seq, seq0000000002, test1, zookeeper]
[zk: localhost:2181(CONNECTED) 11] 

 

标签:seq,zk,Zookeeper,2181,实例,CONNECTED,节点,localhost
From: https://www.cnblogs.com/ajianbeyourself/p/17784623.html

相关文章

  • 华为云耀云服务器L实例 - 购买与简单配置
     华为云耀云服务器L实例是一种基于云计算技术的虚拟服务器,它提供了计算资源、存储空间和网络功能,允许用户通过互联网访问和管理这些资源。与传统的物理服务器相比,云服务器具有以下优势:1. 弹性可伸缩:云服务器可以根据业务需求进行快速扩展或收缩。您可以根据实际需求轻松增......
  • 华为云耀云服务器L实例 - mysql部署
     MySQL数据库使用结构化查询语言(SQL)作为其查询语言,支持多用户访问,具备良好的性能、可靠性和可伸缩性。它适用于各种规模的应用程序和网站,从小型个人网站到大型企业级应用程序都可以使用MySQL来存储和管理数据。以下是其中一些主要的优势:1. 开源和免费:MySQL是一款开源软件,......
  • 华为云耀云服务器L实例 - 安全组配置
     华为云耀云服务器L实例安全组是一种网络安全功能,它在云计算环境中用于控制和管理服务器的入站和出站流量。安全组相当于一道虚拟的防火墙,通过配置规则来过滤和允许特定的网络流量通过。以下是云服务器安全组的功能:1. 网络流量过滤:安全组可以定义入站和出站规则,控制允许流......
  • 华为云耀云服务器L实例 - java环境配置
     Java环境在云服务器上是为了支持Java应用程序的运行、开发和使用Java生态系统中的各种工具和库。它为开发人员提供了一个稳定和可靠的平台,使他们能够利用Java的强大功能来构建高性能、可扩展和安全的应用程序。1. 登录华为云耀云服务器L实例:使用SSH或远程桌面工具登录到您......
  • 华为云耀云服务器L实例 - 使用navicat管理数据库
     Navicat是一款功能强大的数据库管理工具,可用于管理多种数据库系统,如MySQL、PostgreSQL、Oracle、SQL Server等。它提供了直观的用户界面和丰富的功能,使得开发者和数据库管理员能够轻松地进行数据库设计、查询、维护和管理。Navicat的一些主要优势包括:1. 多数据库支持:Nav......
  • 聊聊多个节点实例数据同步如何触发
    前言之前写过一篇文章聊聊在集群环境中本地缓存如何进行同步,今天聊的话题看着和那篇文章有点雷同,不过我们今天重点会放在方法论上,也不会拘泥于具体实现。在聊这个话题之前,大家可以思考一下,如果要实现多个实例数据同步触发,大家会怎么做?脑海里,是会浮现,我可以用消息队列或者定时器来......
  • R : 网络图统计每个节点在V1和V2中出现的次数
    #读取txt文件data<-read.table("your_input_file.txt",header=TRUE,stringsAsFactors=FALSE)#统计每个节点在V1和V2中的出现次数V1_counts<-table(data$V1)V2_counts<-table(data$V2)#获取V1和V2中所有唯一的节点名称all_nodes<-union(names(V1_counts),......
  • oracle更改实例名和库名
    需要注意的问题:1、生成密码文件的密码不能过弱,orapwdfile=$ORACLE_HOME/dbs/oraw$ORACLE_SIDpassword=111(不行的)TYYYy@1031(可以的)entries=5force=y2、spfile和pfile文件里的*.compatible=.... 中的版本号,要与数据库系统一致,有时会有出入3、那个sql文件里的reusedatabas......
  • zookeeper源码(02)源码编译启动及idea导入
    本文介绍一下zookeeper-3.9.0源码下载、编译及本地启动。下载源码gitclonehttps://gitee.com/apache/zookeeper.gitcdzookeepergitcheckoutrelease-3.9.0gitcheckout-brelease-3.9.0源码编译README_packaging.md文件该文件介绍了编译zookeeper需要的环境和命令......
  • 倾斜摄影三维模型根节点合并技术方法探讨
    倾斜摄影三维模型根节点合并技术方法探讨 倾斜摄影技术是一种通过无人机或其他航空器采集大量高分辨率照片,并使用特殊软件将这些照片拼接成三维模型的方法。在这个过程中,摄影机以倾斜角度拍摄照片,从而捕捉到目标物体的多个视角,从而实现更精细和真实的建模效果。在创建倾斜摄......