Zookeeper应用场景:实现分布式锁

Zookeeper应用场景:实现分布式锁

分布式锁的定义

分布式锁是用来控制分布式系统之间同步访问共享资源的一种方式。具体来说,分布式系统中,不同系统间与同一系统不同主机之间共享了一个或一组资源,为了保证在访问资源时不相互干扰,就需要使用分布式锁。
实际开发中,小规模系统往往利用数据库本身固有的排他性来实现不同进程之间的互斥,但是这也导致目前分布式系统的性能瓶颈都在数据库操作上,因此在系统设计的时候,上层业务尽量不要给数据库增加不必要的负担。
可以使用Zookpeer实现分布式锁。按照锁的访问特性可以分为排他锁和共享锁。

排他锁

排他锁,又叫写锁,独占锁。如果一个事务对某个数据对象加了排他锁,那么在事务未结束前,只允许该事务对数据进行操作。

  1. 获取锁 ,多个客户端同时调用create()方法尝试在/exclusivelock父节点下创建一个临时节点lock,Zookeeper能够保证只有一个客户端创建成功,创建成功的客户端则获取到了锁,而创建失败的客户端则在该父节点上注册一个watcher监视器,如果子节点列表发生变化就会像注册过的客户端发送通知,客户端就可以再次尝试获取锁;
  2. 释放锁 ,得到锁的客户端如果宕机或者完成自己的业务逻辑,就会断开临时子节点的连接,子节点删除,相当于锁的释放;

排他锁流程图

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值