ZooKeeper(一)

最近使用了Zookeeper,做简单的事件监听。so....let's go

zookeeper官网地址:http://zookeeper.apache.org

一、zookeeper服务搭建

从官网上下载zookeeper的最新包,地址:http://mirrors.hust.edu.cn/apache/zookeeper,我下载的是zookeeper-3.5.2-alpha版本,先看一下目录结构



 1)bin 包含zookeeper设计的命令脚本。其中cmd用于windows平台,sh是shell脚本用于linux平台。bin文件夹下包含zkCli----启动zookeeper的客户端,zkServer---启动zookeeper服务端,zkEnv----设置zookeeper启动或链接时使用的环境变量,zkCleanup---仅存在于linux平台,清除旧的日志和快照,zkServer-initialize---仅存在于linux平台,在启动服务时发现zookeeper的data不存在或者无法创建myid文件(记录zookeeper运行的pid),使用这个shell脚本初始化一下

  2)conf 包含启动或连接zookeeper的配置文件。默认conf存在的为zoo_sample.cfg.使用时将zoo_sample.cfg修改成zoo.cfg,因为zkServer默认使用的配置文件名称为zoo.cfg。

 tickTime是每次心跳的时间,用于客户端检测服务端的节点是否存在的一个间隔时间;

 initLimit (zookeeper集群)slave与master之间能最大容忍多少次心跳的连接间隔;

 syncLimit(zookeeper集群)slave从master上同步数据的同步时间间隔;

以上两个配置文件,写的都是次数,真正间隔时间为次数*tickTime!

 dataDir 节点信息存储的路径;

 clientPort 客户端接入服务端的端口号;

 maxClientCnxns 客户端最大连接数,默认是60;

 autopurge.snapRetainCount 其他网站上说的是保留文件个数,我暂时还没用,所以不能说!TODO 后续更新

 autopurge.purgeInterval 这个是设置多长时间会清理一次

3)contrib zookeeper的一些工具包

4) dist-maven 是zookeeper提供的jar包集合

5) lib 是zookeeper涉及使用的jar包

6)recipes 是使用zookeeper的范例

 

二、启动服务端和客户端

windows环境默认使用配置文件为conf\zoo.cfg:

<!--zkEnv.cmd-->
set ZOOCFGDIR=%~dp0%..\conf
set ZOOCFG=%ZOOCFGDIR%\zoo.cfg
<!--zkServer.cmd-->
call %JAVA% "-Dzookeeper.log.dir=%ZOO_LOG_DIR%"
 "-Dzookeeper.root.logger=%ZOO_LOG4J_PROP%" 
"-Dzookeeper.log.file=%ZOO_LOG_FILE%"
 "-XX:+HeapDumpOnOutOfMemoryError"
 "-XX:OnOutOfMemoryError=cmd /c taskkill /pid %%%%p /t /f" 
-cp "%CLASSPATH%" %ZOOMAIN% "%ZOOCFG%" %*

 所以,如果你用一个zookeeper启动多个zookeeper服务端,需要拷贝zoo.cfg修改配置和名称。后修改zkServer或zkCli的%ZOOCFG%替换为zoo.cfg文件。同理,对应的日志级别和java的参数都可以在这里修改。完成修改后,双击运行即可。

 当然,可以做成windows服务。

  //TODO

二、zookeeper常用命令

set path data [version] 设置path节点的数据

[zk: localhost:2181(CONNECTED) 7]set /npfy/ajsc "this is one test"  
cZxid = 0xb21e
ctime = Wed Dec 28 15:29:31 CST 2016
mZxid = 0x1613e
mtime = Thu Jan 12 09:37:24 CST 2017
pZxid = 0x14e67
cversion = 46
dataVersion = 1
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 16 //data的长度
numChildren = 0

 get path [watch] 获取path节点的数据

[zk: localhost:2181(CONNECTED) 0] get /npfy/ajsc
this is one test
cZxid = 0xb21e
ctime = Wed Dec 28 15:29:31 CST 2016
mZxid = 0x1613e
mtime = Thu Jan 12 09:37:24 CST 2017
pZxid = 0x14e67
cversion = 46
dataVersion = 1
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 16
numChildren = 0

 你会发现set和get有共同展现部分:

   czkid:创建此节点的zk事务id;

   mzkid:最后修改此节点的zk事务id;

   pzkid:最后修改子节点的zk事务id;

   ephemeralOwner:可以认为是临时节点的象征,如果非临时节点则值为0x0;

