* ?Zookeeper 有那些特性?
* ◇ Zookeeper 的核心是原子广播,这个机制保证了各个Server之间的同步,实现这个机制的协议叫做Zab协议。
* ◇ Zab协议有两种模式,它们分别是恢复模式(选主)和广播模式(同步)。
* ◇ 当服务启动或者在领导者崩溃后,且大多数Server完成了和Leader的状态同步以后,恢复模式就结束了。
* ◇ 当领导者被选举出来,且大多数Server完成了和leader的状态同步以后,恢复模式就结束了。
* ◇ 状态同步保证了Leader和Server具有相同的系统状态。
*
* ?ZK的常用命令:
* 1、创建节点
* create [-s] [-e] path data acl;
* 2、查看节点
* ls path[watch];
* get path[watch];
* ls2 path[watch];
* 3、更新节点
* set path data[version];
* 4、删除节点
* delete path[version];
* rmr path;
* 5、quota(对节点做一些设置)
* setQuota -n | -b val path;
* listQuota path;
* delQuota[-n | -b] path;
*
* ?描述以下ZK的数据模型?
* ◆ Zookeeper 的数据模型,在结构上和标准文件系统的非常相似,都是采用树形层次结构;
* ◆ Zookeeper 树中的每个节点被称为Znode;
* ◆ 和文件系统的目录树一样,Zookeeper树中的每个节点可以拥有子节点;
* ◆ Znode 和普通的文件系统存在的不同之处:
* ▵ Znode 兼具文件和目录两种特定;
* ▵ Znode 具有原子性操作;
* ▵ Znode 存储数据大小有限制;
* ▵ Znode 通过绝对路径引用;
*
* ?Znode是什么样的数据结构?
* 1、每个Znode都由三个部分组成:
* stat:描述版本,权限等信息
* data:与该Znode关联的数据
* children:该Znode下的子节点
* 2、四种类型的Znode节点:
* persistent : 永久节点
* ephemeral : 临时节点
* persistent_sequentIal : 永久节点、序列化
* ephemeral_sequentIal : 临时节点、序列化
*
* ?描述一下Zookeeper的Watcher机制
* ◆ Zookeeper中,引入了Watcher机制来实现分布式的通知功能。
* ◆ Zookeeper允许客户端向服务端注册一个 Watcher 监听
* ◆ 当服务端的一些事件触发了这个Watcher,那么就会指定客户端发送一个事件通知来实现分布式的通知功能。
*
* ?Watcher有那些特定?
* ◆ 一次性触发
* ◆ 事件封装
* ◆ Event异步发送
* ◆ 先注册再触发
*
* ?ZK 集群中节点有那些状态?
* 1、Leader节点
* ◆ Zookeeper 集群工作的核心;
* ◆ 事务请求(写操作)的唯一调度和处理者,保证集群事务处理的顺序性;
* ◆ 集群内部各个服务器的调度者;
* 2、Follower节点
* ◆ 处理客户端非事务(读操作)请求;
* ◆ 转发事务请求给Leader;
* ◆ 参与集群Leader选举投票;
* 3、Observer节点
* ◆ 不会参与任何形式的投票,只提供非事务服务。
*
* ?ZK集群的选举有那些影响因素?
* 1-服务ID
* 2-选举状态
* ‣ LookIng,竞选状态
* ‣ Following,随从状态,同步leader状态,参与投票
* ‣ Observing,观察状态,同步leader状态,不参与投票
* ‣ Leading,领导者状态.
* 3-数据ID
* -服务器中存放的最新数据Version.
* 4-逻辑时钟
* - 逻辑时钟即投票的次数,逻辑是从从0开始,同一轮投票过程中的逻辑时钟是相同的.
*
* ?Zookeeper集群如何进行Leader选举??
* -假设目前有5台服务器,每台服务器均没有数据,它们的服务ID编号分别是1,2,3,4,5,按编号依次启动.
* 1-服务器1启动,给自己投票,然后发投票信息,由于其它机器还没有启动所以它收不到反馈信息,服务器1的状态一直属于Looking。
*
* 2-服务器2启动,给自己投票,同时与之前启动的服务器1交换结果,由于服务器2的编号比服务器1的编号大所以服务器2胜出,
* -但此时投票树没有大于半数,所以两个服务的状态依然是Looking。
*
* 3-服务器3启动,给自己投票,同时与之前启动的服务器1,2交换信息,
* -由于服务器3的编号最大所以服务器3胜出,此时投票树也大于半数,所以服务器3称为Leading.
*
* 4-服务器4启动,给自己投票,同时与之前启动的服务器1,2,3交换信息,
* --尽管服务器4的编号大,但之前服务器3已经胜出为了Leading,所以服务器4只能称为Following。
*
* 5-服务器5启动,后面的逻辑同服务器4称为Following。
*
*
* ?对于运行正常的Zookeeper集群,中途有机器down掉,有如何新选举Leader的。
* ① 逻辑时钟小的选举结果被忽略,重新投票.
* ② 同样的逻辑时钟后,数据id大的胜出.
* ③ 数据ID相同的情况下,服务器ID大的胜出。
*
* ?Zookeeper具有那些应用场景??
* 1-命名服务
* 2-配置管理
* 3-集群管理
* 4-分布式锁
* 5-队列管理
Zookeeper注册中心/特性/常用命令/ZK的数据模型/数据结构/Zookeeper的Watcher机制
最新推荐文章于 2022-06-17 20:15:35 发布