博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Zoookeeper实现简单的分布锁
阅读量:5833 次
发布时间:2019-06-18

本文共 605 字,大约阅读时间需要 2 分钟。

1、分布式锁的由来

在程序开发过程中不得不考虑的就是并发问题。在java中对于同一个jvm而言,jdk已经提供了lock和同步等。但是在分布式情况下,往往存在多个进程对一些资源产生竞争关系,而这些进程往往在不同的机器上,这个时候jdk中提供的已经不能满足。分布式锁顾明思议就是可以满足分布式情况下的并发锁。

 

2、实现思路(利用zk实现)

 

1.建立一个节点,假如名为:lock 。节点类型为持久节点(PERSISTENT 

2.每当进程需要访问共享资源时,会调用分布式锁的lock()tryLock()方法获得锁,这个时候会在第一步创建的lock节点下建立相应的顺序子节点,节点类型为临时顺序节点(EPHEMERAL_SEQUENTIAL),通过组成特定的名字name+lock+顺序号。 
3.在建立子节点后,对lock下面的所有以name开头的子节点进行排序,判断刚刚建立的子节点顺序号是否是最小的节点,假如是最小节点,则获得该锁对资源进行访问。 
4.假如不是该节点,就获得该节点的上一顺序节点,并给其添加监听事件。同时在这里阻塞。等待监听事件的发生,获得锁控制权。 
5.当调用完共享资源后,调用unlock()方法,关闭zk,进而可以引发监听事件,释放该锁。 
实现的分布式锁是严格的按照顺序访问的并发锁。

 

转载于:https://www.cnblogs.com/yiqi520/p/9392862.html

你可能感兴趣的文章
.net中 Timer定时器
查看>>
幸福人生讲座(二):人生怎样才能幸福?
查看>>
面试总结之Database
查看>>
初识CPU卡、SAM卡/CPU卡简介、SAM卡简介 【转】
查看>>
Uva 10557 - XYZZY(DFS+BFS)
查看>>
团队Git使用教程
查看>>
Zookeeper与Kafka基础概念和原理
查看>>
JQ多行文本溢出省略号插件
查看>>
Apache性能优化总结
查看>>
javascript事件之: 事件冒泡, 事件捕获 ,阻止默认事件
查看>>
RookeyFrame 迁移 线下Model 新增属性 迁移 到数据库
查看>>
[03]CSS 选择器(下)
查看>>
Sql Server多种分页性能的比较
查看>>
nginx对特定参数限流
查看>>
微信资源包混淆
查看>>
mysql 索引
查看>>
Delphi线程同步
查看>>
pyspider 简单应用之快速问医生药品抓取(一)
查看>>
第K大数
查看>>
c#代码技巧
查看>>