1.CAP理论?

  • C : Consistency 一致性,数据在多个副本之间似否能够保持一致的特性。
  • A: Availability 可用性,系统服务必须一直处于可用状态,对每个请求总是在指定的时间返回结果。
  • P:Partition tolerance 分区容错性,遇到分区网络故障时,仍能对外提供一致性和可用性的服务。

    不能同时满足3个要求,只能满足其中的两个。

2.BASE理论?

Basically Available(基本可用)、Soft state(软状态) 和 Eventuanlly consistent (最终一致性)3个短语的简写。

  • 基本可用:系统出现不可预知的故障时,允许损失部分可用性。
  • 弱(软)状态:数据的中间状态,并认为改状态存在不会一项系统整体可用性,允许不同节点数据副本数据同步过程中的延时。
  • 最终一致性:系统中所有数据副本,在一段时间的同步后,最终数据能够到一致性的状态。

3.什么是ZooKeeper?

ZooKeeper是一个开源分布式协同服务系统,Zookeeper的设计目标是将那些复杂容易出错的分布式一致性服务封装起来,构成一个高效可用的原语集,并提供一系列简单接口给用户使用。

4.ZooKeeper可以实现哪些功能?

  • 数据发布/订阅
  • 负载均衡
  • 命名服务
  • 分布式协调/通知
  • 集群管理
  • Master 选举
  • 分布式锁
  • 分布式队列

5.ZooKeeper可以保证哪些分布式一致性特性?

  • 顺序一致性
  • 原子性
  • 单一视图
  • 可靠性
  • 实时性

6.ZooKeeper的数据模型?

共享的、树形结构,由一系列的 ZNode数据节点组成,类似文件系统(目录不能存数据)。ZNode存有数据信息,如版本号等等。ZNode之间的层级关系,像文件系统中的目录结构一样。并且它是将数据存在内存中,这样可以提高吞吐、减少延迟。

7.如何识别请求的先后顺序?

ZooKeeper会给每个更新请求,分配一个全局唯一的递增编号(zxid),编号的大小体现事务操作的先后顺序。

8.为什么叫ZooKeeper?

哈哈,这个面试不一定问,不过知道以后可能会觉得更亲切。ZooKeeper最早起源于雅虎研究院的一个研究小组,在立项初期,发现很多项目都是用动物的名字来起的,当时首席科学家觉得不能再继续起动物的名字了,把它起名叫动物园管理员,正好它分布式协同服务的特性很相符,所以ZooKeeper诞生了。

9.A是根节点,如何表达A子节点下的B节点?

/A/B

10.集群角色?

Leader、Follower、Observer

11.ZNode的类型?

持久节点:一旦创建,除非主动移除,否则会一直保存在ZooKeeper。

临时节点:生命周期和客户端会话绑定,会话失效,相关的临时节点被移除。

持久顺序性:同时具备顺序性。

临时顺序性:同时具备顺序性。

12.Stat记录了哪些版本相关数据?

version:当前ZNode版本

cversion:当前ZNode子节点版本

aversion:当前ZNode的ACL版本

12.权限控制?

Access Control Lists ,ACL。类似于UNIX文件系统的权限控制。

14.ZooKeeper定义了几种权限?

  • CREATE
  • READ
  • WRITE
  • DELETE
  • ADMIN

15.Zookeeper 专门设计的一种支持崩溃恢复的原子广 播协议是?

ZAB

16.ZAB的两种基本模式?

崩溃恢复:在正常情况下运行非常良好,一旦Leader出现崩溃或者由于网络原因导致Leader服务器失去了与过半Follower的联系,那么就会进入崩溃恢复模式。为了程序的正确运行,整个恢复过程后需要选举出一个新的Leader,因此需要一个高效可靠的选举方法快速选举出一个Leader。

消息广播:类似一个两阶段提交过程,针对客户端的事务请求, Leader服务器会为其生成对应的事务Proposal,并将其发送给集群中的其余所有机器,再分别收集各自的选票,最后进行事务提交。

17.哪些情况会导致ZAB进入恢复模式并选取新的Leader?

启动过程或Leader出现网络中断、崩溃退出与重启等异常情况时。

