ZooKeeper常见面试题

ZooKeeper是什么?

是一个分布式协调服务,提供了高性能、高可用的分布式数据一致性方案。

Zookeeper应用场景?

  1. 发布订阅:可以实现配置的动态更新。
  2. 分布式锁
  3. 命名服务:可以用来生成全局唯一ID

Zookeeper数据模型?

是一种多叉树的结构,类似于文件夹的形式,每个节点被称为一个znode

znode有几种类型?

  1. 持久:直到zookeeper宕机或手动删除才会消失
  2. 临时:会话结束就消失,只能作为叶子节点,不能创建子节点
  3. 持久顺序:持久的基础上,名字具有顺序性
  4. 临时顺序:临时的基础上,名字具有顺序性

znode数据结构?

  1. data:存放的具体数据
  2. stat:存放一些状态信息。比如创建znode时的事务id、时间,最后一次修改znode时的事务id、时间,子节点的数量等

权限管理?

采用ACL策略。主要有5种权限:

  1. 修改权限

Zookeeper集群有几种角色?

  1. leader:只有一个,负责处理写请求。
  2. follower:负责处理读请求,遇到写请求会转发给leader;参与leader的选举
  3. observer:负责处理读请求,遇到写请求会转发给leader;不参与leader的选举

Zookeepr集群为什么最好是奇数台?

因为Zookeeper集群在发生宕机后,只有剩下的机器数量大于半数,集群才可用。
比如一共有4台机器,那么必须大于4/2=2时,也就是至少为3台,也就是只允许宕机1台服务器,才可用。
再比如有3台机器,必须大于3/2=1时,也就是至少为2台,也就是只允许宕机1台服务器,才可用。
那么4和3台都是只允许宕机1台,那么就没必要去浪费一台机器了。

Zookeeper选举过程?

  1. 每个zookeeper会投自己一票,投票表示为(myid,zxid)的形式,myid是服务器的id,zxid是事务的id。然后将投票发送给其他服务器
  2. 每个服务器接收到别人的投票后,进行比较,谁的zxid大,就选谁,如果一样大,谁的myid大,就选谁。然后再次发送给其他服务器
  3. 当有一个机器得到半数以上的投票,则成为leader

Zookeeper分布式锁如何实现?

比如想要获取/lock1资源。

  1. 首先在/lock1下面创建临时顺序节点。
  2. 获取/lock1下面的所有子节点,如果自己是id最小的节点,则获取成功,使用完后删除节点。
  3. 如果不是最小节点,则获取失败,并监听比自己小的节点中最大的那个节点,当那个节点被删除时,就会通知我们,然后就可以获取成功。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值