基于Zookeeper的锁开发手册.docx

基于Zookeeper的锁开发手册.docx

ID:50477279

大小:32.12 KB

页数:36页

时间:2020-03-09

基于Zookeeper的锁开发手册.docx_第1页
基于Zookeeper的锁开发手册.docx_第2页
基于Zookeeper的锁开发手册.docx_第3页
基于Zookeeper的锁开发手册.docx_第4页
基于Zookeeper的锁开发手册.docx_第5页
资源描述:

《基于Zookeeper的锁开发手册.docx》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、基于Zookeeper的锁应用开发手册版本<1.0>修订历史日期版本描述修改人2013-10-251.0基于Zookeeper的锁应用开发手册苏晓辉基于Zookeeper的锁应用开发手册41概述41.1前言41.2目的41.3范围41.4术语和缩写语42排他锁53共享锁64数据库锁75总结和展望86附件代码97参考资料36基于Zookeeper的锁应用开发手册1概述1.1前言Zookeeper是Hadoop的正式子项目,它是一个针对大型分布式系统的可靠协调系统,提供的功能包括:配置维护、名字服

2、务、分布式同步、组服务等。Zookeeper的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户。1.2目的本文档的目的是帮助PAAS平台开发人员快速使用锁API,开发分布式系统中模块之间需要协同执行的相关的应用程序。本文第二、三、四章分别介绍排他锁、共享锁和数据库锁的功能和使用。最后,第五、六、七章给出附件代码、总结及展望和参考资料。1.3范围本文档适用于PAAS系统整个项目周期中对模块之间需要协同执行的应用程序开发的指导和约束。要了解Zookeeper的使用详情,参考

3、Zookeeper3.4.5官方文档。1.4术语和缩写语术语说明ZookeeperZookeeper是Hadoop的正式子项目,它是一个针对大型分布式系统的可靠协调系统。PAASPlatform-as-a-Service的缩写,意思是平台即服务。把服务器平台作为一种服务提供的商业模式。SAASsoftware-as-a-Service的缩写。国外称为SAAS,国内通常叫做软件运营服务模式,简称为软营模式。1排他锁排他锁的实现机制是当一个线程获取锁后,另一个线程无法获取该锁,并报出异常,这里的线程可以在不同的J

4、VM中;目前支持重入特性,在同一线程中的不同地方(不同的方法中)可以重复获取同一把锁。排他锁的使用场景是当一个线程需要对分布式系统中的某些资源独占,不希望其它线程对该资源进行操作。排他锁使用范例如下代码所示,如果代码lock.lock()获取锁key1锁,则进入独占资源操作代码,否则进入异常处理代码,最后释放锁lock.close()。MutexLocklock=null;try{lock=newMutexLockImplZooKeeper("127.0.0.1:2181","key1");lock.lock

5、();//独占资源操作代码}catch(LockExceptione){//异常处理代码}finally{try{if(lock!=null)lock.close();}catch(LockExceptione){}}共享锁共享锁有读锁和写锁两种状态,共享锁的实现机制是当一个线程获取锁的读状态后,另一个线程也可以获取该锁的读状态,但是另一个线程无法获取该锁的写状态,并抛出异常;当一个线程获取锁的写状态后,另一个线程无法获取该锁,并抛出异常。这里的线程可以在不同的JVM中;目前支持重入特性,在同一线程中的不同地

6、方(不同的方法中)可以重复获取同一把锁。共享锁的使用场景是当一个线程需要对分布式系统中的某些资源进行读取操作时,其它线程也可以读取该资源,但是不能进行写操作;当一个线程需要对分布式系统中的某些资源进行写操作时,不希望其它线程对该资源进行操作。共享锁使用范例如下代码所示,如果代码lock.read()/lock.write()获取锁key1锁,则进入独占资源操作代码,否则进入异常处理代码,最后释放锁lock.close()。SharedLocklock=null;try{lock=newSharedLockIm

7、plZooKeeper("127.0.0.1:2181","key1");lock.read();//lock.write();//独占资源操作代码}catch(LockExceptione){//异常处理代码}finally{try{if(lock!=null)lock.close();}catch(LockExceptione){}}1数据库锁目前数据库锁支持4种标准的数据库隔离等级,包括ReadUncommit、ReadCommit、NoRepeating和Serialize,目前不支持锁的重入功能。数

8、据库锁的使用场景是需要提供数据库事务ACID特性的地方。数据库锁使用范例如下代码所示,如果代码readLock("group1","table1")/writeLock("group1","table1","ID")获取数据库表锁或行锁,否则进入异常处理代码,最后释放锁release()。DBLockImplZooKeeperlock=null;try{lock=newDBLockImplZooKe

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。