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

    Zookeeper是什么框架
    分布式的、开源的分布式应用程序协调服务,原本是Hadoop、HBase的一个重要组件。它为分布式应用提供一致性服务的软件,包括:配置维护、域名服务、分布式同步、组服务等。
    应用场景
    Zookeeper的功能很强大,应用场景很多,结合我实际工作中使用Dubbo框架的情况,Zookeeper主要是做注册中心用。基于Dubbo框架开发的提供者、消费者都向Zookeeper注册自己的URL,消费者还能拿到并订阅提供者的注册URL,以便在后续程序的执行中去调用提供者。而提供者发生了变动,也会通过Zookeeper向订阅的消费者发送通知。
    Paxos算法& Zookeeper使用协议
    Paxos算法是分布式选举算法,Zookeeper使用的 ZAB协议(Zookeeper原子广播),二者有相同的地方,比如都有一个Leader,用来协调N个Follower的运行;Leader要等待超半数的Follower做出正确反馈之后才进行提案;二者都有一个值来代表Leader的周期。
    不同的地方在于:
    ZAB用来构建高可用的分布式数据主备系统(Zookeeper),Paxos是用来构建分布式一致性状态机系统。
    Paxos算法、ZAB协议要想讲清楚可不是一时半会的事儿,自1990年莱斯利·兰伯特提出Paxos算法以来,因为晦涩难懂并没有受到重视。后续几年,兰伯特通过好几篇论文对其进行更进一步地解释,也直到06年谷歌发表了三篇论文,选择Paxos作为chubby cell的一致性算法,Paxos才真正流行起来。
    对于普通开发者来说,尤其是学习使用Zookeeper的开发者明确一点就好:分布式Zookeeper选举Leader服务器的算法与Paxos有很深的关系。
    选举算法和流程
    详情可参看我之前的文章《ZooKeeper集群安装配置使用》第6节“ZooKeeper选举机制”,有个简单的描述。
    Zookeeper有哪几种节点类型
    持久:创建之后一直存在,除非有删除操作,创建节点的客户端会话失效也不影响此节点。
    持久顺序:跟持久一样,就是父节点在创建下一级子节点的时候,记录每个子节点创建的先后顺序,会给每个子节点名加上一个数字后缀。
    临时:创建客户端会话失效(注意是会话失效,不是连接断了),节点也就没了。不能建子节点。
    临时顺序:不用解释了吧。
    Zookeeper对节点的watch监听通知是永久的吗?
    不是。官方声明:一个Watch事件是一个一次性的触发器,当被设置了Watch的数据发生了改变的时候,则服务器将这个改变发送给设置了Watch的客户端,以便通知它们。
    为什么不是永久的,举个例子,如果服务端变动频繁,而监听的客户端很多情况下,每次变动都要通知到所有的客户端,这太消耗性能了。
    一般是客户端执行getData(“/节点A”,true),如果节点A发生了变更或删除,客户端会得到它的watch事件,但是在之后节点A又发生了变更,而客户端又没有设置watch事件,就不再给客户端发送。
    在实际应用中,很多情况下,我们的客户端不需要知道服务端的每一次变动,我只要最新的数据即可。
    部署方式?集群中的机器角色都有哪些?集群最少要几台机器
    单机,集群。Leader、Follower。集群最低3(2N+1)台,保证奇数,主要是为了选举算法。
    集群如果有3台机器,挂掉一台集群还能工作吗?挂掉两台呢?
    记住一个原则:过半存活即可用。
    集群支持动态添加机器吗?
    其实就是水平扩容了,Zookeeper在这方面不太好。两种方式:
    全部重启:关闭所有Zookeeper服务,修改配置之后启动。不影响之前客户端的会话。
    逐个重启:顾名思义。这是比较常用的方式。

  • 相关阅读:
    自定义View的ToolBar布局报错Error:(2) No resource identifier found for attribute 'context' in package 'c
    在学git之主分支 branch
    获取发布版SHA1
    关于开启线程与UI的操作
    播放音频和视频(VideoView控件)
    通知栏Notification的应用
    Android 真机调式 Installation failed with message 远程主机强迫关闭了一个现有的连接。. It is possible that this issue is resolved by uninstalling an existing version of the apk if it is present, and then re-installing. WA
    运行程序申请危险权限
    mysql乐观锁总结和实践
    Nginx配置文件nginx.conf中文详解
  • 原文地址:https://www.cnblogs.com/ultranms/p/9602474.html
Copyright © 2011-2022 走看看