zookpeer面试汇总(转自大佬)

本文详细介绍了Zookeeper在面试中的常见问题,涵盖了Zookeeper的基础概念、数据模型、节点类型、Znode存储内容、监听机制、数据一致性、服务器角色、选举机制、分布式锁的实现原理以及与Dubbo的关系。通过这些问题,深入理解Zookeeper在分布式协调服务中的作用和重要特性。
摘要由CSDN通过智能技术生成

转自大佬:https://mp.weixin.qq.com/s/P0CoPvxET2ZdgRp4Vrgk4Q

前言

一线大厂ZooKeeper的十二连问,你顶得了嘛?

本文已经收录到github

https://github.com/whx123/JavaHome

1. 面试官:工作中使用过Zookeeper嘛?你知道它是什么,有什么用途呢?

「小菜鸡的我:」

  • 有使用过的,使用ZooKeeper作为「dubbo的注册中心」,使用ZooKeeper实现「分布式锁」

  • ZooKeeper,它是一个开放源码的「分布式协调服务」,它是一个集群的管理者,它将简单易用的接口提供给用户。

  • 可以基于Zookeeper 实现诸如数据发布/订阅、负载均衡、命名服务、分布式协调/通知、集群管理、Master 选举、分布式锁和分布式队列「等功能」

  • Zookeeper的「用途」:命名服务、配置管理、集群管理、分布式锁、队列管理

用途跟功能不是一个意思咩?给我一个眼神,让我自己体会

2. 面试官:说下什么是命名服务,什么是配置管理,又什么是集群管理吧

「小菜鸡的我(幸好我刷过面试题),无所畏惧」

  • 「命名服务就是」

命名服务是指通过「指定的名字」来获取资源或者服务地址。Zookeeper可以创建一个「全局唯一的路径」,这个路径就可以作为一个名字。被命名的实体可以是「集群中的机器,服务的地址,或者是远程的对象」等。一些分布式服务框架(RPC、RMI)中的服务地址列表,通过使用命名服务,客户端应用能够根据特定的名字来获取资源的实体、服务地址和提供者信息等。

  • 「配置管理」 :

实际项目开发中,我们经常使用.properties或者xml需要配置很多信息,如数据库连接信息、fps地址端口等等。因为你的程序一般是分布式部署在不同的机器上(如果你是单机应用当我没说),如果把程序的这些配置信息「保存在zk的znode节点」下,当你要修改配置,即znode会发生变化时,可以通过改变zk中某个目录节点的内容,利用「watcher通知给各个客户端」,从而更改配置。

  • 「集群管理」

集群管理包括集群监控和集群控制,其实就是监控集群机器状态,剔除机器和加入机器。zookeeper可以方便集群机器的管理,它可以实时监控znode节点的变化,一旦发现有机器挂了,该机器就会与zk断开连接,对用的临时目录节点会被删除,其他所有机器都收到通知。新机器加入也是类似酱紫,所有机器收到通知:有新兄弟目录加入啦。

3. 面试官:你提到了znode节点,那你知道znode有几种类型呢?zookeeper的数据模型是怎样的呢?

「小菜鸡的我(我先想想):」

zookeeper的数据模型

ZooKeeper的视图数据结构,很像Unix文件系统,也是树状的,这样可以确定每个路径都是唯一的。zookeeper的节点统一叫做「znode」,它是可以通过「路径来标识」,结构图如下:

znode的4种类型

根据节点的生命周期,znode可以分为4种类型,分别是持久节点(PERSISTENT)、持久顺序节点(PERSISTENT_SEQUENTIAL)、临时节点(EPHEMERAL)、临时顺序节点(EPHEMERAL_SEQUENTIAL)

  • 持久节点(PERSISTENT)

这类节点被创建后,就会一直存在于Zk服务器上。直到手动删除。

  • 持久顺序节点(PERSISTENT_SEQUENTIAL)

它的基本特性同持久节点,不同在于增加了顺序性。父节点会维护一个自增整性数字,用于子节点的创建的先后顺序。

  • 临时节点(EPHEMERAL)

临时节点的生命周期与客户端的会话绑定,一旦客户端会话失效(非TCP连接断开),那么这个节点就会被自动清理掉。zk规定临时节点只能作为叶子节点。

  • 临时顺序节点(EPHEMERAL_SEQUENTIAL)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值