zookeeper

数据结构

ZooKeeper数据模型的结构与Unix文件系统很类似,整体上可以看作是一棵树,每个节点称做一个ZNode。每一个ZNode默认能够存储1MB的数据,每个ZNode都可以通过其路径唯一标识。

应用场景

统一命名服务

统一配置管理

统一集群管理

服务动态上下线

选举机制

SID:服务器ID。用来唯一标识一台ZooKeeper集群中的机器,每台机器不能重复,和myid一致。

ZXID:事务ID。 ZXID是一个事务ID,用来标识一次服务器状态的变更。在某一时刻,集群中的每台机器的ZXID值不一 定完全一致,这和ZooKeeper服务器对于客户端“更新请求”的处理逻辑有关。每次写操作都有事务id (zxid)

Epoch: 每个Leader任期的代号。没有Leader时同一轮 投票过程中的逻辑时钟值是相同的。每投完一次票这个数据就会增加

第一次启动

zookeeper_第1张图片

非第一次启动

zookeeper_第2张图片
zookeeper_第3张图片

节点信息

get -s /

(1) czxid: 创建节点的事务zxid

每次修改ZooKeeper状态都会产生一个ZooKeeper事务ID.事务ID是ZooKeeper中所有修改总的次序。每次修改都有唯一 的zxid, 如果zxid1小于zxid2, 那么zxid1在zxid2之前发生。

(2) ctime: znode 被创建的毫秒数(从1970年开始)

(3) mzxid: znode 最后更新的事务zxid

(4) mtime: znode 最后修改的毫秒数(从1970年开始)

(5) pZxid: znode 最后更新的子节点zxid

(6) cversion: znode 子节点变化号,znode子节点修改次数

(7) dataversion: znode 数据变化号

(8) aclVersion: znode. 访问控制列表的变化号

(9) ephemeralOwner:如果是临时节点,这个是zhode拥有者的session id。如果不是时节点则是0。

(10) datal ength: znode的数据长度

(11) numChildren: znode子节点数量

节点类型(持久/短暂/有序号/无序号)

持久(Persistent) :客户端和服务器端断开连接后,创建的节点不删除.

短暂(Ephemeral) :客户端和服务器端断开连接后,创建的节点自己删除

说明:创建znode时 设置顺序标识,znode名称后会附加一个值,顺序号是一个单调递增的计数器,由父节点维护

注意:在分布式系统中,顺序号可以被用于为所有的事件进行全局排序,这样客户端可以通过顺序号推断事件的顺序

监听器原理

zookeeper_第4张图片

注意:注册一次,只能监听一次。想再次监听,需要再次注册。

写数据原理

zookeeper_第5张图片

zookeeper_第6张图片

应用场景

服务器动态上下线

zookeeper_第7张图片

分布式锁

zookeeper_第8张图片

生产集群按照多少台zk合适?

zookeeper_第9张图片

源码分析

拜占庭将军问题

zookeeper_第10张图片

paxos算法

解决什么问题

zookeeper_第11张图片

算法描述

zookeeper_第12张图片

算法流程

zookeeper_第13张图片
zookeeper_第14张图片
zookeeper_第15张图片
zookeeper_第16张图片

造成这种情况的原因是系统中有一个以上的Proposer,多个Proposers相互争夺Acceptor,造成迟迟无法达成一致的情况。针对这种情况,一种改进的Paxos算法被提出:从系统中选出一个节点作为Leader, 只有Leader能够发起提案。这样,一次Paxos流程中只有一个Proposer不会出现活锁的情况,此时只会出现例子中第一种情况。

zab协议

什么是ZAB算法

Zab借鉴了Paxos算法,是特别为Zookeeper设计的支持崩溃恢复的原子广播协议。基于该协议,Zookeeper设计为只有一台客户端(Leader) 负责处理外部的写事务请求,然后Leader客户端将数据同步到其他Follower 节点。即Zookeeper只有一个Leader 可以发起提案。

Zab协议内容

Zab协议包括两种基本的模式:消息广播、蒯溃恢复。

消息广播

zookeeper_第17张图片

崩溃恢复

zookeeper_第18张图片
zookeeper_第19张图片

cap理论

zookeeper_第20张图片

持久化源码

zookeeper_第21张图片

序列化源码

zookeeper_第22张图片
zookeeper_第23张图片
zookeeper_第24张图片
zookeeper_第25张图片
zookeeper_第26张图片
zookeeper_第27张图片
zookeeper_第28张图片
zookeeper_第29张图片
zookeeper_第30张图片
zookeeper_第31张图片
zookeeper_第32张图片
zookeeper_第33张图片
zookeeper_第34张图片

参考https://www.bilibili.com/video/BV1to4y1C7gw

你可能感兴趣的:(面试,面试)