一、Zookeeper的特性:
1、顺序一致性 - 客户端的更新将按发送顺序
2、原子性 - 更新成功或失败 没有部分结果
3、单系统映像 - 无论服务器连接到哪个服务器 客户端都能看到相同的数据
4、可靠性 - 一旦应用了更新 它将从那时器持续到客户端覆盖更新
5、及时性 - 系统的客户视图保证在特定的时间范围内是最新的
二、Zookeeper的节点类型:
1、持久节点(PERSISTENT)
持久节点,创建后一直存在,直到主动删除此节点。
2、持久顺序节点(PERSISTENT_SEQUENTIAL)
持久顺序节点,创建后一直存在,直到主动删除此节点。在ZK中,每个父节点会为它的第一级子节点维护一份时序,记录每个子节点创建的先后顺序。
3、临时节点(EPHEMERAL)
临时节点在客户端会话失效后节点自动清除。临时节点下面不能创建子节点。
4、顺序临时节点(EPHEMERAL_SEQUENTIAL)
临时节点在客户端会话失效后节点自动清除。临时节点下面不能创建子节点。父节点getChildren会获得顺序的节点列表。
Zookeeper 的每个祭奠都有三个 zxid 值:cZxid、mZxid 和 pZxid
cZxid
对应为该节点的创建时间(Create)
mZxid
对应该节点的最近一次修改的时间(Mofify)
与其子节点无关
pZxid
这个节点就和子节点有关啦!
是与 该节点的子节点(或该节点)的最近一次 创建 / 删除 的时间戳对应,修改不会生成新的事务ID
注:只与 本节点 / 该节点的子节点,有关;与孙子节点无关。
三、分布式安装
1、集群实例 zk01、zk02、zk03、zk04、zk05
2、下载安装包并解压
[root@VM_10_179_centos ~]# tar -zxvf zookeeper-3.5.7.tar.gz /opt/soft/
[root@VM_10_179_centos ~]# cd zookeeper-3.5.7/conf
[root@VM_10_179_centos ~]# cp -p zoo_sample.cfg zoo.cfg
[root@VM_10_179_centos ~]# vim zoo.cfg
配置持久化路径 dataDir=/opt/soft/zookeeper-3.5.7/zkData
说明:2888端口leader 接受write的请求,3888端口选举投票用
在文件末尾增加如下
增加如下配置
#######################cluster##########################
server.1=zk01:2888:3888
server.2=zk02:2888:3888
server.3=zk03:2888:3888
server.4=zk04:2888:3888
server.5=zk05:2888:3888
在持久化/opt/soft/zookeeper-3.5.7/zkData目录下创建myid文件
[root@VM_10_179_centos ~]# touch myid
[root@VM_10_179_centos ~]# vim myid
[root@VM_10_179_centos ~]# 1
类似在zk02、zk03、zk04、zk05,增加对应的myid文件对应的内容2、3、4、5
启动集群:各自实例上启动
[root@VM_10_179_centos ~]# bin/zkServer.sh start
四、zoo.cfg配置文件参数解读
Zookeeper中的配置文件zoo.cfg中参数含义解读如下:
tickTime =2000:通信心跳数,Zookeeper服务器与客户端心跳时间,单位毫秒
Zookeeper使用的基本时间,服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每个tickTime时间就会发送一个心跳,时间单位为毫秒。
它用于心跳机制,并且设置最小的session超时时间为两倍心跳时间。(session的最小超时时间是2*tickTime)
initLimit =10:LF初始通信时限
集群中的Follower跟随者服务器与Leader领导者服务器之间初始连接时能容忍的最多心跳数(tickTime的数量),用它来限定集群中的Zookeeper服务器连接到Leader的时限。
syncLimit =5:LF同步通信时限
集群中Leader与Follower之间的最大响应时间单位,假如响应超过syncLimit * tickTime,Leader认为Follwer死掉,从服务器列表中删除Follwer。
dataDir:数据文件目录+数据持久化路径
主要用于保存Zookeeper中的数据。
clientPort =2181:客户端连接端口
监听客户端连接的端口。
五、zookeeper的集群启动脚本(扩展)
vim startZk.sh
./startZk.sh start
#!/bin/bash
s=""
case $1 in
"start")
s=start
;;
"stop")
s=stop
;;
"status")
s=status
;;
*)
echo "args are error!!"
exit
;;
esac
for host in zk02 zk03 zk04 zk05
do
echo "=========================$host========================"
ssh $host zkServer.sh $s
done
六、scp 拷贝到其他机器实例去(扩展)
/opt/soft/zookeeper-3.5.7/目录下拷贝到 zk02当前的目录
scp -r /opt/soft/zookeeper-3.5.7/ zk02:/opt/soft/zookeeper-3.5.7/
备注:在/etc/profile
加入如下 黑色字体
export ZOOKEEPER_HOME=/opt/soft/zookeeper-3.5.7
export PATH=$PATH:$JAVA_HOME:$ZOOKEEPER_HOME/bin
. /etc/profile 或是 source /etc/profile