Zookeeper应用场景实现

一:分布式锁

zookeeper 分布式锁,如果自己实现的话,大抵的实现方式如下:

公平锁

在 zookeeper 的指定节点(locks)下创建临时顺序节点 node_n ;

获取 locks 下面的所有子节点 children。

对子节点按节点自增序号从小到大排序。

判断本节点是不是第一个子节点,如果是,则获取到锁。如果不是,则监听比该节点小的那个节点的删除事件。

若监听事件生效,则回到第二步重新判断,直到获取到锁。

 

非公平锁

在 zookeeper 的某个节点(lock)上创建临时节点 znode。

创建成功,就表示获取到了这个锁;其他客户端来创建锁会失败,只能注册对这个锁的监听。

其他客户端监听到这个锁被释放(znode节点被删除),就会尝试加锁(创建节点),继续执行第二步。

 

zookeeper recipes 客户端为提供了多种分布式锁实现

InterProcessMutex(可重入排他锁)

InterProcessSemaphoreMutex(不可重入排他锁)

InterProcessReadWriteLock(分布式读写锁)

InterProcessSemaphore(共享信号量 —— 设置最大并行数量)

 

 

二:ID生成器

使用ZooKeeper持久顺序节点的次序特性。来维护节点的编号。

这里,我们采用第二种,通过Zo

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值