zookeeper_02:zookeeper基础
- ZooKeeper基础概述
ZooKeeper维护一个小型的数据节点,这些节点被称为znode,采用类似于文件系统的层级树状结构进行管理。

针对一个znode,没有数据常常表达了重要的信息。比如,在主-从模式中的例子,主节点的znode没有数据,表示当前还没有选举出主节点。
/workers 节点作为父节点,其下每个znode子节点保存了系统中一个可用从节点信息(foo.com:2181)
/tasks 节点作为父节点,其下每个znode自己诶单保存了所有已经创建并等待从节点执行的任务的信息,主-从模式的应用的客户端在/tasks下添加一个znode子节点,用来表示一个新任务,并等待任务状态的znode节点。
/assign 节点作为父节点,其下每个znode子节点保存了分配到某个从节点的一个任务信息,当主节点为某个从节点分配了一个任务,就会在/assign下增加一个子节点。
- ZooKeeper的API概述
[zk: 127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183(CONNECTED) 35] h
ZooKeeper -server host:port cmd args
connect host:port
get path [watch]
ls path [watch]
set path data [version]
rmr path
delquota [-n|-b] path
quit
printwatches on|off
create [-s] [-e] path data acl
stat path [watch]
close
ls2 path [watch]
history
listquota path
setAcl path acl
getAcl path
sync path
redo cmdno
addauth scheme auth
delete path [version]
setquota -n|-b val path
- ZooKeeper的不同类型
1、持久型
只能通过调用delete来进行删除
2、临时型
2.1、当创建该znode的客户端的会话因超市或者主动关闭而终止时会被删除
2.2、当某个客户端(不一定是创建者)主动删除该节点时会被删除
3、持久有序型
一个有序znode节点被分配唯一一个单调递增的整数,一个序号会被追加到路径之后
4、临时有序型
一个有序znode节点被分配唯一一个单调递增的整数,一个序号会被追加到路径之后
- 版本号
每一个znode都有一个版本号,它随着每次数据变化而自增。可以使用版本来阻止并行操作的不一致性
- ZooKeeper的helloworld
1、下载ZooKeeper的发行包
2、解压:tar -zxvf zookeeper.tar.gz
3、修改conf目录下的zoo_sample.cfg名称
mv zoo_sample.cfg zoo.cfg
4、设置zoo.cfg中的data目录,防止zookeeper填满了跟分区
dataDir=/users/me/zookeeper/z1/data
5、启动服务
./zkServer.sh start
echo ruok | nc localhost 2181
若是正常运行的话会打印“imok”。
- 会话状态和生命周期

