Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Java高频面试题- 每日三连问?【Day26】 — ZooKeeper篇(二)

Java高频面试题- 每日三连问?【Day26】 — ZooKeeper篇(二)

作者头像
浩说编程
发布于 2022-04-12 06:15:32
发布于 2022-04-12 06:15:32
1990
举报
文章被收录于专栏:Java经验之谈Java经验之谈

问题导读

一、说说ZAB 协议是什么?

二、四种类型的数据节点 Znode 都是什么?

三、Zookeeper Watcher 机制 -- 数据变更通知

01

说说ZAB 协议是什么?

正经回答:

ZAB 协议是为分布式协调服务 Zookeeper 专门设计的一种支持崩溃恢复的原子广播协议

ZAB 协议包括两种基本的模式:崩溃恢复消息广播

当整个 zookeeper 集群刚刚启动或者 Leader 服务器宕机、重启或者网络故障导致不存在过 半的服务器与 Leader 服务器保持正常通信时,所有进程(服务 器)进入崩溃恢复模式,

首先选举产生新的 Leader 服务器,然后集群中 Follower 服务器开始与新的 Leader 服务器进行数据同步

当集群中超过半数机器与该 Leader 服务器完成数据同步之后,退出恢复模式进入消息广播模式,

Leader 服务器开始接收客户端的事务请求生成事物提案来进行事务请求处理。

分享朋友圈,每天进步一点点~

02

四种类型的数据节点 Znode 都是什么?

正经回答:

(1)PERSISTENT-持久节点

除非手动删除,否则节点一直存在于 Zookeeper 上

(2)EPHEMERAL-临时节点

临时节点的生命周期与客户端会话绑定,一旦客户端会话失效(客户端与 zookeeper 连接断开不一定会话失效),那么这个客户端创建的所有临时节点 都会被移除。

(3)PERSISTENT_SEQUENTIAL-持久顺序节点

基本特性同持久节点,只是增加了顺序属性,节点名后边会追加一个由父节点 维护的自增整

型数字。

(4)EPHEMERAL_SEQUENTIAL-临时顺序节点

基本特性同临时节点,增加了顺序属性,节点名后边会追加一个由父节点维护 的自增整型数字。

03

Zookeeper Watcher 机制 -- 数据变更通知

正经回答:

Zookeeper 允许客户端向服务端的某个 Znode 注册一个 Watcher 监听,当服务端的一些

指定事件触发了这个 Watcher,

服务端会向指定客户端发送一个事件通知来实现分布式的通知功能,然后客户端根据Watcher 通知状态和事件类 型做出业务上的改变。

工作机制:

(1)客户端注册 watcher

(2)服务端处理 watcher

(3)客户端回调 watcher

Watcher 特性总结:

(1)一次性

无论是服务端还是客户端,一旦一个 Watcher 被触 发 ,Zookeeper 都会将其从相应的存储中移除。

这样的设计有效的减轻了服务端的压力,不然对于更 新非常频繁的节点,服务端会不断的向客户端发送事件通知,无论对于网络还是服务端的压力都非常大。

(2)客户端串行执行

客户端 Watcher 回调的过程是一个串行同步的过程。

(3)轻量

Watcher 通知非常简单,只会告诉客户端发生了事件,而不会说明事件的 具体内容。

客户端向服务端注册 Watcher 的时候,并不会把客户端真实的 Watcher 对象实体传递到服务端,仅仅是在客户端请求中使用 boolean 类型属性进行了 标记。

(4)watcher event 异步发送 watcher 的通知事件从 server 发送到 client 是异步的,这就

存在一个问题,不同的客户端和服务器之间通过 socket 进行通信,由于网络延迟或其他因素导致客户端在不通的时刻监听到事件,由于 Zookeeper 本身提供了 ordering guarantee,

即客户端监听事件后,才会感知 它所监视 znode 发生了变化。所以我们使用 Zookeeper 不能期望能够监控到节点每次的变化。

Zookeeper 只能保证最终的一致性,而无法保证强一致性

(5)注册 watcher getData、exists、getChildren

(6)触发 watcher create、delete、setData

(7)当一个客户端连接到一个新的服务器上时,watch 将会被以任意会话事件 触发。当与一个服务器失去连接的时候,是无法接收到 watch 的。而当 client 重新连接时,如果需要的话,所有先前注册过的 watch,都会被重新注 册。通常这是完全透明的。

