一、Zookeeper简介及安装
1、Zookeeper简介
ZooKeeper 是 Apache 软件基金会的一个软件项目,它为大型分布式计算提供开源的分布式配置服务、同步服务和命名注册。
ZooKeeper 的架构通过冗余服务实现高可用性。
Zookeeper 的设计目标是将那些复杂且容易出错的分布式一致性服务封装起来,构成一个高效可靠的原语集,并以一系列简单易用的接口提供给用户使用。
一个典型的分布式数据一致性的解决方案,分布式应用程序可以基于它实现诸如数据发布/订阅、负载均衡、命名服务、分布式协调/通知、集群管理、Master 选举、分布式锁和分布式队列等功能。
2、数据结构
ZooKeeper 数据模型的结构与 Unix 文件系统很类似,整体上可以看作是一棵树,每个节点称做一个 ZNode。每一个 ZNode 默认能够存储 1MB 的数据,zookeeper 名称空间中的每个节点都是由一个路径标识。
3、Zookeeper安装
zookeeper 下载地址为: https://zookeeper.apache.org/releases.html
以3.5.7为例,下载安装
3.1 安装jdk
3.2 上传文件解压
#解压到/opt/module/目录中
tar -zxvf apache-zookeeper-3.5.7- bin.tar.gz -C /opt/module/
#修改名称
mv apache-zookeeper-3.5.7 -bin/ zookeeper-3.5.7
3.3 修改配置
#将/opt/module/zookeeper-3.5.7/conf 这个路径下的 zoo_sample.cfg 修改为zoo.cfg
mv zoo_sample.cfg zoo.cfg
#打开zoo.cfg 文件,修改 dataDir 路径
vim zoo.cfg
#创建zkData目录
mkdir zkData
#zoo.cfg文件中修改位置
dataDir=/opt/module/zookeeper-3.5.7/zkData
3.4 测试
cd /opt/module/zookeeper-3.5.7
- 启动服务
bin/zkServer.sh start
- 查看状态
bin/zkServer.sh status
- 启动客户端
zookeeper-3.5.7]$ bin/zkCli.sh
-
退出客户端
输入quit
命令即可 -
停止服务
bin/zkServer.sh stop
二、客户端常用命令
基本语法 | 功能描述 |
---|---|
help | 显示所有操作命令 |
ls path | 使用 ls 命令来查看当前 znode 的子节点 [可监听] -w 监听子节点变化 -s 附加次级信息 |
create | 普通创建 -s 含有序列 -e 临时(重启或者超时消失) |
get path | 获得节点的值 [可监听] -w 监听节点内容变化 -s 附加次级信息 |
set | 设置节点的具体值 |
stat | 查看节点状态 |
delete | 删除节点 |
deleteall | 递归删除节点 |
三、Zookeeper选举机制
okeeper 的 leader 选举存在两个阶段,一个是服务器启动时 leader 选举,另一个是运行过程中 leader 服务器宕机。在分析选举原理前,先介绍几个重要的参数。
-
服务器 ID(
myid
):编号越大在选举算法中权重越大 -
事务 ID(
zxid
):值越大说明数据越新,权重越大 -
逻辑时钟(
epoch-logicalclock
):同一轮投票过程中的逻辑时钟值是相同的,每投完一次值会增加 -
选举状态:
LOOKING
: 竞选状态
FOLLOWING
: 随从状态,同步 leader 状态,参与投票
OBSERVING
: 观察状态,同步 leader 状态,不参与投票
LEADING
: 领导者状态 -
Zookeeper第一次启动时选举
-
Zookeeper运行过程中 loader 服务器当季时选举