一、介绍

1、介绍

分布式服务管理框架,存储和管理元数据,为分布式应用提供一致性服务
可以实现文件系统+通知机制
是树形结构,每个结点被称为ZNode(1MB)

2、常见功能

集群管理:监控结点存活状态、运行请求
主节点选取:从备用结点中选主
分布式锁:提供独占锁(即排他锁,一次只能一个线程使用资源)、共享锁(读锁共享,读写互斥),并对其进行控制
命名服务:客户端根据指定名字获得资源或服务的地址

3、特点

主从集群
半数以上,正常工作
请求顺序执行
数据更新具有原子性

4、应用场景

统一命名服务(通过配置借助域名访问而无需IP)
统一配置管理(快速同步集群配置)
统一集群管理(监控节点的状态变化)
服务器节点动态上下线(上下线通知)
软负载均衡(记录服务器访问次数)

二、使用

1、部署模式

单机部署:一台集群上运行;
集群部署:多台集群运行;
伪集群部署:一台集群启动多个 Zookeeper 实例运行

2、cli启动停止命令

启动zk服务bin/zkServer.sh start
停止bin/zkServer.sh stop
查看状态bin/zkServer.sh status
启动客户端bin/zkCli.sh
退出quit

3、znode命令行操作

查看子节点:ls path
获得节点的值:get path
递归删除节点:delete all 或 rmr /sanguo/shuguo
创建临时节点:create -e /sanguo/wuguo “zhouyu”

4、常见配置参数

配置文件是:zoo.cfg
tickTime =2000:通信心跳数
initLimit =10:LF初始通信时限
syncLimit =5:LF同步通信时限
dataDir:数据文件目录+数据持久化路径
clientPort =2181:客户端连接端口

三、特点

1、ZAB协议介绍

(1)概念
为Zookeeper设计的支持崩溃恢复的原子广播协议。包括两种基本模式:崩溃恢复和消息广播。
(2)步骤
当Zookeeper集群刚启动或Leader宕机、重启或者网络故障导致不存在过半的服务器与Leader服务器保持正常通信时,所有服务器进入崩溃恢复模式
首先选举产生新的Leader服务器,然后Follower服务器开始与新的Leader服务器进行数据同步。
当集群中超过半数机器与该Leader服务器完成数据同步之后,退出恢复模式进入消息广播模式,Leader服务器开始接收客户端的事务请求进行事务请求处理。

2、主从节点状态同步

(1)概述
Zk的核心是使用原子广播机制保证server之间的同步,实现该机制的协议即为ZAB协议。
(2)组成
恢复模式:leader选举、状态同步
广播模式:接收请求,进行处理

3、通知机制

client端使用watcher事件监听znode。
当znode发生变化时,client会收到zk的通知,client可以根据znode变化进行业务修改。

4、两阶段和三阶段提交

(1)两阶段提交协议-2PC
投票阶段:协调者询问参与者是否可以执行提交,并等待响应
提交执行阶段:所有参与者同意后完成操作,并向协调者发送完成消息
存在问题:节点事务阻塞,参与者/协调者发生故障,会导致事务失败

(2)三阶段提交协议-3PC(引入超时机制)
CanCommit阶段:询问能否提交,以及响应反馈
PreCommit阶段:预提交并进行响应反馈
doCommit阶段:执行真正的事务提交

5、宕机如何处理

如果一个Leader 宕机,Zookeeper会选举出新的Leader;
当一个节点宕机时,其他节点会继续提供服务。
如果一个Follower宕机,Zookeeper上的数据有多个副本,数据并不会丢失。

超过半数的节点正常,集群才能正常提供服务;只剩不到一半节点能工作,集群才失效。

6、半数/选举机制

安装奇数台
集群最少需要机器数:3

7、节点类型

PERSISTENT:持久节点,除非手动删除,否则节点一直存在于 Zookeeper 上。
EPHEMERAL临时节点,临时节点的生命周期与客户端会话绑定,一旦客户端会话失效(客户端与 Zookeeper连接断开不一定会话失效),客户端创建的所有临时节点会被移除。
PERSISTENT_SEQUENTIAL:持久顺序节点,基本特性同持久节点,只是增加了顺序属性,节点名后边会追加一个由父节点维护的自增整型数字。
EPHEMERAL_SEQUENTIAL:临时顺序节点,基本特性同临时节点,增加了顺序属性,节点名后边会追加一个由父节点维护的自增整型数字。

8、监听器原理

监听服务器节点,任意一台客户端都能实时感知到主节点服务器的上下线
获取子节点信息:client.getServerList();
main创建两个线程connect和listener
zookeeper面试题 - 图1

9、Paxos算法

基于消息传递且具有高度容错特性的一致性算法
zookeeper面试题 - 图2

10、写数据流程

zookeeper面试题 - 图3