zookeeper基础

zookeeper基础,第1张

zookeeper基础 apache

归档列表 http://archive.apache.org/dist/

Zookeeper 1.ZK简介

Zookeerper(动物园管理者)简称ZK,一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。ZooKeeper使用java编写,但是支持java和C两种编程语言。

2.ZK数据模型 2.1 模型结构

2.2 模型的特点
  • 每个子目录如/node1都被称作一个znode(节点),这个znode是被它所在的路径唯一标识
  • znode可以有子节点目录,并且每个znode可以存储数据
  • znode是有版本的,每个znode中存储的数据可以有多个版本,也就是一个访问路径中可以存储多份数据
  • znode可以被监控,包括这个目录节点中存储的数据的修改,子节点目录的变化等,一旦变化可以通知设置监控的客户端
3.节点分类 3.1 持久节点(PERSISTENT)

是指在节点创建后,就一直存在,直到有删除 *** 作来主动删除这个节点,不会因为创建该节点的客户端会话失效而消失

3.2 持久顺序节点(PERSISTENT_SEQUENTIAL)

这类节点的基本特性和上面的节点类型一致的。额外的特性是,在ZK中,每个父节点会为它的第一级节点维护一份时序,会记录每个子节点创建的先后顺序,基于这个特性,在创建子节点的时候,可以设置这个属性,那么在创建节点过程中,ZK会自动为给定节点名加上一个数字后缀,作为新的节点名。这个数字后缀的范围是整型的最大值

3.3 临时节点(EPHEMERAL)

如果客户端会话失效,那么这个节点就会自动被清除掉,注意这是提到的是会话失效,而非连接断开。另外再临时节点下面不能创建子节点

3.4 临时顺序节点(EPHEMERAL_SEQUENTIAL)

具有临时节点特点,每个父节点会为他的第一级子节点维护一份时序。

4.安装 4.1 linux安装
# 1.安装JDK并配置环境变量 下载zk安装包
http://archive.apache.org/dist/zookeeper/zookeeper-3.4.8/
# 2.上传到linux服务中,并解压
tar -zxvf zookeeper-3.4.8.tar.gz
# 3.重命名安装目录
mv zookeeper-3.4.8 zk
# 4.修改zoo.cfg配置文件
# 修改zk的conf目录下的zoo_simple.cfg,修改完成后重命名为zoo.cfg
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/usr/local/zookeeper/zkdata
clientPort=2181
# 5.启动zk
# 在zk的bin目录下,运行zkServer.sh
 ./bin/zkServer.sh start
# 6.使用jps查看启动是否成功
# 7.启动客户端连接到zk
 ./bin/zkCli.sh -server 192.168.100.188:2181
# 注意:可以通过 ./bin/zkCli.sh help查看客户端所有可以执行的指令
4.2 Docker安装zookeeper
# 1.获取zk镜像
- docker pull zookeeper:3.4.14
# 2.启动zk服务
- docker run --name zk -p 2181:2181 -d zookeeper:3.4.14

5.客户端基本指令
#1.进去zk客户端
[root@localhost zookeeper-3.4.8]# ./bin/zkCli.sh -server 192.168.100.188 
#2.ls path 查看特定节点下面的子节点
[zk: localhost:2181(CONNECTED) 0] ls /         
[dubbo, zookeeper]
#3.create path data 创建一个节点 并给节点绑定数据,默认是持久性节点
[zk: localhost:2181(CONNECTED) 2] create /zk lisi  #创建持久节点
Created /zk
[zk: localhost:2181(CONNECTED) 5] ls /
[dubbo, zk, zookeeper]
[zk: localhost:2181(CONNECTED) 6] create -s /zk lisi1 #创建持久性顺序节点
Created /zk0000000002
[zk: localhost:2181(CONNECTED) 7] ls /
[dubbo, zk, zk0000000002, zookeeper]
#创建临时性节点 临时节点不能含有任何子节点
[zk: localhost:2181(CONNECTED) 1] create -e /wangwu zhangsan  
Created /wangwu
[zk: localhost:2181(CONNECTED) 2] ls /
[dubbo, zk, wangwu, zk0000000002, zookeeper]
#创建临时顺序节点 临时节点不能含有任何子节点
[zk: localhost:2181(CONNECTED) 3] create -s -e /li /xiaosan
Created /li0000000004
[zk: localhost:2181(CONNECTED) 4] ls /
[dubbo, zk, li0000000004, wangwu, zk0000000002, zookeeper]
#查看节点状态                                 stat path
#修改节点数据                                 set path data
#查看节点下及当前节点的状态                     ls2 path
#查看 *** 作历史                                  history
#获得节点上绑定的数据信息                       get path
#删除节点 删除节点不能含有子节点                 delete path
#递归删除节点 会将当前节点下所有节点删除          rmr path
#退出当前会话 会话失效                          quit
6.节点监听机制 watch

