ZooKeeper学习

ZooKeeper简介:

ZooKeeper是一个分布式协调服务,提供一种集中式的信息存储服务。数据存储在内存中,类型文件系统的树形结构(目录和文件),高吞吐低延迟,集群高可靠。
可以作为分布式配置中心,分布式锁,服务注册中心等等。

ZooKeeper三大核心概念 session,数据模型,watch
1:session
在这里插入图片描述
1:当一个客户端连接一个会话,会给客服端分配一个唯一会话ID。
2:客户端需要以特定的时间间隔(ticktime)发送心跳保持会话有效。
3:超过时间未收到客户端心跳,则判断客户端已经下线默认为2倍ticktime。
4:客户端的请求按FIFO(先进先出)顺序执行。

数据模型
层次命名空间:
1:以 / 为根
2:节点可以包含与之关联的数据以及子节点(即是文件也是文件夹)
3:节点的路径总是表示为规范的,绝对的,斜杠分割的路径

znode:
1:命名唯一,命名规范
2:节点类型,持久,顺序持久,临时,顺序临时
3:节点数据构成
在这里插入图片描述
持久节点 create /node1 111
临时节点 create -e /node1 111
顺序节点 create -s /node1/cp 222 (cp0000000001)
create -s /node1/3333 0000000002
临时顺序节点 create -e -s /node1 4444

顺序节点 10位十进制序号
每个父节点一个计数器
计数器是带符号 int(4字节) 到2147483647之后将会溢出

节点数据 存储的协调数据(状态信息,配置,位置信息等等)
节点元数据 stat结构
数据上线 1M

节点元数据 stat结构
在这里插入图片描述
在这里插入图片描述
多种方式跟踪时间
zxid ZooKeeper中的每次更改操作都对应了一个唯一事务ID,他是一个全局有序的 如果zxid1 < zxid2 则表示zxid1 发生在zxid2 之前
version number版本号 对节点的每次更改都会增加版本号
ticks 当使用多服务器ZooKeeper时 ,服务器使用”滴答“来定义事件的时间,如状态上传,会话超时,对等点之间的连接超时等。滴答时间仅通过最小会话超时(滴答时间的2倍)间接公开;如果客户端请求的会话超时小于最小会话超时,服务器将会告诉客户端会话超时实际上是最小会话超时。
real time ZooKeeper 除了在znode的创建和修改时将时间戳放入stat结构之外,根本不使用realtime或时钟时间。

watch监听机制
客户端可以给node增加一个监听事件
addWatch [-m mode] path # optional mode is one of [PERSISTENT, PERSISTENT_RECURSIVE] - default is PERSISTENT_RECURSIVE
PERSISTENT: 对设置的节点生效
PERSISTENT_RECURSIVE:对设置的节点及其对所有子节点生效
两者都为持久化监听

首先 新建一个/node2 并且开启监听
在这里插入图片描述在这里插入图片描述
然后再开启一个客户端去修改/node2的值
在这里插入图片描述
此时之前的客户端会收到一条消息在这里插入图片描述
这就是watch机制

ZooKeeper特性
1:顺序一致性
2:原子性
3:单个镜像系统
4:可靠性
5:及时性

ZooKeeper选举机制
ZooKeeper内部有 leader,follow,observer 三种模式。
leader:一个ZooKeeper集群上只有一个leader节点。
follow:当节点未被选举为leader后,自动成为follow。
observer:需要单独配置,observer节点不参与投票,其余功能和follow一致。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值