当选举出新的Leader后,同时集群中已有过半的机器与该Leader服务器完成了状态同步之后,ZAB就会退出恢复模式。

18.Zookeeper默认端口?

2181

19.如何创建一个ZNode?

create /app

-e 临时

-s 顺序

20.几种部署方式?

单机、伪集群、集群

21.如何查看子节点?

ls path [watch]

path : 节点路径

[zk: localhost:2181(CONNECTED) 5] ls /app
[book]

22.获取指定节点信息?

get path [watch]

[zk: localhost:2181(CONNECTED) 1] get /app
123

23.更新指定节点信息?

set path data [version]

[zk: localhost:2181(CONNECTED) 6] set /app 222
[zk: localhost:2181(CONNECTED) 7] get /app
222

24.删除指定节点?注意?

delete path [version]

[zk: localhost:2181(CONNECTED) 8] delete /app
Node not empty: /app

如果没有子节点,就能删除成功。如果有会提示,该节点不为空。

25.什么是会话Session?

指的是客户端会话,客户端启动时,会与服务器建议TCP链接,连接成功后,客户端的生命周期开始,客户端和服务器通过心跳检测保持有效的的会话以及发请求并响应、监听Watch事件等。

26.在sessionTimeout之内的会话,因服务器压力大、网络故障或客户端主动断开情况下,之前的会话还有效吗?

有效。

27.Watcher事件监听器?

ZooKeeper允许用户在指定节点上注册Watcher,当触发特定事件时,ZooKeeper服务端会把相应的事件通知到相应的客户端上,属于ZooKeeper一个重要的特性。

28.Quorum?

当集群中过半UP状态的进程组成了进程子集后,就可以正常的消息传播了,这样的一个子集我们称为Quorum。

29.同进程组的两个进程消息网络通信有哪两个特性?

  • 完整性: 如果进程a收到进程b的消息msg,那么b一定发送了消息msg。
  • 前置性:如果msg1是msg2的前置消息,那么当前进程务必先接收到msg1,在接受msg2。

30.ZAB三个阶段?

  • 发现 (Discovery)
  • 同步 (Synchronization)
  • 广播 (Broadcast)

31.发现?