客户端可以监测znode节点的变化,znode节点的变化触发相应的事件,然后清除对该节点的监测。当监测一个znode节点时候,Zookeeper会发送通知给监测节点,一个watch事件是一个一次性的触发器,当被设置了watch的数据和目录发生了改变的时候,则服务器将这个改变发送给设置了watch的客户端以便通知他们

#监听节点目录的变化    ls /path true
#监听节点数据的变化    get /path true 
7.ZK集群 7.1 集群(cluster)
# 1.集群cluster
- 集合同一种软件服务的多个节点同时提供服务
# 2.集群解决问题
- 单节点的并发访问的压力问题
- 单节点故障问题
7.2 集群架构

  • leader:领导 zk集群主节点
  • follwing:仲裁节点 除了主节点意外的节点
7.3 搭建集群
#1.创建三个dataDir
[root@localhost ~]# mkdir zkdata1 zkdata2 zkdata3
#2.分别在三个dataDir目录下面创myid文件
[root@localhost ~]# touch zkdata1/myid  zkdata2/myid  zkdata3/myid
#3.配置标识文件
[root@localhost ~]# echo "1" >> zkdata1/myid
[root@localhost ~]# echo "2" >> zkdata2/myid
[root@localhost ~]# echo "3" >> zkdata3/myid
#4.在/conf目录下创建三个zk配置文件分别为zoo1.cfg zoo2.cfg zoo3.cfg
[root@localhost zkdata1]# vim zoo1.cfg
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/root/zkdata1
clientPort=3001
server.1=192.168.100.188:3002:3003
server.2=192.168.100.188:4002:4003
server.3=192.168.100.188:5002:5003
[root@localhost zkdata2]# vim zoo2.cfg
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/root/zkdata2
clientPort=4001
server.1=192.168.100.188:3002:3003
server.2=192.168.100.188:4002:4003
server.3=192.168.100.188:5002:5003
[root@localhost zkdata3]# vim zoo3.cfg
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/root/zkdata3
clientPort=5001
server.1=192.168.100.188:3002:3003
server.2=192.168.100.188:4002:4003
server.3=192.168.100.188:5002:5003
#server.X:x为服务器的唯一标识  192.168.100.188服务器所在的ip地址
#3002:数据同步使用的端口号   3003 选举使用的端口号
#5.分别启动各个zk服务器
[root@localhost ~]# cd /usr/local/zookeeper/zookeeper-3.4.8/bin
[root@localhost bin]# ./zkServer.sh start /root/zkdata1/zoo1.cfg
[root@localhost bin]# ./zkServer.sh start /root/zkdata2/zoo2.cfg
[root@localhost bin]# ./zkServer.sh start /root/zkdata3/zoo3.cfg
#6.查看各个zk服务器的角色信息
[root@localhost bin]# ./zkServer.sh status /root/zkdata1/zoo1.cfg
ZooKeeper JMX enabled by default
Using config: /root/zkdata1/zoo1.cfg
Mode: follower
[root@localhost bin]# ./zkServer.sh status /root/zkdata2/zoo2.cfg
ZooKeeper JMX enabled by default
Using config: /root/zkdata2/zoo2.cfg
Mode: leader
#7.客户端连接任务zk服务器进行节点 *** 作
[root@localhost bin]# ./zkCli.sh -server 192.168.100.188:3001
#8.停止特定zk服务器
[root@localhost bin]# ./zkServer.sh stop /root/zkdata2/zoo2.cfg

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5636214.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存