Zookeeper注册中心/特性/常用命令/ZK的数据模型/数据结构/Zookeeper的Watcher机制

 * ?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;
     * 5quota(对节点做一些设置)
     *      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编号分别是12345,按编号依次启动.
     * 1-服务器1启动,给自己投票,然后发投票信息,由于其它机器还没有启动所以它收不到反馈信息,服务器1的状态一直属于Looking。
     *
     * 2-服务器2启动,给自己投票,同时与之前启动的服务器1交换结果,由于服务器2的编号比服务器1的编号大所以服务器2胜出,
     *  -但此时投票树没有大于半数,所以两个服务的状态依然是Looking。
     *
     * 3-服务器3启动,给自己投票,同时与之前启动的服务器12交换信息,
     *  -由于服务器3的编号最大所以服务器3胜出,此时投票树也大于半数,所以服务器3称为Leading.
     *
     * 4-服务器4启动,给自己投票,同时与之前启动的服务器123交换信息,
     * --尽管服务器4的编号大,但之前服务器3已经胜出为了Leading,所以服务器4只能称为Following。
     *
     * 5-服务器5启动,后面的逻辑同服务器4称为Following。
     *
     *
     * ?对于运行正常的Zookeeper集群,中途有机器down掉,有如何新选举Leader的。
     *  ① 逻辑时钟小的选举结果被忽略,重新投票.
     *  ② 同样的逻辑时钟后,数据id大的胜出.
     *  ③ 数据ID相同的情况下,服务器ID大的胜出。
     *
     *  ?Zookeeper具有那些应用场景??
     *  1-命名服务
     *  2-配置管理
     *  3-集群管理
     *  4-分布式锁
     *  5-队列管理

点击-源代码地址:CodeChina

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值