Follower把自己最后的接受事务的Proposal值(CEPOCH(F.p)发送给Leader。

当收到过半Follower的消息后,Leader生成NEWEPOCH(e')给这些过半的Follower。

tips: e' = Max((CEPOCH(F.p)) + 1

Follower收到消息后,如果自己值小于e',则同步e'的值,同时向Leader发Ack消息。

32.服务器的3中角色?

Leader角色:

Follower角色:

Observer角色:

33.数据发布/订阅?

发布者将数据发布到ZooKeeper上一个或多个节点上,订阅者从中订阅数据,从而动态获取数据的目的,实现配置信息的集中式管理和数据动态更新。

34.发布订阅的两种设计模式?

推(Push) :服务端主动推数据给所有定于的客户端。

拉(Pull):客户端主动发请求来获取最新数据。

35.ZooKeeper用推/拉模式?

推拉结合

36.客户端如何获取配置信息?

启动时主动到服务端拉取信息,同时,在制定节点注册Watcher监听。一旦有配置变化,服务端就会实时通知订阅它的所有客户端。

参考:

《从Paxos到Zookeeper分布式一致性原理与实践》

《ZooKeeper分布式过程协同技术详解》

https://zhuanlan.zhihu.com/p/149099671

Zookeeper高频面试题36问(附答案)相关推荐

  1. React高频面试题总结 (附答案及原理代码)

    React高频面试题总结 (附答案及原理代码) 1.说说对React的理解?有哪些特性? 1.React是用于构建用户界面的JavaScript库,只提供了UI层面的解决方案,遵循组件设计模式.声明式 ...

  2. 前端社招高频面试题(一)(附答案)

    手写发布订阅 class EventListener {listeners = {};on(name, fn) {(this.listeners[name] || (this.listeners[na ...

  3. 2021前端高频面试题整理,附答案

    大家好,我是若川.最近组织了源码共读活动,感兴趣的可以加我微信 ruochuan12 若川视野原意是若川的前端视野.但太长了就留下了四个字,不知道的以为关注的不是技术公众号. 今天分享一篇慕课网精英讲 ...

  4. 常见JavaScript基础面试题上(附答案)

    常见JavaScript基础面试题上(附答案) 1.JavaScript有哪些垃圾回收机制? 有以下垃圾回收机制. 标记清除( mark and sweep) 这是 JavaScript最常见的垃圾回 ...

  5. 计算机组成原理试题 t4,计算机组成原理(四版)本科生试题库整理附答案

    <计算机组成原理(四版)本科生试题库整理附答案>由会员分享,可在线阅读,更多相关<计算机组成原理(四版)本科生试题库整理附答案(5页珍藏版)>请在人人文库网上搜索. 1.29 ...

  6. 变态级JAVA程序员面试32问(附答案)(转载)

    flyjimi的专栏 君士坦丁堡的血泪 CSDNBlog  |  我的首页  |  联系作者  |  聚合   |  登录      66篇文章 :: 0篇收藏:: 9篇评论:: 0个Trackbac ...

  7. 幼儿园衔接测试卷c语言,2020年实验幼儿园幼升小衔接班期中考试试题C卷 附答案.doc...

    学校 班级 姓名 学号 ---密---.----封-------线-------内--..------不--------. 准-------答-. ----题- 绝密★启用前 2020年实验幼儿园幼升 ...

  8. python面试题及答案-50道Python面试题集锦(附答案)

    原标题:50道Python面试题集锦(附答案) Python是目前编程领域最受欢迎的语言.在本文中,我将总结Python面试中最常见的50个问题.每道题都提供参考答案,希望能够帮助你在2019年求职面 ...

  9. 计算机组成知识试题及答案,2015年计算机考研:计算机组成原理试题六【附答案】...

    2015年计算机考研专业课考试科目为:计算机组成原理.数据结构.操作系统以及计算机网络等,需要大家记忆的东西很多,但是更重要的还是要理解,融会贯通才能够把题做好,把问题解决.新东方在线小编分享计算机组 ...

最新文章

  1. 后端开发面试自我介绍_字节跳动暑期实习后端开发面试经历
  2. html圆角边框只有左边,border-radius以外的CSS圆角边框制作方法
  3. 访问GitHub超慢的解决办法
  4. 浅谈分布式一致性:Raft 与 SOFAJRaft
  5. 如何展开Linux Memory Management学习?
  6. 实战Node—幼教平台
  7. STM32F207使用定时器1产生PWM波形
  8. 搭建物联网服务器(一):购买阿里云服务器
  9. [常用工具] 搜索引擎的常用技巧总结
  10. 升级IOS百度人脸SDK4.0采坑记录
  11. vmware虚拟机运行速度卡慢原因分析及解决办法大全(二)
  12. 关于SDN理解,老杨都放在这里了
  13. 无忧计算机二级试题题库,计算机等级考试题库,二级Web试题
  14. org.jboss.deployment.DeploymentException: URL file:/X:/workspace/JBoss_AS/XXX.war/ deployment failed
  15. 大数据的分布式数据库技术的对比
  16. python线性回归预测pm2.5_基于随机森林算法的PM2.5预测
  17. Linux搭建web网站综合实验
  18. 浅谈计算机语言与英语,浅谈日常英语与计算机专业英语区别.doc
  19. web前端开发基础知识_薪资30K+的web前端怎么做到的?
  20. python2.7+PyQt4对接速码接码平台

热门文章

  1. 使用shell脚本获取当前路径的目录、上级目录、目录字段截取
  2. SQL 获取 weekday
  3. 深度学习:利用神经网络在少量数据情况下预测房价走势
  4. 怎么通过在线PS修图 修图工具有什么
  5. 宇宙存在三级量子--超越爱因斯坦
  6. 计算机学院迎新晚会目的,某学院计算机系迎新晚会策划书.doc
  7. Java+Rest-Assrued+Gradle+Allure搭建接口测试自动化框架
  8. 【踩坑专栏】win10主页被劫持
  9. 5.PCIe协议分析3-PCIe TLP包详解1
  10. 漏洞复现----12、Apache Flink目录穿越漏洞(CVE-2020-17519 )