最近使用了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 /npfystat 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: 0x1599d1a7d420000ls2 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 : cdrwasync 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
注意:就算超出,只是有警告
相关推荐
《Zookeeper一站式学习资料》是一份全面覆盖Zookeeper基础到高级知识的学习资源包,旨在帮助初学者快速入门并深入理解Zookeeper。这份资料包含了丰富的文本资料、视频教程以及相关的实践代码,是学习分布式协调服务...
- 在每台机器上,启动Zookeeper一次,这将初始化`dataDir`下的`version-2`目录,然后立即停止Zookeeper服务。 5. **启动Zookeeper集群**: - 在每台机器上,使用如下命令启动Zookeeper服务: ``` bin/zkServer....
在完成上述步骤后,你就成功地在Windows 7环境下搭建了一个SolrCloud的基本架构,能够支持多个Solr实例在单台机器上同时运行,这为后续的分布式搜索和索引管理提供了基础。接下来,你可能还需要配置Zookeeper集群,...
solrcloud5结合zookeeper搭建、使用详解,是一部难得的好教程
Zookeeper是一个分布式协调服务,它为分布式应用程序提供一致性服务,如命名服务、配置管理、集群管理、分布式同步等。Zookeeper的主要设计目标是简化分布式系统的复杂性,通过提供一种简单易用的接口,使得开发者...
Zookeeper,作为Apache的一个开源项目,是分布式应用程序协调服务的基石,它是一个高可用、高性能的分布式一致性服务。在标题“zookeeper-3.4.6_zookeeper_”中,我们可以看到这是关于Zookeeper的一个特定版本——...
ZooKeeper 是一个广泛使用的分布式协调服务,它提供了许多有用的功能,如配置管理、名字服务、分布式锁等。然而,在 ZooKeeper 中存在一些安全漏洞,例如未经授权的访问、数据泄露等。为了解决这些问题,本文将介绍...
### ZooKeeper节点基本操作详解 #### 一、创建节点 在ZooKeeper中,节点(也称为znode)是用于存储数据的基本单元。通过`create`命令可以创建节点,并且可以指定不同的节点类型。 1. **普通节点**: - 普通节点...
Zookeeper是一个高性能、分布式的开源协调服务,它主要解决的是分布式环境下的数据一致性问题。由Apache Hadoop项目开发,现已成为顶级项目,广泛应用于大数据、微服务等领域。Zookeeper的主要功能包括命名服务、...
Linux 集群搭建是 ZooKeeper 的一种常见应用场景,本文将详细介绍 ZooKeeper Linux 集群搭建流程。 准备前提 在开始搭建 ZooKeeper 集群之前,需要提前在本地安装好 JDK,因为 ZooKeeper 是用 Java 编写的,需要...
Apache ZooKeeper 是一个分布式协调服务,它为分布式应用程序提供高度可靠的命名服务、配置管理、集群同步、领导选举等核心功能。在运维和开发过程中,为了更方便地管理和监控Zookeeper,出现了许多可视化工具。这些...
Apache ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,它是集群的管理者,监视着分布式应用程序的运行状态,提供诸如命名服务、配置管理、分布式同步、组服务等分布式基础服务。Zookeeper的设计目标...
3.4.9版本是ZooKeeper的一个稳定版本,提供了一系列增强功能和性能优化。在本文中,我们将深入探讨如何在Windows和Linux操作系统上安装、配置和使用ZooKeeper 3.4.9。 一、ZooKeeper基础 1.1 ZooKeeper的角色:...
Zookeeper 是一个分布式的,开放源码的分布式应用程序协调服务,它是集群的管理者,监视着集群中各个节点的状态根据节点提交的反馈进行下一步合理操作。最终将简单易用的接口和性能高效、功能稳定的系统提供给用户。...
ZooKeeper 是一个分布式应用程序协调服务,提供了配置管理、名称服务、分布式同步和提供组服务等功能。下面是 CentOS 8 安装 ZooKeeper 3.8.0 的详细步骤。 1. 下载安装包 首先,需要下载 ZooKeeper 3.8.0 的...
Apache ZooKeeper 是一个高度可靠的分布式协调系统,广泛应用于云原生环境中的服务发现、配置管理、命名服务等场景。Zookeeper-3.8.0 是该系统的最新版本,提供了更稳定和高效的服务。 Zookeeper 的核心概念包括...
在IT领域,Zookeeper是一个非常重要的分布式协调服务,由Apache Hadoop项目开发并维护。它在大规模分布式系统中被广泛用于数据管理、配置共享、命名服务、群组服务以及分布式同步。Zookeeper-3.4.8是其一个稳定版本...
Zookeeper是Apache软件基金会的一个开源项目,主要用于分布式协调服务,它是集群管理的基石,被广泛应用于大数据、云计算等领域。Zookeeper 3.4.12是该系统的一个稳定版本,提供了解压即用的便利性。 一、Zookeeper...
ZooKeeper 作为一个分布式应用程序协调服务,提供了高效、可靠的分布式锁、队列、节点管理等功能。但是,如果 ZooKeeper 没有正确地配置访问权限,就可能会出现未授权访问的问题,本文将为读者提供 ZooKeeper 未...
ZooKeeper 3.6.3 是一个广泛用于分布式系统的协调服务,它为分布式应用程序提供了高效且可靠的命名服务、配置管理、集群同步、分布式锁等核心功能。在深入理解源码之前,我们需要先了解ZooKeeper的基本概念和工作...