• / 36
  • 下载费用:5 金币  

基于Zookeeper的锁开发手册.docx

关 键 词:
基于 ZOOKEEPER 开发 手册
资源描述:
基于 Zookeeper 的锁应用开发手册1基于 Zookeeper 的锁应用开发手册版本 基于 Zookeeper 的锁应用开发手册2修订历史日期 版本 描述 修改人2013-10-25 1.0 基于 Zookeeper 的锁应用开发手册 苏晓辉基于 Zookeeper 的锁应用开发手册3基于 Zookeeper 的锁应用开发手册 ................................................................................................41 概述 ................................................................................................................................................41.1 前言 ................................................................................................................................41.2 目的 ................................................................................................................................41.3 范围 ................................................................................................................................41.4 术语和缩写语 ................................................................................................................42 排他锁 ............................................................................................................................................53 共享锁 ............................................................................................................................................64 数据库锁 ........................................................................................................................................75 总结和展望 ....................................................................................................................................86 附件代码 ........................................................................................................................................97 参考资料 ......................................................................................................................................36基于 Zookeeper 的锁应用开发手册4基于 Zookeeper 的锁应用开发手册1 概述1.1 前言Zookeeper 是 Hadoop 的正式子项目,它是一个针对大型分布式系统的可靠协调系统,提供的功能包括:配置维护、名字服务、分布式同步、组服务等。Zookeeper 的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户。1.2 目的本文档的目的是帮助 PAAS 平台开发人员快速使用锁 API,开发分布式系统中模块之间需要协同执行的相关的应用程序。本文第二、三、四章分别介绍排他锁、共享锁和数据库锁的功能和使用。最后,第五、六、七章给出附件代码、总结及展望和参考资料。1.3 范围本文档适用于 PAAS 系统整个项目周期中对模块之间需要协同执行的应用程序开发的指导和约束。要了解 Zookeeper 的使用详情,参考 Zookeeper3.4.5 官方文档。1.4 术语和缩写语术语 说明Zookeeper Zookeeper 是 Hadoop 的正式子项目,它是一个针对大型分布式系统的可靠协调系统。PAAS Platform-as-a-Service 的缩写,意思是平台即服务。 把服务器平台作为一种服务提供的商业模式。SAAS software-as-a-Service 的缩写。国外称为 SAAS,国内通常叫做软件运营服务模式,简称为软营模式。基于 Zookeeper 的锁应用开发手册52 排他锁排他锁的实现机制是当一个线程获取锁后,另一个线程无法获取该锁,并报出异常,这里的线程可以在不同的 JVM 中;目前支持重入特性,在同一线程中的不同地方(不同的方法中)可以重复获取同一把锁。排他锁的使用场景是当一个线程需要对分布式系统中的某些资源独占,不希望其它线程对该资源进行操作。排他锁使用范例如下代码所示,如果代码 lock.lock()获取锁 key1 锁,则进入独占资源操作代码,否则进入异常处理代码,最后释放锁 lock.close()。MutexLock lock = null;try {lock = new MutexLockImplZooKeeper(“127.0.0.1:2181“, “key1“); lock.lock();//独占资源操作代码} catch (LockException e) {//异常处理代码} finally {try {if(lock!=null) lock.close();} catch (LockException e) {}}基于 Zookeeper 的锁应用开发手册63 共享锁共享锁有读锁和写锁两种状态,共享锁的实现机制是当一个线程获取锁的读状态后,另一个线程也可以获取该锁的读状态,但是另一个线程无法获取该锁的写状态,并抛出异常;当一个线程获取锁的写状态后,另一个线程无法获取该锁,并抛出异常。这里的线程可以在不同的 JVM 中;目前支持重入特性,在同一线程中的不同地方(不同的方法中)可以重复获取同一把锁。共享锁的使用场景是当一个线程需要对分布式系统中的某些资源进行读取操作时,其它线程也可以读取该资源,但是不能进行写操作;当一个线程需要对分布式系统中的某些资源进行写操作时,不希望其它线程对该资源进行操作。共享锁使用范例如下代码所示,如果代码 lock.read()/lock.write()获取锁key1 锁,则进入独占资源操作代码,否则进入异常处理代码,最后释放锁lock.close()。SharedLocklock = null;try {lock = new SharedLockImplZooKeeper (“127.0.0.1:2181“, “key1“); lock.read();//lock.write();//独占资源操作代码} catch (LockException e) {//异常处理代码} finally {try {if(lock!=null) lock.close();} catch (LockException e) {}}基于 Zookeeper 的锁应用开发手册74 数据库锁目前数据库锁支持 4 种标准的数据库隔离等级,包括 Read Uncommit、Read Commit、No Repeating 和 Serialize,目前不支持锁的重入功能。数据库锁的使用场景是需要提供数据库事务 ACID 特性的地方。数据库锁使用范例如下代码所示,如果代码 readLock(“group1“, “table1“)/ writeLock(“group1“, “ table1“, “ID“)获取数据库表锁或行锁,否则进入异常处理代码,最后释放锁 release()。DBLockImplZooKeeper lock = null;try {lock = new DBLockImplZooKeeper(“127.0.0.1:2181“); //or new DBLockImplZooKeeper(“127.0.0.1:2181“, IsolateLevel.READCOMMIT);//or new DBLockImplZooKeeper(“127.0.0.1:2181“, 3, 100, 10000, IsolateLevel.READCOMMIT);l.readLock(“group1“, “table1“);//操作代码l.writeLock(“group1“, “ table1“, “ID“);//操作代码} catch (LockException e) {//异常处理代码} finally {try {if(lock!=null) l.release();} catch (LockException e) {}}基于 Zookeeper 的锁应用开发手册85 总结和展望将来可能还需要实现两阶段关闭(two phase temiate)锁来协同多个模块完成同一个工作,最后各模块要么一起成功,要么一起失败。基于 Zookeeper 的锁应用开发手册96 附件代码SharedLock.java //(c) Copyright Beyond PAAS contributors and others 2013package com.beyond.paas.tool.lock;/*** SharedLock is interface.* @author su xiaohui* @CreateDate 2013-10-18*/public interface SharedLock {/*** To get write lock* @throws LockException*/void write()throws LockException;/*** To get read lock* @throws LockException*/void read()throws LockException;/*** To release lock* @throws LockException*/void close() throws LockException;}SharedLockImplZooKeeper.java//(c) Copyright Beyond PAAS contributors and others 2013package com.beyond.paas.tool.lock;import java.io.IOException;import java.util.ArrayList;import java.util.Collections;import java.util.Comparator;import java.util.HashSet;基于 Zookeeper 的锁应用开发手册10import java.util.List;import java.util.Set;import java.util.UUID;import org.apache.zookeeper.CreateMode;import org.apache.zookeeper.KeeperException;import org.apache.zookeeper.ZooKeeper;import org.apache.zookeeper.ZooDefs.Ids;/*** SharedLockImplZooKeeper is threadSafed, so the class can't be extended and modified. On the other hand, * private and final and synchronized keywords can't be remove and modified by other keywords except to* you are sure that the class is threadSafed. * SharedLockImplZooKeeper provide read-write lock function and support lock's reenter function. * SharedLockImplZooKeeper depends on the zookeeper severs, so you must be sure that zookeeper servers * are work.* usage:SharedLock l = null;try {l = new SharedLock(“127.0.0.1:2181“, “key1“); //or new SharedLock(“127.0.0.1:2181“, “key1“, 3, 100, 10000);...l.write();//or l.read();...} catch (LockException e) {...} finally {try {if(l!=null) l.close();} catch (LockException e) {}
展开阅读全文
1
  金牌文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
0条评论

还可以输入200字符

暂无评论,赶快抢占沙发吧。

关于本文
本文标题:基于Zookeeper的锁开发手册.docx
链接地址:http://www.gold-doc.com/p-256928.html
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服客服 - 联系我们
copyright@ 2014-2018 金牌文库网站版权所有
经营许可证编号:浙ICP备15046084号-3
收起
展开