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 ...
随机推荐
- RDLC报表系列(一) 简单的动态数据绑定和配置
RDLC系列链接 RDLC报表系列(一) 简单的动态数据绑定和配置 RDLC报表系列(二) 行分组 RDLC报表系列(三) 总计和折叠 RDLC报表系列(四) 矩阵 RDLC报表系列(五) 简单的图 ...
- CentOS 7 启动VNC失败问题
开机后发现VNC服务没有启启来,提示我们使用journalctl -xn查看错误信息,提示信息如下: Sep :: localhost.localdomain systemd[]: Unit vncs ...
- 关于textField
如果想给textField设置背景图片,首先设置该控件的bounder Style为最左边的无style,然后设置背景图片 如果设置textField弹出键盘 的发送按钮:设置右侧Return K ...
- Core Java读书笔记之String
Java里面的String Conceptually, Java Strings are sequences of Unicode characters. Java里面的String都是Unicode ...
- 变量 - PHP手册笔记
基础 PHP中的变量用一个美元符号后面跟变量名来表示.变量名是区分大小写的,并且出现中文可能也是合法的. 变量默认总是传值赋值.PHP也提供了另外一种方式给变量赋值:引用赋值.这意味着新的变量简单的引 ...
- Linux中的读函数与块高速缓存
为了提高Linux块设备读写的效率,Unix会在内存中建立块高速缓存,块高速缓存存储了系统最近读的数据块和刚刚写入的数据块,也就是说IO访问其实是和块高速缓存打交道的(直接IO除外),块高速缓存会适时 ...
- How Many Tables--hdu1213(并查集)
How Many Tables Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)T ...
- ADO.NET帮助类DBHelper
一. DBHelper帮助类 using System; using System.Collections.Generic; using System.Linq; using System.Text; ...
- 【STM32】用DMA实现多路ADC通道数据采集
今天尝试了下STM32的ADC采样,并利用DMA实现采样数据的直接搬运存储,这样就不用CPU去参与操作了. 找了不少例子参考,ADC和DMA的设置了解了个大概,并直接利用开发板来做一些实验来验证相关的 ...
- Oracle EBS-SQL (PO-16):检查采购订单完成情况统计.sql
select e.FULL_NAME 采购员, sum(plla ...