Zookeeper

Zookeeper开源的分布式协同服务系统
应用场景:配置管理,DNS服务,组成员管理,各种分布式锁,zookeeper适用于存储和协同相关的关键数据,不适合用于大数据量的存储
zookeeper的层次模型称作data tree,data tree的每个节点叫做znode,每个节点都可以保存数据,每个节点都有一个版本从0开始,分为临时节点和持久几点
安装zk 要求jdk1.7以上,创建conf/zoo.cfg,配置环境变量
export ZOOKEEPER_HOME="$ HOME/tools/apche-zookeeper-bin"
export PATH="$ ZOOKEEPER_HOME/bin:$ PATH"
zoo.cfg最重要的三个配置项
clientport:zk对客户端提供服务的接口
dataDir:用来保存快照文件的目录,如果没有配置datalogDir,事务日志文件也会保存到这个目录
datalogDir:用来保存事务日志文件的目录
使用zkCli,create -e /lock创建临时节点lock,stat -w /lock监控该节点等待锁释放
znode名字的后缀数字表示了对应队列元素在队列中的位置,znode名字后缀数字越小,对应队列元素在队列中的位置越靠前,offer方法在队列下面创建一个顺序znode,element方法,remove方法
Zookeeper分布式锁设计
使用临时顺序节点znode来表示获取锁请求
创建最小后缀数字znode的用户成功拿到锁
避免羊群效应
把锁请求者按照后缀数字进行排队,后缀数字小的锁请求者先获取锁,如果所有的锁请求者都watch锁持有者,当代表锁持有者的znode节点被删除之后,所有的锁请求都会被通知到,但却只有一个锁请求者能拿到锁,这就是羊群效应
为了避免羊群效应,每个锁请求者应该watch它前面的锁请求者,每次锁被释放之后,只会有一个锁请求者被通知到,这样做让锁的分配具有公平性,锁定的分配遵循先到先得的原则
Zookeeper选举设计
使用临时顺序,znode用来表示选举请求,创建最小后缀数字znode的选举请求成功,在协同设计上和分布式锁是一样的,不同之处在于具体实现,不同于分布式锁选举的具体实现对选举的各个阶段做了监控
Apache Curator是Apache Zookeeper的客户端库,简化zookeeper客户端的使用,最初是Netflix研发

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值