zookeeper基础总结

文章目录

    • zookeeper描述
    • 选举机制
    • 脑裂
    • ZAB协议
    • 原子广播
    • 二阶段提交
    • 崩溃恢复
    • 基本特性
    • 操作命令
    • 补充

zookeeper描述

分布式协调和管理的机制
中心化服务:配置信息,统一命名,提供组服务
树状结构,每个节点必须携带数据,临时节点不能挂载子节点。

单机模式
伪分布式
完全分布式

包含临时节点和持久节点。

选举机制

当集群启动时,会进入选举状态。每个节点都会选举自己当leader,向其他节点发送选举信息(最大事务Id, 选举id),互相之间比较得出leader,其他节点作为follower.
最大事务Id 最大的节点,则为leader,否则比较选举id最大的。且选举必须满足过半性。
若已经选举出leader,后来添加的节点都默认成为follower.

脑裂

网络波动不稳定,隔离出去的节点选举,出现多个leader。

ZAB协议

实现数据一致性,基于原子广播和崩溃恢复的协议。

原子广播

原子广播是基于2PC-二阶段算法设计,加入过半性改良。
原子广播的流程:
leader收到命令,记录Log,然后将请求加入队列发送给follower。
follower收到队列后,将请求取出记录log
记录成功则认为命令是否能执行,反馈给leader
若超过半数同意执行,则执行命令。否则不执行。将log记录删除(事务回滚)。

二阶段提交

“一票否决”-核心思想
在二阶段提交中,有几个状态,请求阶段:协调者收到请求,将请求发送给参与者,等待参与者反馈。执行阶段:参与者反馈YES给协调者,若全为YES则执行命令。中止阶段:若有一个为NO则中止命令。

崩溃恢复

leader宕机或者丢失,集群不会停止工作,而是选举新的leader,每个leader有一个递增的epochid,若宕机的leader恢复工作,则判断epochid大的为leader,小的自动变成follower.

基本特性

过半性 - 过半选举,过半执行
数据一致性 - 原子广播
可靠性 - 崩溃恢复
顺序性 - 顺序执行
原子性 - 都执行或者都不执行
实时性 -

操作命令

create /date ‘zb’
set /data ‘zb1’
create -e /data ‘zb’ 临时
create -s /data ‘zb’
每一个操作都记做一个事务,读操作是不记录的。

新节点连入集群,会判断最大事务ID,向leader发送请求,判断是否一致,进行事务补全。补全过程中不参与对外服务。

补充

原子广播中,记录失败的follower,在收到leader发来要执行的请求,会反复向leader发送请求,重新获取命令,直到执行成功。

你可能感兴趣的:(zookeeper,大数据,zookeeper)