ZooKeeper
2021-08-27 00:07:24 34 举报
AI智能生成
登录查看完整内容
Zookeeper学习路线
作者其他创作
大纲/内容
一个领导者(Leader)多个跟随者(Follower)组成的集群
一般安装奇数台服务器
集群只要有半数以上节点存活,就能正常提供服务
全局数据一致,Leader负责写入,Follower同步数据
实时性,在一定时间范围内,Client能读到最新数据
特点
类Unix文件系统的树结构
一个ZNode能储存1MB数据
每个节点称作一个ZNode
ZNode的唯一标识是路径
数据结构
包括Client和Server之间、Server与Server之间
通信心跳时间
tickTime=2000
20S连接不上就不在尝试连接了
Leader和Follower初始连接最大心跳数
initLimit=10
10S未收到Follower心跳,认为F死掉
LF同步通信时限
syncLimit=5
一般不使用默认的tmp目录
数据保存地址
dataDir=/tmp/zookeeper
客户端连接默认端口
clientPort=2181
zoo.cfg
1、每台服务器启动时都将选票投给自己
2、启动两台以上服务器时,myid大的获得所有选票
3、获得半数选票的当选Leader,其他的为Follower
4、后续启动的服务器自动变成Follower
未选出Leader时,服务器状态都为LOOKING
第一次启动
每个Leader任期的代号
Epoch
事务ID
ZXID
服务器ID(myid)
SID
基本概念
按照Epoch、ZXID、SID顺序大的当选
非第一次启动
选举机制
create /path data
持久不带序号(Persistent)
create -s /path data
持久带序号(Persistent_Sequential)
create -e /path data
短暂不带序号(Ephemeral)
create -es /path data
短暂带序号(Ephemeral_Sequential)
节点类型
新增
dataVersion与当前版本号不一致时,拒绝删除
delete [-v dataVersion] path
递归删除
deleteall path
删除
set [-v dataVersion] /path data
修改
-s 查看详情信息
get [-s] path
查看
CRUD
get -w /path
节点数据变化
ls -w /path
节点数量变化
一次注册,只能监听一次
监听
Leader收到请求后,先写入自己库中,再分发给Follower
Leader收到ack后,包括自己超过半数后,返回ack给客户端
连接Leader
Follower会将请求转发给Leader
Leader按照直连Leader处理
Leader将ack发送给Follower,尤其给客户端
连接Follower
数据写入
服务器在ZK/servers下创建 临时带序号 的节点
客户端监听/servers下节点的变化
服务器动态上下线
依然是创建 临时带序号 的节点
因为序号是升序的,所以每个节点监听上一个序号的变化
待上一个节点断开连接释放锁,下一个节点即可获得锁
分布式锁
实际应用
对原生API进行封装,简化使用流程
可实现分布式锁、集群领导选举等
curator
ZooKeeper
0 条评论
回复 删除
下一页