学习笔记-Zookeeper

Zookeeper是一种分布式协调框架,提供统一命名服务、状态同步、集群管理和分布式配置。它采用文件系统数据结构和事件监听机制。在实战中,通过zkServer.sh和zkcli.sh进行操作。Zookeeper的锁机制包括非公平锁和公平锁,用于解决分布式环境下的数据一致性问题。相比redis,Zookeeper在可靠性上更优,但在性能上可能逊色。在确保读写并发一致性时,共享锁是一个关键机制。

一、什么是Zookeeper

分布式协调框架:统一命名服务、状态同步服务、集群管理、分布式配置项

1、文件系统数据结构

znode(目录节点)

 2、事件监听机制

可以对节点进行监听

二、zookeeper实战

启动 zkServer.sh

启动客户端 zkcli.sh  (默认端口2181)

常用命令

基础增删,设值、取值

create /test    默认是持久化节点

 delete /test

set /test  abc

get /test 

create -e /ephemeral   

-s 顺序节点 会自动累加

-e 临时节点 无法创建子节点

-c 容器节点  一个周期内被删除

-t 需要修改配置文件开启,否则不能用。

监听

ls -w /test 监听节点,但是是一次性的。

ls -R -w /test 监听整个节点树,每个节点监听一次,一旦触发就失效

权限控制ACL

 c-create w-write r-read d-delete a

集群

锁机制

分布式锁

单进程锁 java: synchronized / lock 

分布式锁特点:独占性 

1、非公平锁:

当A拿到锁,其余所有人在等待锁的释放。A释放了,通知其他人,B拿到锁后,剩下人又在等待

这就是惊群效应,会给zk带了压力

 2、公平锁

先来后到

直接用curator连接zk, 提供了公平锁。

1、父节点是容器节点

2、子节点是临时顺序节点

3、共享锁

解决读写不一致

写的锁前,不可以有写或者读的请求。监听前面一个节点,不管是读还是写

读的锁前,不可以有写的请求,可以有读的请求。代码实现,监听最近的写节点

 redis锁和zk锁的区别

1、redis不管是哨兵还是集群模式,都是主从节点的。主节点写入成功即成功。

2、zk是leader和follower模式,半数以上写成功,才算写成功。

ZOOKEEPER的可靠性比redis的好

但是,性能可定是redis好。

读写并发不一致情况,如何保证数据一致性?

共享锁

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值