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?
有些业务逻辑只需要集群中的某一台机器进行执行,其他的机器可以共享这个结果