码迷,mamicode.com
首页 > 其他好文 > 详细

8.4.4.Zookeeper结构和命令

时间:2018-06-05 13:33:56      阅读:134      评论:0      收藏:0      [点我收藏+]

标签:系统   代码   enter   http   执行命令   ssi   手动   输入   服务器   

1. Zookeeper结构

1.1.ZooKeeper数据模型Znode

  ZooKeeper拥有一个层次化的目录结构,命名符合常规文件系统规范

  ZooKeeper树中的每个节点被称为—Znode。和文件系统的目录树一样,ZooKeeper树中的每个节点可以拥有子节点,并且其有一个唯一的路径标识

  节点Znode可以包含数据和子节点(但是EPHEMERAL类型的节点不能有子节点)

  客户端应用可以在节点上设置监视器

  技术分享图片

2. Zookeeper命令行客户端操作

  启动Zookeeper服务之后,输入以下命令,连接到Zookeeper服务:zkCli.sh -server localhost:2183(连接到自己的zookeeper服务)

                                 zkCli.sh -server shizhan2:2183(连接到其他的zookeeper服务)

  连接成功之后,系统会输出Zookeeper的相关环境及配置信息,并在屏幕输出“welcome to Zookeeper!”等信息。输入help之后,屏幕

会输出可用的Zookeeper命令,如下图所示

  技术分享图片

  输入connect zhizhan2:2183可以连接到其他zookeeper服务(默认端口是2181,我修改为2183了)

2.1  使用Zookeeper命令的简单操作步骤

  (1) 使用ls命令查看当前Zookeeper中所包含的内容:ls /

[zk: localhost:2183(CONNECTED) 1] ls /
[zookeeper]
[zk: localhost:2183(CONNECTED) 2] 

  (2) 创建一个新的Znode节点"zk",以及与它关联的字符串,执行命令:create /zk "myData"(默认持久节点)

[zk: localhost:2183(CONNECTED) 2] create /zk "myData"
Created /zk

  (3) 再次使用ls命令来查看现在Zookeeper的中所包含的内容:ls /

[zk: localhost:2183(CONNECTED) 3] ls /
[zk, zookeeper]

  (4) 使用get命令来确认第二步中所创建的Znode是否包含我们创建的字符串,执行命令:get /zk

技术分享图片
[zk: localhost:2183(CONNECTED) 4] get /zk
"myData"
cZxid = 0x100000008
ctime = Tue Jun 05 19:02:42 CST 2018
mZxid = 0x100000008
mtime = Tue Jun 05 19:02:42 CST 2018
pZxid = 0x100000008
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 8
numChildren = 0

#监听这个节点的数据变化,当另外一个客户端改变/zk,它会打出下面的

[zk: localhost:2181(CONNECTED) 4] get /zk watch

#WATCHER::

#WatchedEvent state:SyncConnected type:NodeDataChanged path:/zk

技术分享图片  

  (5) 接下来通过set命令来对zk所关联的字符串进行设置,执行命令:set /zk "zb"

技术分享图片
[zk: localhost:2183(CONNECTED) 5] set /zk "zb"
cZxid = 0x500000006
ctime = Fri Oct 17 03:54:20 PDT 2014
mZxid = 0x500000007
mtime = Fri Oct 17 03:55:50 PDT 2014
pZxid = 0x500000006
cversion = 0
dataVersion = 1
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 9
numChildren = 0
技术分享图片

  (7) 下面我们将刚才创建的Znode删除,执行命令:delete /zk

[zk: localhost:2183(CONNECTED) 7] delete /zk

  (8)删除节点:rmr(效果同上),执行命令:rmr /zk

[zk: localhost:2183(CONNECTED) 7] rmr /zk

ZooKeeper节点属性

通过前面的介绍,我们可以了解到,一个节点自身拥有表示其状态的许多重要属性,如下图所示。

 技术分享图片

ZooKeeper节点类型

1、Znode有两种类型:

 

  临时节点(ephemeral)(断开连接自己删除)该节点的生命周期依赖于创建它们的会话。一旦会话(Session)结束,临时节点将被自动删除,当然可以也

可以手动删除。虽然每个临时的Znode都会绑定到一个客户端会话,但他们对所有的客户端还是可见的。另外,ZooKeeper的临时节点不允许拥有子节点。

  持久节点(persistent)(断开连接不删除)该节点的生命周期不依赖于会话,并且只有在客户端显示执行删除操作的时候,他们才能被删除。

2.2 Zookeeper的api的简单使用  

  Zookeeper API共包含五个包,分别为:  

(1)org.apache.zookeeper
(2)org.apache.zookeeper.data
(3)org.apache.zookeeper.server
(4)org.apache.zookeeper.server.quorum
(5)org.apache.zookeeper.server.upgrade

  org.apache.zookeeper.Zookeeper 是客户端入口主类,负责建立与server的会话

  如果要使用Zookeeper服务,应用程序首先必须创建一个Zookeeper实例,这时就需要使用此类。一旦客户端和Zookeeper服务建立起了连接,

Zookeeper系统将会给次连接会话分配一个ID值,并且客户端将会周期性的向服务器端发送心跳来维持会话连接。只要连接有效,客户端就可以使

用Zookeeper API来做相应处理了

  Zookeeper类提供了如下图所示的几类主要方法:

功能

描述

create

在本地目录树中创建一个节点

delete

删除一个节点

exists

测试本地是否存在目标节点

get/set data

从目标节点上读取 / 写数据

get/set ACL

获取 / 设置目标节点访问控制列表信息

get children

检索一个子节点上的列表

sync

等待要被传送的数据

2.3 Zookeeper API的使用(Demo增删改查程序)

  

                          

  

  

 

  

  

  

 

8.4.4.Zookeeper结构和命令

标签:系统   代码   enter   http   执行命令   ssi   手动   输入   服务器   

原文地址:https://www.cnblogs.com/yaboya/p/9139003.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!