Zookeeper实现的分布式锁
Zookeeper实现的分布式锁 zookeeper是一个分布式协调中间件,既可以用来做分布式的id还可以用来做配置中心、还有我们接下来要说的分布式锁。 在说分布式锁之前要先介绍一下zookeeper,它是树形结构,每个节点都可以存储值和创建子节点。而zookeeper的节点一共分为四种分别是临时节点,持久化节点,临时有序节点,持久化有序节点。 Zookeeper节点类型 临时节点 顾名思义,临时的节点,有个需要注意的是当客户端与服务端的会话关闭的时候,临时节点就会被自动删除掉 持久化节点 这个跟临时节点的区别就是,就算会话关闭,节点也不会被关闭。 临时有序节点 这个跟临时节点唯一的区别就是,创建的节点是有序的例如上一个节点创建为 /00000000001 ,那下一个节点就是 /00000000002 ,依次递增 持久化有序节点 这个跟临时有序节点的区别也是会话就算关闭,创建的节点也不会被删除掉 分布式锁的实现原理 多个节点需要共享一个数据或文件,节点之间同时竞争获取执行权限,当其中某个节点获取到执行权限以后,另一个就必须等待占有执行权限的执行完成并将执行权限释放出来,只要能满足条件互斥就能实现分布式锁,比如数据库的锁表,唯一索引,Redis的 setnx 函数,还有我们刚才讲的zookeeper的临时有序节点的。 临时节点如何创建分布式锁 我们先看个图,然后根据下面这个图来讲