zookeeper面试题

ZAB协议

支持崩溃恢复的原子广播协议.

ZAB协议包括两种基本的模式:崩溃恢复和消息广播。 在启动和少于等于半数集群失去与leader的通讯后.

ZooKeeper提供了什么?

1、文件系统

2、通知机制

Zookeeper文件系统

多层级的节点命名空间,节点可以存储数据. 在内存中维护u一颗节点树.

节点的类型有哪些?

Watcher 机制 — 数据变更通知

  • 一次性的
  • 轻量,只有通知事件,无具体的事件内容;只有标志,没有回调者
  • 注册watcher getData、exists、getChildren
  • 触发watcher create、delete、setData

ACL(Access Control List)访问控制列表

权限模式,权限类型

集群角色

有哪些角色,分别有什么用?

Server工作状态

LOOKING、FOLLOWING、LEADING、OBSERVING

Leader 选举

  • 服务器初始化启动。
  • 服务器运行期间无法和Leader保持连接。

节点数量为什么是2n+1个?

只要超过半数的节点正常,集群就能正常提供服务。

3个节点的cluster可以挂掉1个节点(leader可以得到2票>1.5)

2个节点的cluster就不能挂掉任何1个节点了(leader可以得到1票<=1)

Zookeeper有哪几种几种部署模式?

部署模式:单机模式、伪集群模式、集群模式。

集群支持动态添加机器吗?

3.5以后的版本支持. 以前的版本可以通过:全部重启,逐个重启并保证半数有效.

Zookeeper的java客户端都有哪些?

zk自带的zkclient及Apache开源的Curator。

zookeeper是如何保证事务的顺序一致性的?

zookeeper采用了全局递增的事务Id来标识,所有的proposal(提议)都在被提出的时候加上了zxid,zxid实际上是一个64位的数字,高32位是epoch(时期; 纪元; 世; 新时代)用来标识leader周期,如果有新的leader产生出来,epoch会自增,低32位用来递增计数。当新产生proposal的时候,会依据数据库的两阶段过程,首先会向其他的server发出事务执行请求,如果超过半数的机器都能执行并且能够成功,那么就会开始执行。

分布式集群中为什么会有Master?

有些业务逻辑只需要集群中的某一台机器进行执行,其他的机器可以共享这个结果

Author: bkdwei