zookpeer常见面试题

编程

1.ZAB

协议是什么?

ZAB

协议是为分布式协调服务

Zookeeper

专门设计的一种支持崩溃恢复的原子广播协议。

ZAB

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

当整个

zookeeper

集群刚刚启动或者

Leader

服务器宕机、重启或者网络故障导致不存在过半

的服务器与

Leader

服务器保持正常通信时,所有进程(服务器)进入崩溃恢复模式;

首先

选举产生新的

Leader

服务器,然后集群中

Follower

服务器开始与新的

Leader

服务器进行数

据同步,当集群中超过半数机器与该

Leader

服务器完成数据同步之后,退出恢复模式进入

消息广播模式,

Leader

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

理。

 

2.Znode

有哪几种类型

PERSISTENT-

持久节点

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

Zookeeper

 

EPHEMERAL-

临时节点

临时节点的生命周期与客户端会话绑定,一旦客户端会话失效(客户端与

zookeeper

连接断

开不一定会话失效),那么这个客户端创建的所有临时节点都会被移除。

 

PERSISTENT_SEQUENTIAL-

持久顺序节点

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

型数字。

 

EPHEMERAL_SEQUENTIAL-

临时顺序节点

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

字。

 

3.ACL

权限控制机制

UGO

User/Group/Others

目前在

Linux/Unix

文件系统中使用,也是使用最广泛的权限控制方式。是一种粗粒度的文件

系统权限控制模式。

 

ACL

Access Control List

)访问控制列表

包括三个方面:

权限模式(

Scheme

IP

:从

IP

地址粒度进行权限控制

Digest

:最常用,用类似于

username:password

的权限标识来进行权限配置,便于区分不同

应用来进行权限控制

World

:最开放的权限控制方式,是一种特殊的

digest

模式,只有一个权限标识

“world:anyone”

Super

:超级用户

授权对象

授权对象指的是权限赋予的用户或一个指定实体,例如

IP

地址或是机器灯。

 

权限

Permission

CREATE

:数据节点创建权限,允许授权对象在该

Znode

下创建子节点

DELETE

:子节点删除权限,允许授权对象删除该数据节点的子节点

READ

:数据节点的读取权限,允许授权对象访问该数据节点并读取其数据内容或子节点列

表等

WRITE

:数据节点更新权限,允许授权对象对该数据节点进行更新操作

ADMIN

:数据节点管理权限,允许授权对象对该数据节点进行

ACL

相关设置操作

 

4.ZK

的角色有哪些

Leader

事务请求的唯一调度和处理者,保证集群事务处理的顺序性

集群内部各服务的调度者

Follower

处理客户端的非事务请求,转发事务请求给

Leader

服务器

参与事务请求

Proposal

的投票

参与

Leader

选举投票

Observer

3.3.0

版本以后引入的一个服务器角色,在不影响集群事务处理能力的基础上提升集群的非

事务处理能力

处理客户端的非事务请求,转发事务请求给

Leader

服务器,

不参与任何形式的投票

 

5.ZK Server

的工作状态有哪些,能否具体描述

服务器具有四种状态,分别是

LOOKING

FOLLOWING

LEADING

OBSERVING

LOOKING

:寻找

Leader

状态。当服务器处于该状态时,它会认为当前集群中没有

Leader

因此需要进入

Leader

选举状态。

FOLLOWING

:跟随者状态。表明当前服务器角色是

Follower

LEADING

:领导者状态。表明当前服务器角色是

Leader

OBSERVING

:观察者状态。表明当前服务器角色是

Observer

 

6.ZK

watch

机制是否永久

否。

 

7.ZK

的常见客户端有哪些

java

客户端:

zk

自带的

zkclient

Apache

开源的

Curator

 

8.

分布式锁用

zk

怎么实现

有两种实现方式,具体看课程代码

 

9.Zk

默认的通信框架是什么

Nio,

可以改成

netty

 

10.

消息广播的流程

  • eader 接收到消息请求后,将消息赋予一个全局唯一的 64 位自增 id,叫做:zxid通过 zxid 的大小比较即可实现因果有序这一特性。
  • Leader 通过先进先出队列(通过 TCP 协议来实现,以此实现了全局有序这一特性)将带 zxid 的消息作为一个提案(proposal)分发给所有 follower
  • follower 接收到 proposal,先将 proposal 写到硬盘,写硬盘成功后再向 leader 一个 ACK
  • leader 接收到合法数量的 ACKs 后,leader 就向所有 follower 发送 COMMIT 令,会在本地执行该消息。
  • follower 收到消息的 COMMIT 命令时,就会执行该消息

11.

领导选举的流程

  • 每个 Server 会发出一个投票,第一次都是投自己。投票信息:(myidZXID
  • 收集来自各个服务器的投票
  • 处理投票并重新投票,处理逻辑:优先比较 ZXID,然后比较 myid
  • 统计投票,只要超过半数的机器接收到同样的投票信息,就可以确定 leader
  • 改变服务器状态

以上是 zookpeer常见面试题 的全部内容, 来源链接: utcz.com/z/517694.html

回到顶部