ZooKeeper面试题一

1.ZooKeeper 是什么?
ZooKeeper 是一个 分布式 的,开放源码的分布式 应用程序协调服务 ,是 Google 的 Chubby 一个开源的实现,它是 集群的管理者 , 监视着集群中各个节点的状态根据节点提交的反馈进行下一步合理操作 。最终,将简单易用的接口和性能高效、功能稳定的系统提供给用户。
客户端的 读请求 可以被集群中的 任意一台机器处理 ,如果读请求在节点上注册了监听器,这个监听器也是由所连接的 zookeeper 机器来处理。对于 写请求 ,这些请求会同 时发给其他 zookeeper 机器并且达成一致后,请求才会返回成功 。因此,随着 zookeeper 的集群机器增多,读请求的吞吐会提高但是写请求的吞吐会下降 。有序性是 zookeeper 中非常重要的一个特性,所有的 更新都是全局有序的 ,每个更新都有一个 唯一的时间戳 ,这个时间戳称为 zxid(Zookeeper Transaction Id) 。而 读请求只会相对于更新有序 ,也就是读请求的返回
结果中会带有这个 zookeeper 最新的 zxid

2.ZooKeeper 提供了什么?
1、 文件系统
2、 通知机制

3.Zookeeper 文件系统
Zookeeper 提供一个多层级的节点命名空间(节点称为 znode)。与文件系统不同的是,这些节点 都可以设置关联的数据 ,而文件系统中只有文件节点可以存放数据而目录节点不行。Zookeeper 为了保证高吞吐和低延迟,在内存中维护了这个树状的目录结构,这种特性使得 Zookeeper 不能用于存放大量的数据 ,每个节点的存放数据上限为 1M

4.四种类型的 znode
1、 PERSISTENT-持久化目录节点
客户端与 zookeeper 断开连接后,该节点依旧存在
2、 PERSISTENT_SEQUENTIAL-持久化顺序编号目录节点
客户端与 zookeeper 断开连接后,该节点依旧存在,只是 Zookeeper 给该节点名称进行顺序编号
3、 EPHEMERAL-临时目录节点
客户端与 zookeeper 断开连接后,该节点被删除
4、 EPHEMERAL_SEQUENTIAL-临时顺序编号目录节点
客户端与 zookeeper 断开连接后,该节点被删除,只是 Zookeeper 给该节点名称进行顺序编号

5.Zookeeper 通知机制
client 端会对某个 znode 建立一个 watcher 事件 ,当该 znode 发生变化时,这些 client 会收到 zk 的通知,然后 client 可以根据 znode 变化来做出业务上的改变等。

6.Zookeeper 做了什么?
1、命名服务
2、配置管理
3、集群管理
4、分布式锁
5、队列管理

7.zk 的命名服务(文件系统)
命名服务是指通过指定的名字来 获取资源 或者 服务的地址 ,利用 zk 创建一个全局的路径,即是 唯一 的路径,这个路径就可以作为一个名字,指向集群中的集群,提供的服务的地址,或者一个远程的对象等等。

8.zk 的配置管理(文件系统、通知机制)
程序分布式的部署在不同的机器上,将程序的配置信息放在 zk 的 znode 下,当有配置发生改变时,也就是znode 发生变化时,可以通过改变 zk 中某个目录节点的内容,利用 watcher 通知给各个客户端,从而更改配置

9.Zookeeper 集群管理(文件系统、通知机制)
所谓集群管理无在乎两点: 是否有机器退出和加入、选举 master 。
对于第一点,所有机器约定在父目录下 创建临时目录节点 ,然后监听父目录节点的子节点变化消息。一旦有机器挂掉,该机器与 zookeeper 的连接断开,其所创建的临时目录节点被删除, 所有其他机器都收到通知:某个兄弟目录被删除 ,于是,所有人都知道:它上船了。
新机器加入也是类似, 所有机器收到通知:新兄弟目录加入 ,highcount 又有了,对于第二点,我们稍微改变一下, 所有机器创建临时顺序编号目录节点,每次选取编号最小的机器作为 master 就好

10.Zookeeper 分布式锁(文件系统、通知机制)
有了 zookeeper 的一致性文件系统,锁的问题变得容易。锁服务可以分为两类,一个是 保持独占 ,另一个是 控制时序 。
对于第一类,我们将 zookeeper 上的一个 znode 看作是一把锁 ,通过 createznode 的方式来实现。所有客户端都去创建 /distribute_lock 节点,最终成功创建的那个客户端也即拥有了这把锁。用完删除掉自己创建的distribute_lock 节点就释放出锁。
对于第二类, /distribute_lock 已经预先存在,所有客户端在它下面创建临时顺序编号目录节点,和选master 一样, 编号最小的获得锁 ,用完删除,依次方便。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值