- zooKeeper的伪集群模式
1、在zoo.cfg中配置如下信息
dataDir=/tmp/zookeeper/z1/data
server.1=127.0.0.1:2222:2223
server.2=127.0.0.1:3333:3334
server.3=127.0.0.1:4444:4445
2、配置myid
[root@root tmp]# tree zookeeper/
zookeeper/
├── version-2
│ └── log.1
├── z1
│ ├── data
│ │ ├── myid #该文件内容为zookeeper的服务器的ID
│ │ ├── version-2
│ │ │ ├── acceptedEpoch
│ │ │ ├── currentEpoch
│ │ │ ├── log.100000001
│ │ │ ├── log.200000001
│ │ │ ├── snapshot.0
│ │ │ └── snapshot.100000017
│ │ └── zookeeper_server.pid
│ └── zookeeper_server.pid
3、启动zookeeper
./zkServer.sh start ../conf/z1.cfg
./zkServer.sh start ../conf/z2.cfg
1 )使用 ls 命令来查看当前 ZooKeeper 中所包含的内容:
[zk: 202.115.36.251:2181(CONNECTED) 1] ls /
[zookeeper]
2 )创建一个新的 znode ,使用 create /zk myData 。这个命令创建了一个新的 znode 节点“ zk ”以及与它关联的字符串:
[zk: 202.115.36.251:2181(CONNECTED) 2] create /zk "myData"
Created /zk
3 )我们运行 get 命令来确认 znode 是否包含我们所创建的字符串:
[zk: 202.115.36.251:2181(CONNECTED) 3] get /zk
cZxid = 0x6
ctime = Thu Sep 12 15:49:16 CST 2013
mZxid = 0x7
mtime = Thu Sep 12 15:49:38 CST 2013
pZxid = 0x6
cversion = 0
dataVersion = 1
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 10
numChildren = 0
4 )下面我们通过 set 命令来对 zk 所关联的字符串进行设置:
[zk: 202.115.36.251:2181(CONNECTED) 4] set /zk "zsl"
"myData"
cZxid = 0x4
ctime = Thu Sep 12 15:46:37 CST 2013
mZxid = 0x4
mtime = Thu Sep 12 15:46:37 CST 2013
pZxid = 0x4
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 8
numChildren = 0
5 )下面我们将刚才创建的 znode 删除:
[zk: 202.115.36.251:2181(CONNECTED) 5] delete /zk
当然,我们还可以创建有曾次的目录,比如使用create /zk/node1在zk目录下创建新的目录node1
[zk: 192.168.255.133:2181(CONNECTED) 18] create /zk/node1 "node1"
Created /zk/node1
[zk: 192.168.255.133:2181(CONNECTED) 19] ls /zk
[node1]
使用ZooKeeper四字命令
传递四个字母的字符串给ZooKeeper,ZooKeeper会返回一些有用的信息。
|
ZooKeeper 四字命令 |
功能描述 |
|
conf |
输出相关服务配置的详细信息。 |
|
cons |
列出所有连接到服务器的客户端的完全的连接 / 会话的详细信息。包括“接受 / 发送”的包数量、会话 id 、操作延迟、最后的操作执行等等信息。 |
|
dump |
列出未经处理的会话和临时节点。 |
|
envi |
输出关于服务环境的详细信息(区别于 conf 命令)。 |
|
reqs |
列出未经处理的请求 |
|
ruok |
测试服务是否处于正确状态。如果确实如此,那么服务返回“imok ”,否则不做任何相应。 |
|
stat |
输出关于性能和连接的客户端的列表。 |
|
wchs |
列出服务器 watch 的详细信息。 |
|
wchc |
通过 session 列出服务器 watch 的详细信息,它的输出是一个与watch 相关的会话的列表。 |
|
wchp |
通过路径列出服务器 watch 的详细信息。它输出一个与 session相关的路径。 |
zookeeper_02:zookeeper基础的更多相关文章
- Hadoop系列-zookeeper基础
目前是刚刚初学完zookeeper,这篇文章主要是简单的对一些基本的概念进行梳理强化. zookeeper基础概念的理解 有时候计算机领域很多名词都是从一长串英文提取首字母缩写而来,但很不幸zooke ...
- Zookeeper 基础、工作流、ZAP协议
ZooKeeper 基础 在深入了解ZooKeeper的运作之前,让我们来看看ZooKeeper的基本概念.[1] 我们将在本章中讨论以下主题:1.Architecture(架构)2.Hierarch ...
- Zookeeper系列一:Zookeeper基础命令操作
有些事不是努力就可以改变的,五十块的人民币设计的再好看,也没有一百块的招人喜欢. 前言 由于公司年底要更换办公地点,所以最近投了一下简历,发现面试官现在很喜欢问dubbo.zookeeper和高并发等 ...
- Zookeeper基础教程(六):.net core使用Zookeeper
Demo代码已提交到gitee,感兴趣的更有可以直接克隆使用,地址:https://gitee.com/shanfeng1000/dotnetcore-demo/tree/master/Zookeep ...
- Zookeeper基础教程(五):C#实现Zookeeper分布式锁
分布式锁 互联网初期,我们系统一般都是单点部署,也就是在一台服务器完成系统的部署,后期随着用户量的增加,服务器的压力也越来越大,响应速度越来越慢,甚至出现服务器崩溃的情况. 为解决服务器压力太大,响应 ...
- 第一章 zookeeper基础概念
1.ZooKeeper是什么 ZooKeeper为分布式应用提供了高效且可靠的分布式协调服务,提供了统一命名服务. 配置管理和分布式锁等分布式的基础服务.在解决分布式数据一致性方面, ZooKeepe ...
- ZooKeeper基础
======================================ZooKeeper 背景======================================ZooKeeper 是一 ...
- Zookeeper(一) zookeeper基础使用
一.Zookeeper是什么 (安装的是3.4.7) ZooKeeper 是一个分布式的,开放源码的分布式应用程序协调服务,是 Google 的 Chubby 一个开源的实现.它提供了简单原始的功能, ...
- Zookeeper基础命令操作
转载链接:https://blog.csdn.net/dandandeshangni/article/details/80558383 安装参考链接https://blog.csdn.net/qiun ...
随机推荐
- C#整理8——结构体
结构体:相当于是我们自己定义的一种复杂的类型.int... double float bool char string DateTime 数组类型生活中大部份的对象都是复合型的对象. 如何定义结构体类 ...
- java学习之部分笔记2
1.变量 实例变量和局部变量 实例变量系统会自动初始化为0和null(string),局部变量必须设定初始值. 静态方法里只能引用静态变量 数据类型的自动转换! int—>long 2.构造方法 ...
- http协议说明
今天公司有同事让我给他讲一讲http..然后自己写了一个示例代码,这如果都看不懂.那我也没办法了.... <?php //这里服务器以apache举例.nginx.iis.他们实际上处理方式的都 ...
- javascript. String方法扩张.
有时候觉得js内置的方法不够用.可自己扩充. 下面是我扩充的几个方法. 为了避免变量冲出.覆盖.利用自执行函数实现. +function (a) { a.fn = a.prototype; var f ...
- PHP QR Code封装二维码生成教程
今天搞了一下二维码封装在tp框架上运用. 找了下草料网, api接口要收费, 现在找到了两种方法来实现用PHP来实现创建二维码. 由于二维码生成,会使用到PHP的GD库, 我们要先在PHP.ini文件 ...
- 常用的PHP正则表达式汇总
PHP中的常用正则表达式集锦: 匹配中文字符的正则表达式: [\u4e00-\u9fa5] 评注:匹配中文还真是个头疼的事,有了这个表达式就好办了 匹配双字节字符(包括汉字在内):[^\x00-\xf ...
- Avoid The Lakes--poj3620
Avoid The Lakes Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 7023 Accepted: 3735 D ...
- CodeForces 214B Hometask
本题求n个数组成的大数,要求是2,3,5的倍数. 因为是2 和5 的倍数,所以个位为 0:所以若n个数中没有0,直接输出-1: 难点就是要求为3 的倍数. 因为若某个数为3的倍数,则其各位数的和必然是 ...
- 服务端无法获取到Ajax发送post请求的参数
js类似于这样: function send() { var xhr = new XMLHttpRequest(); xhr.open("post", "AjaxTest ...
- Xmemcached
http://blog.csdn.net/yuwenruli/article/details/8478201