Zookeeper
2021-01-25 23:11:26 68 举报
AI智能生成
Zookeeper思维导图
作者其他创作
大纲/内容
基础
数据模型
znode 节点类型与特性
持久节点
要显式调用 delete 函数进行删除操作
临时节点
客户端会话因超时或发生异常而关闭时,节点也相应在 服务器上被删除。
要显式调用 delete 函数进行删除操作
要显式调用 delete 函数进行删除操作
有序节点
有序节点是在持久节点和临时节点特性的基础上,增加了一个节点有序的性质
节点结构
czxid
表示该节点被创建时事务ID
mzxid
表示该节点最后一次被更新时的事务ID
pzxid
表示该节点的子节点列表最后一次被修改时的事务ID
ctime
表示该节点的创建时间
mtime
表示该节点最后一次被更新时间
version
数据节点的版本号
cversion
子节点的版本号
aversion
节点ACL版本号
ephemeralOwner
创建该临时节点会话SessionId,如果是持久节点为0
dataLength
数据内容长度
numChildren
当前节点的子节点个数
发布订阅模式
Watch 监控机制
客户端
标记该会话是一个带有 Watch 事件的请求
将 Watch 事件存储到 ZKWatchManager
服务端
解析收到的请求是否带有 Watch 注册事件
将对应的 Watch 事件存储到 WatchManager
ACL 权限控制
权限模式(Scheme)
范围验证
口令验证
授权对象(ID)
权限信息(Permission)
数据节点(create)创建权限,授予权限的对象可以在数据节点下创建子节点;
数据节点(wirte)更新权限,授予权限的对象可以更新该数据节点;
数据节点(read)读取权限,授予权限的对象可以读取该节点的内容以及子节点的信息;
数据节点(delete)删除权限,授予权限的对象可以删除该数据节点的子节点;
数据节点(admin)管理者权限,授予权限的对象可以对该数据节点体进行 ACL 权限设置题
序列化
Jute 的序列解决方案
Binary、Csv、XML 三种方式的序列化操作
Watch 监控
ZooKeeper 集群模式
Leader 角色服务器
负责管理集群中其他的服务器,是集群中工作的分配和调度者。
Follow 服务器
主要工作是选举出 Leader 服务器,在发生 Leader 服务器选举的时候,系统会从 Follow 服务器之间根据多数投票原则,选举出一个 Follow 服务器作为新的 Leader 服务器。
Observer 服务器
主要负责处理来自客户端的获取数据等请求,并不参与 Leader 服务器的选举操作,也不会作为候选者被选举为 Leader 服务器。
客户端连接会话
会话的创建
会话 ID
会话超时时间
会话关闭状态
会话管理策略
分桶策略
Curator
会话状态
CONNECTED(已连接状态):当客户端发起的会话成功连接到服务端后,该条会话的状态变为 CONNECTED 已连接状态。
READONLY(只读状态):当一个客户端会话调用
CuratorFrameworkFactory.Builder.canBeReadOnly() 的时候,该会话会一直处于只读模式,直到重新设置该条会话的状态类型。
CuratorFrameworkFactory.Builder.canBeReadOnly() 的时候,该会话会一直处于只读模式,直到重新设置该条会话的状态类型。
SUSPENDED(会话连接挂起状态):当进行 Leader 选举和 lock 锁等操作时,需要先挂起客户端的连接。注意这里的会话挂起并不等于关闭会话,也不会触发诸如删除临时节点等操作。
RECONNECTED(重新连接状态):当已经与服务端成功连接的客户端断开后,尝试再次连接服务端后,该条会话的状态为 RECONNECTED,也就是重新连接。重新连接的会话会作为一条新会话在服务端运行,之前的临时节点等信息不会被保留。
LOST(会话丢失状态):当客户端与服务器端因为异常或超时,导致会话关闭时,该条会话的状态就变为 LOST。
Leader 选举
数据的一致性
Leader发起事务性请求投票
投票通过
执行事务性请求
进行数据一致性操作
广播模式
恢复模式
服务启动时的 Leader 选举
发起投票
每次投票时,发送的服务器的 myid(服务器标识符)和 ZXID (集群投票信息标识符)等选票信息字段都指向本机服务器
接收投票
统计投票
对比的内容是 ZXID,ZXID 数值比较大的投票信息优先作为 Leader 服务器。
如果每个投票信息中的 ZXID 相同,就会接着比对投票信息中的 myid 信息字段,选举出 myid 较大的服务器作为 Leader 服务器
如果每个投票信息中的 ZXID 相同,就会接着比对投票信息中的 myid 信息字段,选举出 myid 较大的服务器作为 Leader 服务器
Leader 与 Follower 的数据同步策略
同步条件
存在Leader 服务器
同步过程
DIFF 同步即差异化同步的方式
TRUNC+DIFF 同步代表先回滚再执行差异化的同步
TRUNC 同步是指仅回滚操作
SNAP 同步的意思是全量同步
同步后的处理
leader作用
事务的请求处理与调度分析
Follow作用
非事务请求的处理与 Leader 的选举分析
Observer
Observer 不参与 Leader 服务器的选举工作,也不会被选举为 Leader 服务器
数据文件
内存数据、事务日志、数据快照
数据快照是每间隔一段时间才把内存数据存储到本地磁盘,因此数据并不会一直与内存数据保持一致
应用
分布式锁
分布式死锁
超时方式
在创建分布式线程的时候,对每个线程都设置一个超时时间
死锁检测
把死锁检测理解为一个运行在各个服务器系统上的线程或方法,该方法专门用来探索发现应用服务上的线程是否发生了死锁
排他锁
利用 ZooKeeper 数据模型的临时顺序节点和 Watch 监控机制,在客户端通过创建数据节点的方式来获取锁,通过删除数据节点来释放锁
共享锁
分布式 ID 生成器
生成策略
UUID 方式
数据库序列方式
TDDL 中的序列化实现
snowflake 算法
唯一性、安全性、递增性以及扩展性
实现负载均衡服务器
常用算法
负载均衡算法
轮询法
随机法
原地址哈希法
加权轮询法
加权随机法
最小连接数法
DUBBO
算法
二阶段提交
三阶段提交
ZAB协议算法
崩溃恢复
原子广播协议
Paxos算法
提议者(Proposer):提出提案(Proposal)。Proposal 信息包括提案编号(Proposal ID)和提议的值(Value)。
决策者(Acceptor):参与决策,回应 Proposers 的提案。收到 Proposal 后可以接受提案,若 Proposal 获得超过半数 Acceptors 的许可,则称该 Proposal 被批准
决策学习者:不参与决策,从 Proposers/Acceptors 学习最新达成一致的提案(Value)
子主题
Raft 算法
0 条评论
下一页