文章目录
-
-
- zookeeper环境搭建
- linux下jdk环境搭建
-
- 一、安装jdk
- 二、zookeeper配置文件
- 三、启动zookeeper
- 3-1 zk数据模型介绍
- 3-2 zookeeper数据模型的基本操作
- 3-3 zookeeper的作用
- 4-1 zookeeper的常用命令
- 4-2 session的基本原理
- 4-3 zk特性 watcher机制
- 4-4 父节点watcher事件
- 4-5 子节点watcher事件
- 4-6 watcher使用场景
- 4-7 权限ACL
- 4-8 acl的构成 permission的构成
- 4-9 acl的命令行 world讲解
- 4-10 acl命令行 auth讲解
- 4-11 acl命令行 digest讲解
- 4-11 acl命令行 ip讲解
- 4-12 acl之super超级管理员
- 4-13 acl的常用场景
- 4-14 zk四字命令 Four letter words
- 5-1 zookeeper集群搭建
- 5-2 单机伪分布式集群
- 5-3 三台物理机(虚拟机)安装zookeeper
- 6-1 客户端与zk服务器的连接& zk会话重连机制
- 6-2 创建节点
- 6-3 修改节点数据
- 6-4 删除节点
- 6-5 CountDownLatch的介绍
- 6-6 节点查询
-
zookeeper环境搭建
linux下jdk环境搭建
一、安装jdk
jdk1.8.0_211链接
zookeeper链接,新版本只有带bin的是编译过的更是我们需要的,另一个版本只是源码
1、将jdk和zookeeper通过ftp转移到linux /home下
2、解压jdk和zookeeper到/usr/和/usr/local下
解压jdk和zookeeper
tar -zxvf ....jdk
tar -zxvf ...zookeeper
修改解压之后的jdk和zookeeper的名字
mv XXX jdk8
mv YYY zookeeper
转移jdk和zookeeper
mv jdk8 /usr
mv zookeeper /usr/local
2、配置jdk和zookeeper环境变量
修改配置文件 vim /etc/profile
export JAVA_HOME=/usr/jdk8
export ZOOKEEPER_HOME=/usr/local/zookeeper
export CLASSPATH=.:%JAVA_HOME%/lib/dt.jar:%JAVA_HOME%/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin:$ZOOKEEPER_HOME/bin
配置完环境变量测试一下是否成功
测试之前先刷新配置文件
source /etc/profile
//测试
java -version
二、zookeeper配置文件
复制zookeeper/conf/zookeeper.cfg文件
cp zookeeper.cfg zoo.cfg
1、tickTime
Zookeeper 服务器之间或客户端与服务器之间维持心跳的时间间隔。 也就是每隔 tickTime 时间就会发送一个心跳。以毫秒为单位,比如session超时 N*tickTime
2、initLimit
用于集群,允许从节点链接并同步到master节点的初始化连接时间,以tickTime的倍数来表示。
3、syncLimit
用于集群,master主节点与从节点之间发送消息,请求和应答时间长度(心跳机制),超时从节点就会被抛弃
4、dataDir
必须配置
但是不能配置到临时文件夹里面
dataDir=/tmp/zookeeper
修改为
dataDir=/usr/local/zookeeper/dataDir
dataLogDir=/usr/local/zookeeper/dataLogDir
5、dataLogDir
日志目录,如果不配置会和dataDir公用
6、clientport
连接服务器的端口,默认2181
三、启动zookeeper
//启动
./zkServer.sh start
//重启,现关闭再开启
./zkServer.sh restart
//查看状态
./zkServer.sh status
3-1 zk数据模型介绍
1、树形结构
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ygF1mlkK-1575608668526)(en-resource://database/1749:1)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-djztQuLN-1575608668527)(en-resource://database/1751:1)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Vc99c9ml-1575608668528)(en-resource://database/1753:1)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YGV94rXQ-1575608668528)(en-resource://database/1755:1)]
3-2 zookeeper数据模型的基本操作
- 客户端连接
./zkCli.sh打开命令行后台
连接到Connecting to localhost:2181
Ctrl+C退出当前客户端 - 查看znode结构
- 关闭客户端连接
3-3 zookeeper的作用
1、高可用,当master挂了之后,后续的从节点就会替补上去,不让让系统崩掉,这也叫做首脑模式,保证集群的高可用,高可用的体现之一,局长死了,副局长立马顶上
2、统一配置文件管理,只需要部署一台服务器,则可以吧相同的配置文件同步更新到其他服务器,此操作在云计算中非常多(假设修改了redis统一配置)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZGMp7qyF-1575608668529)(en-resource://database/1757:1)]
3、发布与订阅,例如消息队列MQ,发布者将信息发布到节点,二订阅了节点的订阅者就会收到这个信息,相应的进行改变
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ic7PjXA0-1575608668530)(en-resource://database/1759:1)]
4、提供分布式锁,分布式环境中,不同进程的资源争抢,类似以多线程中的锁(为什么zookeeper能提供分布式锁呢,归因于zookeeper的结构,在zookeeper的结构中,增加节点是往后续的,即一个个增加在后面,类似于队列,所以第一个就是相当于master,这个唯一就是锁)
5、集群管理,集群保证数据的强一致性
比如客户端连接了主节点,并且增加数据Data-XYZ,那么由于集群的机制会进行同步,那么从节点酒也有了这个数据,客户端断开之后,连接其他节点也会读到相同的信息(类似于2统一文件-配置)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xgLMpyzY-1575608668530)(en-resource://database/1761:1)]
4-1 zookeeper的常用命令
- ./zkCli.sh 打开命令行后台
- ls和ls2
ls查看目录 ls /zookeeper
ls2是查看节点状态信息 ls2 /
ls2相当于ls和stat - stat 查看状态信息
- get 当前节点的数据取出来
czxid 节点创建的id
ctime 节点创建的时间
mzxid 节点修改的id
mtime 节点修改的时间
pzxid 子节点的id
cversion 子节点的版本
dataVersion 数据的版本
aclVersion 节点权限修改的版本
ephemeralOwner 之后再说
dataLength 数据长度
numChildren 下面子节点的个数
4-2 session的基本原理
基本原理一
- 客户端与服务器之间的连接存在会话
- 每个会话都会可以设置一个超时时间
- 心跳结束,则Session过期
因为每个心跳都会向服务器发送一个(ping包&#