zookepper分布式锁

1.数据库

性能差

2.redis

可能出现死锁

3.zookeeper

功能:zk存储,读取数据;数据节点监听服务,临时节点跟客户端断开数据丢失;持久节点跟客户端断开数据还在

两种方式:

1.创建临时节点,创建成功获得锁,创建同名则报错,监听lock节点的删除事件,加锁线程执行完业务逻辑解锁删除临时节点,则触发删除事件,则重新去获得锁

2.创建临时有序节点,只需要监听一个,所以性能好,但是资源占用多

trylock:创建临时有序节点,获取临时节点集合并排序,判断自己是不是最小的节点,是则加锁成功;否则获得前边的节点监听其删除事件,前边节点删除时,则重新trylock

unlock:释放锁就是删除节点或者客户端断开

第一种:

zookepper分布式锁_第1张图片

 

zookepper分布式锁_第2张图片

 

zookepper分布式锁_第3张图片

 

zookepper分布式锁_第4张图片

 

zookepper分布式锁_第5张图片

第二种:

zookepper分布式锁_第6张图片

 

zookepper分布式锁_第7张图片

 

zookepper分布式锁_第8张图片

 

zookepper分布式锁_第9张图片

 

zookepper分布式锁_第10张图片

 

 

 

你可能感兴趣的:(并发编程,zookeeper,java)