Zookeeper实现分布式锁的法法则
发布时间:2021-06-03 20:24:48 所属栏目:大数据 来源:互联网
导读:Zookeeper 的 ZNode 节点 在了解 Zookeeper 实现分布式锁之前,首先,我们需要了解 Zookeeper 里面节点相关的知识。 Zookeeper 里面的节点可以分为两大类,一种是临时节点,一种是持久化节点。 临时节点,指的是节点创建后,如果创建节点的客户端和 Zookeepe
|
Zookeeper 的 ZNode 节点
在了解 Zookeeper 实现分布式锁之前,首先,我们需要了解 Zookeeper 里面节点相关的知识。
Zookeeper 里面的节点可以分为两大类,一种是临时节点,一种是持久化节点。
临时节点,指的是节点创建后,如果创建节点的客户端和 Zookeeper 服务端的会话失效(例如断开连接),那么节点就会被删除。
持久化节点指的是节点创建后,即使创建节点的客户端和 Zookeeper 服务端的会话失效(例如断开连接),节点也不会被删除,只有客户端主动发起删除节点的请求,节点才会被删除。
另外还有一种节点叫做有序节点,这种节点在创建时会有一个序号,这个序号是自增的。有序节点既可以是有序临时节点,也可以是有序持久化节点。
Zookeeper 中所有的数据都是通过节点来存储的,它的目录结构就像一个文件树,如下图。
Zookeeper结构
图中的 locks、register、data 这几个目录自定义创建的,分别用来存储不同业务的数据,例如 locks 用来存放分布式锁相关的信息,register 用来存放注册中心相关的数据。
现在我们要获取一个分布式的所,那么假设这个锁的 K 叫做 K1,那么现在有一个客户端 a,然后去 JK 里面去创建一个分布式的,所创建 K1 这个分布式锁,那么他就会在 nex 这个目录下面创建一个叫做 K1 的文件夹,叫做 K1 的文件。现在我们要获取一个分布式的所,那么假设这个锁的 K 叫做 K1,那么现在有一个客户端 a,然后去 JK 里面去创建一个分布式的,所创建 K1 这个分布式锁,那么他就会在 nex 这个目录下面创建一个叫做 K1 的文件夹,叫做 K1 的文件。
如何实现
采用 Zookeeper 实现分布式锁,有两种方案:1. 基于临时节点实现;2. 基于临时顺序节点实现。下面以及介绍这种方案的实现原理。
首先,假设所有的分布式锁都存储在 locks 这个目录中。
![]() (编辑:四平站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |

