Zookeeper的介绍

在这里插入图片描述
zookeeper是可以自己恢复的
在这里插入图片描述
1.zookeeper是二进制安全的
2.zkCli.sh开启zookeeper
3.cZxid是创建时的id号,0x2是第二个leader
4.mZxid是修改时的id
5.pZxid是当前节点的最后一个子节点的创建的id号
6.ephemeralOwner=0x0是持久化的节点,为其他的就是临时的节点
7.每个zookeeper的session都会在每一个session同步的,每次开启或者关闭都会使用其他的客户端的事务
8.每个节点只能存1m的数据
8.create -s可以进行不覆盖,不重复的创建节点,创建顺序节点的
9.create -e创建临时节点
10.get /ooxx
11.set /ooxx/xxoo
12.当zookeeper挂了,session创建的事务id不会改变
在这里插入图片描述
用netstat -natp | egrep '(2888|3888)'命令查看zk的进程前提是得有net工具
yum install net-tools下载net工具在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

zk的存储过程

1.zk从机接收客户端的发送请求
2.从机将请求转发给leader
3.leader创建事务id
4.leader维护发送的队列,每个follower都会有一个发送队列,将日志发送给从机保存到磁盘
5.follower接收到日志,会发送确认信息给leader,leader也会有一个确认信息,当确认信息过半了,leader会发送write发送到队列中(异步)
6.leader回复follower创建节点OK了
7.follower回复客户端创建节点ok
队列:先进先出
当客户端没有选择同步的选项时,就有可能取出过时的数据
在这里插入图片描述

ZAB轩主

当leader挂了,所有的zk都会停止服务直到选出新的主

在这里插入图片描述

zkAPI

zk有session的概念,没有连接池的概念

watch

watch分为两类:
1.第一类,在new zk的时候 ,传入的watch,是session级别的,跟path,note没有关系
2.第二类,在getData的时候,传入的watch,是path级别的,watch的getData方法有两种传入watch的方式,一种是创建新的watch,一种是在watch中,参数为true,使用new zookeeper时传入的watch,使watch重新注册
watch注册的发生只发生在读类型:get,exists
watch只能使用一次
getData可以异步的获取,异步的获取会有一个回调函数,当zk中取出值后,会执行回调函数

CountDownLatch方法

1.await阻塞
2.countdown方法,去除阻塞,可以用来

分布式锁

在这里插入图片描述

1.抢锁
线程存储到zk中都是按顺序排列的
进行获取根节点的所有节点,并进行排序
只有排序第一的才能进行干活
其他线程进行睡眠,并监听前一个节点是否存活
前一个节点死亡,再进行获取根节点的所有节点,并进行排序
再抢锁
进行干活
2.干活
只有排名第一的人才会干活
3.释放锁
删除节点

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值