本文通过zookeeper实现分布式锁,一共有两个版本,分别是curator框架实现,javaapi实现

实现原理

zookeeper实现分布式锁
原理图

实现原理其实很简单,就是利用了zookeeper的临时有序节点实现,其实ID最小的节点获得锁权限,执行完之后,删除节点,其余各点依次获取锁权限,类似于队列FIFO的操作

demo实现:

1、curator实现

zookeeper实现分布式锁
CuratorClientUtils工具类

CuratorClientUtils工具类,负责创建客户端

zookeeper实现分布式锁
锁事件监听器1
zookeeper实现分布式锁
锁事件监听器2

LockWatcher负责监听事件,包括节点的新增,删除,更改

zookeeper实现分布式锁
DistributeLock1属性和构造
zookeeper实现分布式锁
DistributeLock2属性和构造
zookeeper实现分布式锁
DistributeLock3属性和构造

DistributeLock类,分布式锁主要类,实现分布式锁的主要逻辑

zookeeper实现分布式锁
测试代码
zookeeper实现分布式锁
测试结果数据

2、javaAPI实现:

zookeeper实现分布式锁
客户端代码
zookeeper实现分布式锁
分布式锁监听事件
zookeeper实现分布式锁
DistributeLock1
zookeeper实现分布式锁
DistributeLock2
zookeeper实现分布式锁
DistributeLock3

测试方法都相同,在这就不贴了,代码只是逻辑的一个体现,不同框架其实实现底层都差不多,只不过封装模式不太一样而已。

当然实现分布式锁还有别的方法,例如数据库实现,redis实现,总的来说原理都差不多,各有利弊吧,多看看可以举一反三吧

相关文章:

  • 2021-07-23
猜你喜欢
  • 2022-01-26
  • 2021-10-05
  • 2021-07-15
相关资源
相似解决方案