ls path [watch] 浏览path下的所有节点

[zk: localhost:2181(CONNECTED) 3] ls /npfy
[ajsc]
[zk: localhost:2181(CONNECTED) 4] ls /npfy/ajsc
[]

 rmr path 删除path指向的节点

[zk: localhost:2181(CONNECTED) 7] rmr /npfy/ajsc
[zk: localhost:2181(CONNECTED) 8] ls /npfy
[]

  quit 退出连接,释放session

[zk: localhost:2181(CONNECTED) 9] quit
Quitting...
2017-01-12 09:44:22,850 [myid:] - INFO  [main:ZooKeeper@684] - Session: 0x158a94731990797 closed
2017-01-12 09:44:22,852 [myid:] - INFO  [main-EventThread:ClientCnxn$EventThread@519] - EventThread shut down for session: 0x158a94731990797

 printwatches on|off

//TODO 还不知道这个节点的用法
 create [-s] [-e] path data acl

-s是创建顺序节点,-e是创建临时节点,什么都不添加是创建永久节点

 

[zk: localhost:2181(CONNECTED) 21] create /npfy/test this
Node does not exist: /npfy/test   //注意直接创建从来没有的节点,注意只能创建一级节点
[zk: localhost:2181(CONNECTED) 22] create /npfy this
Created /npfy 
 stat path [watch]

 


 close

 关闭的是本次连接

 

[zk: localhost:2181(CONNECTED) 28] close
2017-01-14 21:30:11,346 [myid:] - INFO  [main:ZooKeeper@1313] - 
Session: 0x1599d1a7d420000 closed
[zk: localhost:2181(CLOSED) 29] 2017-01-14 21:30:11,347 [myid:] - 
INFO  [main-EventThread:ClientCnxn$EventThread@513] - 
EventThread shut down for session: 0x1599d1a7d420000
 ls2 path [watch]

 

  此命令已经被标记过期,建议使用ls命令

 history

 

[zk: localhost:2181(CONNECTED) 26] history
16 - ls /
17 - deleteall /npfy*
18 - deleteall /npfy0000000000
19 - ls /
20 - create /npfy/test "this"
21 - create /npfy/test this
22 - create /npfy this
23 - delquota /npfy
24 - printwatch on
25 - printwatches on
26 - history

 

 getAcl path

获取path的可见或可vaozuo权限

 

[zk: localhost:2181(CONNECTED) 2] getAcl /npfy
'world,'anyone
: cdrwa
 sync path

 

  此命令是集群使用,所以说,这个在后续章节说明
 redo cmdno

 setAcl path acl

 创建一个顺序自动编号的节点,ACL为使用digest(用户名:test 密码:test),权限为所有(rwcda)。关于digest的产生,base64.b64encode(hashlib.new("sha1", auth).digest())方法;通过向此方法指定原始的用户名和密码即可获得”digest”之后的字符串,比如传入auth="test:test",将会得到'test:V28q/NynI4JI3Rk54h0r8O5kMug=',其内部原理是将”密码”部分进行加密操作.

[zk: localhost:2181(CONNECTED) 1] create -s /test/test null digest:test:V28q/NynI4JI3Rk54h0r8O5kMug=:rwcda
/test/test0000000004
[zk: localhost:2181(CONNECTED) 2] getAcl /test/test
'digest,'test:V28q/NynI4JI3Rk54h0r8O5kMug=
: cdrwa

addauth scheme auth

   addauth digest test:test /npfy

设置授权
 delete path [version]

 删除节点,同rmr在高版本的zookeeper不支持rmr了

 

ZooKeeper quota 机制支持节点个数( znode )和空间大小(字节数)

 setquota -n|-b val path

  -n 设置path下的子节点数

 -b 设置path的大小

 delquota [-n|-b] path

 删除限制

 listquota path

列出quota

注意:就算超出,只是有警告

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
资源包主要包含以下内容: ASP项目源码:每个资源包中都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目中都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包中都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值