只有在一个特殊情况下,watch 可能会丢失:

对于 一个未创建的 znode 的 exist watch,如果在客户端断开连接期间被创建了, 并且随后在客户端连接上之前又删除了,这种情况下,这个 watch 事件可能会被丢失。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-03-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 浩说编程 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
秋招面试题系列- - -Java工程师(七)
ZooKeeper是一个开放源码的分布式协调服务,它是集群的管理者,监视着集群中各个节点的状态根据节点提交的反馈进行下一步合理操作。最终,将简单易用的接口和性能高效、功能稳定的系统提供给用户。
叶秋学长
2022/08/21
2790
秋招面试题系列- - -Java工程师(七)
2019年面试官最喜欢问的28道ZooKeeper面试题
ZooKeeper 是一个分布式的,开放源码的分布式应用程序协调服务。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。
程序员追风
2020/01/14
5290
2019年面试官最喜欢问的28道ZooKeeper面试题
Java 面试——Zookeeper
一个 ZooKeeper 集群如果要对外提供可用的服务,那么集群中必须要有过半的机器正常工作并且彼此之间能够正常通信。如果想搭建一个能够允许 N 台机器 down 掉的集群,那么就要部署一个由 2*N+1 台服务器构成的 ZooKeeper 集群。所以部署3个节点,那么就得至少有2个节点可用则该集群才可用。4个节点同样还是要2个以上。所以 Zookeeper集群部署的节点(非Observer)数一般为奇数。高可用机制其实基于 ZAB协议[链接]。
Java架构师必看
2021/05/06
4210
Java 面试——Zookeeper
Java基础面试题【分布式】三 ZAB协议
ZAB 协议是为分布式协调服务 Zookeeper 专门设计的一种支持崩溃恢复的原子广播协议,实现分布式 数据一致性
@派大星
2023/10/13
2310
ZooKeeper的十二连问,你顶得了嘛?
ZooKeeper的视图数据结构,很像Unix文件系统,也是树状的,这样可以确定每个路径都是唯一的。zookeeper的节点统一叫做「znode」,它是可以通过「路径来标识」,结构图如下:
捡田螺的小男孩
2020/09/03
1.6K0
ZooKeeper面试题(2020最新版)
文章目录 1. ZooKeeper 是什么? 2. ZooKeeper 提供了什么? 3. Zookeeper 文件系统 4. Zookeeper 怎么保证主从节点的状态同步? 5. 四种类型的数据节点 Znode 6. Zookeeper Watcher 机制 -- 数据变更通知 7. 客户端注册 Watcher 实现 8. 服务端处理 Watcher 实现 9. 客户端回调 Watcher 10. ACL 权限控制机
Java架构师必看
2020/04/10
4.1K0
Zookeeper面试题36问,又能和面试官多扯半个小时了
Basically Available(基本可用)、Soft state(软状态) 和 Eventuanlly consistent (最终一致性)3个短语的简写。
Java小咖秀
2020/06/23
1.4K0
Zookeeper面试题36问,又能和面试官多扯半个小时了
29个Zookeeper面试题超详细(带答案)
ZooKeeper是一个开放源码的分布式协调服务,它是集群的管理者,监视着集群中各个节点的状态根据节点提交的反馈进行下一步合理操作。最终,将简单易用的接口和性能高效、功能稳定的系统提供给用户。
编程大道
2019/09/26
5.6K0
面试:Zookeeper常见11个连环炮
面试的时候,面试官只要看到你简历的上写的有Zookeeper(熟悉、掌握)之类,那你至少要准备接下来的11连问。
田维常
2021/01/28
4720
【年后跳槽必看篇-非广告】一文带你吃透Zookeeper
我们如果在面试过程中,如果要是聊到Zookeeper,同时你有很懂Kafka,那么恭喜你就可以由此为切入点,然后开始大杀特杀了。
@派大星
2024/01/17
3550
【年后跳槽必看篇-非广告】一文带你吃透Zookeeper
大数据面试题(六):ZooKeeper核心高频面试题
假设有五台服务器组成的zookeeper集群,它们的id从1-5,同时它们都是最新启动的,也就是没有历史数据, 在存放数据量这一点上,都是一样的。假设这些服务器依序启动,来看看会发生什么。
Lansonli
2022/12/14
6740
大数据面试题(六):ZooKeeper核心高频面试题
面试:ZooKeeper二十三连问,看看你能不能接住
ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,它是集群的管理者,监视着集群中各个节点的状态根据节点提交的反馈进行下一步合理操作。最终,将简单易用的接口和性能高效、功能稳定的系统提供给用户。
IT大咖说
2019/12/17
9760
面试:ZooKeeper二十三连问,看看你能不能接住
《面试八股文》之Zookeeper12卷
Zookeeper 是一个开源的,是用于维护配置信息,命名,提供分布式同步和提供组服务的集中式服务。
moon聊技术
2021/07/28
7260
《面试八股文》之Zookeeper12卷
可能是全网把 ZooKeeper 概念讲的最清楚的一篇文章
相信大家对 ZooKeeper 应该不算陌生。但是你真的了解 ZooKeeper 是个什么东西吗?如果别人/面试官让你给他讲讲 ZooKeeper 是个什么东西,你能回答到什么地步呢?
用户2164320
2018/09/11
8430
可能是全网把 ZooKeeper 概念讲的最清楚的一篇文章
万字长文入门Zookeeper核心知识点
ZooKeeper 是一个开源的分布式协调框架,它的定位是为分布式应用提供一致性服务,是整个大数据体系的管理员。ZooKeeper 会封装好复杂易出错的关键服务,将高效、稳定、易用的服务提供给用户使用。
Java识堂
2021/02/05
6770
万字长文入门Zookeeper核心知识点
很遗憾,没有一篇文章能讲清楚ZooKeeper!
作为分布式系统解决方案的 ZooKeeper,被广泛应用于多个分布式场景。例如:数据发布/订阅,负载均衡,命名服务,集群管理等等。
macrozheng
2020/01/20
1.4K0
很遗憾,没有一篇文章能讲清楚ZooKeeper!
最新整理的Zookeeper 23道面试题
节点宕机 Zookeeper本身也是集群,推荐配置不少于3个服务器。Zookeeper自身也要保证当一个节点宕机时,其他节点会继续提供服务。如果是一个Follower宕机,还有2台服务器提供访问,因为Zookeeper上的数据是有多个副本的,数据并不会丢失;如果是一个Leader宕机,Zookeeper会选举出新的Leader。ZK集群的机制是只要超过半数的节点正常,集群就能正常提供服务。只有在ZK节点挂得太多,只剩一半或不到一半节点能工作,集群才失效。所以3个节点的cluster可以挂掉1个节点(leader可以得到2票>1.5)2个节点的cluster就不能挂掉任何1个节点了(leader可以得到1票<=1)
小熊学Java
2024/09/27
5940
最新整理的Zookeeper 23道面试题
Zookeeper详细使用解析!分布式架构中的协调服务框架最佳选型实践
Zookeeper概念 Zookeeper是分布式协调服务,用于管理大型主机,在分布式环境中协调和管理服务是很复杂的过程,Zookeeper通过简单的架构和API解决了这个问题Zookeeper实现分布式锁分布式锁三要素: 加锁 解锁 锁超时 Zookeeper数据结构类似树结构,由节点Znode组成 Znode分为四种类型: 持久节点(PERSISTENT): 默认节点类型,创建节点的客户端与Zookeeper断开连接后,节点依旧存在 持久节点顺序节点(PERSISTENT_SEQUENTIAL): 持
攻城狮Chova
2021/08/24
5100
Zookeeper详细使用解析!分布式架构中的协调服务框架最佳选型实践
Java中间件面试题(2021最新版)
现今时代,系统越来越复杂,数据来越多,系统间的交互也就变得越来越重要,同时也变得越来越困难。而消息中间件在其中起到了一个中间桥梁的重要作用。因此,面试中也经常会被问到消息中间件相关的问题。从其使用到其原理设计,都会是面试官感兴趣的一个点。本场小编就以zookeeper / RocketMQ 为例,简单介绍消息中间件并在其中穿插面试官常会提及的消息中间件相关的问题,小编这里还总结了一份中间件的思维导图,分享给到大家。
Java程序猿
2021/04/08
14.2K0
总结了12道Zookeeper面试题
ZooKeeper 是一个开源的分布式协调服务,属于面试的热门考点。发现一篇很不错的文章,给大家参考。
良月柒
2019/11/26
8570
相关推荐
秋招面试题系列- - -Java工程师(七)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档