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

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

分布式锁的定义

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

排他锁

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

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

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