• 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. 如果不是最小节点,则获取失败,并监听比自己小的节点中最大的那个节点,当那个节点被删除时,就会通知我们,然后就可以获取成功。
  • 相关阅读:
    机器学习赋予用户“超人”的能力来打开和控制虚拟现实中的工具
    原生JS-鼠标拖动
    NTP8928(20W内置DSP双通道D类功放芯片)
    使用 GoogleTest 框架对 C 代码进行单元测试
    【算法练习Day43】最佳买卖股票时机含冷冻期&&买卖股票的最佳时机含手续费
    Vue:表单双绑、组件
    图像运算和图像增强七
    微服务环境搭建
    Genymotion Android8.1(sdk27) 安装 Xposed
    什么是超声波清洗机?工作原理是什么?2023年超声波清洗机推荐
  • 原文地址:https://blog.csdn.net/Ego12138/article/details/126813724