zoukankan      html  css  js  c++  java
  • zookeeper面试题

    ZooKeeper是什么?提供了什么

    是一个基于观察者模式设计的分布式服务管理框架,它负责存储和管理大家都关心的数据,然后接受观察者的注册,一旦这些数据的状态发生变化,
    Zookeeper就将负责通知已经在Zookeeper上注册的那些观察者做出相应的反应,从而实现集群中类似Master/Slave管理模式

     Zookeeper=文件系统(可以在zk上存储数据)+通知机制

    Zookeeper文件系统

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

    Zookeeper选举机制

    半数机制:集群中半数以上机器存活,集群可用,否则集群处于瘫痪状态不可用。所以zookeeper适合装在奇数台机器上;
    使用奇数个即可,效果和偶数个一样,避免资源浪费

    四种类型的数据节点 Znode

    PERSISTENT-持久节点
    除非手动删除,否则节点一直存在于Zookeeper上
    EPHEMERAL-临时节点
    临时节点的生命周期与客户端会话绑定,一旦客户端会话失效(客户端与zookeeper连接断开不一定会话失效),那么这个客户端创建的所有临时节点都会被移除。
    PERSISTENT_SEQUENTIAL-持久顺序节点
    基本特性同持久节点,只是增加了顺序属性,节点名后边会追加一个由父节点维护的自增整型数字。
    EPHEMERAL_SEQUENTIAL-临时顺序节点
    基本特性同临时节点,增加了顺序属性,节点名后边会追加一个由父节点维护的自增整型数字。

    Zookeeper Watcher 机制

    1)首先要有一个main()线程
    2)在main线程中创建Zookeeper客户端,这时就会创建两个线程,一个负责网络连接通信(connect),一个负责监听(listener)。
    3)通过connect线程将注册的监听事件发送给Zookeeper。
    4)在Zookeeper的注册监听器列表中将注册的监听事件添加到列表中。
    5)Zookeeper监听到有数据或路径变化,就会将这个消息发送给listener线程。
    6)listener线程内部调用了process()方法。

    说几个zookeeper常用的命令。

    ls create ls2 delete rmr get set stat

    chubby是什么,和zookeeper比你怎么看

    chubby是google的,完全实现paxos算法,不开源。zookeeper是chubby的开源实现,使用zab协议,paxos算法的变种。

    ZAB和Paxos算法的联系与区别?

    相同点:
    两者都存在一个类似于Leader进程的角色,由其负责协调多个Follower进程的运行
    Leader进程都会等待超过半数的Follower做出正确的反馈后,才会将一个提案进行提交
    ZAB协议中,每个Proposal中都包含一个 epoch 值来代表当前的Leader周期,Paxos中名字为Ballot
    不同点:
    ZAB用来构建高可用的分布式数据主备系统(Zookeeper),Paxos是用来构建分布式一致性状态机系统。
    我凝视这恒星,等待这那场风暴,我已经准备好了
  • 相关阅读:
    Mybatis学习(3)实现数据的增删改查
    Mybatis学习(2)以接口的方式编程
    Mybatis学习(1)开发环境搭建
    Apache Commons 工具类介绍及简单使用
    JAVA枚举使用详解
    Spring中的<context:annotation-config/>配置
    SpringMVC(12)完结篇 基于Hibernate+Spring+Spring MVC+Bootstrap的管理系统实现
    SpringMVC(11)表单标签
    面试题
    开发辅助网址
  • 原文地址:https://www.cnblogs.com/cheng5350/p/11877376.html
Copyright © 2011-2022 走看看