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