zookeeper基础

⦁ 1.基本概念
zookeeper是分布式协调服务
每个节点存储的数据很小, 不应该成数据库用,最多几kb
节点包括 临时节点和持久化节点
redis的分布式锁麻烦就麻烦在要考虑锁的过期时间,死锁等,代码复杂度提高
zookeeper提供的保证:
由单点leader执行写的操作,保证顺序写
原子性
zookeeper是主从复制架构类似redis,且二进制安全,即也是存的字节数组
2.集群安装
(1)搭建zookeeper集群:
i.修改zoo.cfg,复制zoo.cfg3个,修改dataDir和dataLogDir 以及clientPort 要不一样,然后在dataDir下分别写myid 里面记录0.1.2,
2888是选主投票用
3888是正常情况下leader接收读写请求的
在这里插入图片描述

参考:https://blog.csdn.net/vbirdbest/article/details/82688462

分别启动三个实例

 ../bin/zkServer.sh  start ./zoo0.cfg
 ../bin/zkServer.sh  start ./zoo1.cfg
 ../bin/zkServer.sh  start ./zoo2.cfg
然后查看状态 
 ../bin/zkServer.sh status ./zoo0.cfg
  1. 命令常见
    ⦁ help是帮助信息
    ⦁ 所有的create、get、set操作都要以绝对路径/开头
create /zk_test  my_data  #创建并设置目录的值set  my_data
create   /zk_test/zkzsx  #创建目录
get  -s/zs_test/zkzsx  -s展示更多信息
cZxid:节点创建时的zxid序列号   --目录创建的序列号,16进制表示,低4字节表示事务id,
		前4字节表示纪元,当leader变更一次时,纪元会变化
ctime:节点创建时间
mZxid:节点最近一次更新时的zxid,当再次更新时会加1
mtime:节点最近一次更新的时间
cversion:子节点数据更新次数
dataVersion:本节点数据更新次数
pZxid = 0x30000000d 表示当前节点下最后一个被创建的节点的cZxid,见下图
所有的操作都会先通过leader进行,对目录的增删改都会有递增序列号
datalength:字节数长度
ephemeralOwner 当前节点如果是临时节点,则会展示临时节点所属于的sessionid
set    /zs_test/zkzsx  dd 

其实cZxid就是全局节点的递增序列号,从0开始,创建一个递增1,mZxid就是某个节点被修改的递增序列号,pZxid标记当前目录下最后一个被创建的节点
在这里插入图片描述
临时节点和session会话是绑定的,随着session消亡而消亡,单session本身是所有集群机器可见的,即统一视图
在这里插入图片描述
在这里插入图片描述
会话通过leader在集群内共享
在这里插入图片描述
create -s 创建顺序节点
多个客户端同时创建相同节点时,zk会给节点编号,而该节点的值始终以最后一次设置的为准

参看官网:
https://zookeeper.apache.org/doc/current/zookeeperStarted.html
3.zookeeper节点的应用
zk不能拿来当数据库用,场景是分布式协调,配置等
在这里插入图片描述
4.session 没有连接池的概念,每一个连接都有不同的session
watch 客户端先注册要监听的节点状态。同时保存监听器相关信息,当客户端监听的数据状态发生变化时,zk主动通知发送相应事件给客户端,客户端进行回调处理,
watcher一次性触发的特点,通知完一次后,之前的回调函数就失效了,要再监听的话需要重新设置回调,或者默认重新注册默认回调

默认的watcher是session级别的,只要session中有事件发生就会回调,并不与某个集群中具体的机器相关

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值