当前位置: 首页 > news >正文

代理公司注册长春网站优化哪家好

代理公司注册,长春网站优化哪家好,江苏建设人才考试网二建,外链网址全局锁是控制全局系统之间同步访问共享资源的一种方式。 下面介绍zookeeper如何实现全民锁,讲解他锁和共享锁两类全民锁。 排他锁 排他锁(Exclusive Locks),又被称为写锁或独占锁,如果事务T1对数据对象O1加上排他锁…

全局锁是控制全局系统之间同步访问共享资源的一种方式。

下面介绍zookeeper如何实现全民锁,讲解他锁和共享锁两类全民锁。

排他锁

排他锁(Exclusive Locks),又被称为写锁或独占锁,如果事务T1对数据对象O1加上排他锁,那么整个加锁期间,只允许事务T1对O1进行和读取更新操作,其他事务都不能进行读或写。

定义锁:

/exclusive_lock/lock

实现方式:

利用zookeeper的同级节点的唯一性特性,在需要获取排他锁时,所有的客户端尝试通过调用create()接口,在/exclusive_lock节点下创建临时子节点/exclusive_lock/lock,最终只有一个客户端能力创建成功,那么此客户端就获得了一轮锁。同时,所有没有获取到锁的客户端可以在/exclusive_lock节点上注册一个子节点变更的watcher监听事件,以便重新争取获得锁。

共享锁

共享锁(Shared Locks),约定读锁。如果事务T1对数据对象O1加上了共享锁,那么当前事务只能对O1读取进行操作,事务也只能对这个数据对象其他数据对象加共享锁,直到该数据对象上的所有共享锁都释放。

定义锁:

/shared_lock/[hostname]-请求类型W/R-序号

实现方式:

1、客户端调用create方法创建类似定义锁定方式的临时顺序节点。

2、客户端调用 getChildren 接口来获取所有已创建的子节点列表。

3、判断是否获得锁,对于读请求如果所有比自己小子节点都是读请求或者没有比自己序号小子节点,表明已经成功获取共享锁,同时开始执行度逻辑。对于写请求,如果自己不是序号最小的子节点,那么就进入等待。

4、如果没有获取到共享锁,读请求向比自己序号小最后一个节点注册watcher监听,写请求向比自己序号小最后一个节点注册watcher监听。

实际开发过程中,可以通过curator工具包封装的API帮助我们实现全球锁。

<dependency><groupId>org.apache.curator</groupId><artifactId>curator-recipes</artifactId><version>x.x.x</version>
</dependency>

策展人的几种锁方案:

  • 1、InterProcessMutex:多重可重入排锁
  • 2、InterProcessSemaphoreMutex:遍布它锁
  • 3、InterProcessReadWriteLock:全局读写锁

下面的例子模拟50个线程使用重入排它锁InterProcessMutex同时争抢锁:

public class InterprocessLock {public static void main(String[] args)  {CuratorFramework zkClient = getZkClient();String lockPath = "/lock";InterProcessMutex lock = new InterProcessMutex(zkClient, lockPath);//模拟50个线程抢锁for (int i = 0; i < 50; i++) {new Thread(new TestThread(i, lock)).start();}}static class TestThread implements Runnable {private Integer threadFlag;private InterProcessMutex lock;public TestThread(Integer threadFlag, InterProcessMutex lock) {this.threadFlag = threadFlag;this.lock = lock;}@Overridepublic void run() {try {lock.acquire();System.out.println("第"+threadFlag+"线程获取到了锁");//等到1秒后释放锁Thread.sleep(1000);} catch (Exception e) {e.printStackTrace();}finally {try {lock.release();} catch (Exception e) {e.printStackTrace();}}}}private static CuratorFramework getZkClient() {String zkServerAddress = "192.168.3.39:2181";ExponentialBackoffRetry retryPolicy = new ExponentialBackoffRetry(1000, 3, 5000);CuratorFramework zkClient = CuratorFrameworkFactory.builder().connectString(zkServerAddress).sessionTimeoutMs(5000).connectionTimeoutMs(5000).retryPolicy(retryPolicy).build();zkClient.start();return zkClient;}
}

控制台每间隔一个工作站输出一条记录:

希望你也学会了,更多编程源码模板请来二当家的素材网:https://www.erdangjiade.com

http://www.yayakq.cn/news/779501/

相关文章:

  • 个人建什么样的网站好做网站难度
  • 手机网站flash2345网址导航网址
  • wordpress搭建下载站昆明百度搜索排名优化
  • 婚恋网站建设成本网站空间免
  • 成都网站建设空间番禺网站建设方案
  • 国家优质校建设网站建网站哪家好案例
  • 深圳网站设计公司费用多少从化区城郊街道网站麻二村生态建设
  • 网站开发可以用哪些语言成都哪里好玩儿的地方推荐
  • 专业网页制作与网站设计怎么查找网站的根目录
  • vue做的网站多么手机移动端网站是什么
  • 安做省民改厅网站fusion做电影网站卡死
  • 网站制作流程详解(学做网站第一步)做网站项目后台的
  • 游戏网站建设方案深圳网站设计x程序
  • 海南茶叶网站建设精品资料网文件下载
  • 凡科网多页网站怎样做镇江网站设计哪家好
  • 购物网站 服务器 带宽 多大公司网站建设申请报告
  • 中小企业网站的建设实践报告网站技术维护费
  • 现在做一个网站多少钱凡科做网站技巧
  • 南京网站建设小程序开发 雷仁网络浏览器怎么取消2345网址导航
  • wordpress可以企业网站编程线上课程哪个机构好一些
  • 做个外贸网站响应式布局怎么实现
  • 站长工具seo下载沈阳市城市建设管理局网站
  • 网站建设服务器主板1150针注册网站需要实名认证吗
  • 建设电商网站多少钱东莞网络营销网络推广软件
  • 网站的建设与颜色搭配wordpress 零售电商
  • 纺织品做外贸一般在哪个网站上捷讯官网 网站建设
  • 天津红桥网站建设北京网站建设公司册
  • 优质网站建设报价安阳贴吧黄一
  • 网站公司做网站网站怎么做qq登录界面
  • 大兴网站建设多少钱宁波信誉好全网seo优化