`
liyonghui160com
  • 浏览: 758599 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

curator实现的zookeeper分布式锁服务

阅读更多

 

 

分布式锁保证了对数据的唯一访问,确保多线程数据的正确.

 

import java.util.concurrent.CountDownLatch;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;

import com.netflix.curator.RetryPolicy;
import com.netflix.curator.framework.CuratorFramework;
import com.netflix.curator.framework.CuratorFrameworkFactory;
import com.netflix.curator.framework.recipes.locks.InterProcessMutex;
import com.netflix.curator.retry.ExponentialBackoffRetry;

public class TestCuratorLock {

 /**
  * @param args
  * @throws InterruptedException
  */
 public static void main(String[] args) throws InterruptedException {
  // TODO Auto-generated method stub

  CountDownLatch latch = new CountDownLatch(5);

  String zookeeperConnectionString = "localhost:2181,localhost:2182,localhost:2183";
  RetryPolicy retryPolicy = new ExponentialBackoffRetry(1000, 3);
  CuratorFramework client = CuratorFrameworkFactory.newClient(zookeeperConnectionString, retryPolicy);
  client.start();
  System.out.println("客户端启动。。。。");
  ExecutorService exec = Executors.newCachedThreadPool();

  for (int i = 0; i < 5; i++) {
   exec.submit(new MyLock("client" + i, client, latch));
  }

  exec.shutdown();
  latch.await();
  System.out.println("所有任务执行完毕");

  client.close();

  System.out.println("客户端关闭。。。。");

 }

 static class MyLock implements Runnable {

  private String name;

  private CuratorFramework client;

  private CountDownLatch latch;

  public MyLock(String name, CuratorFramework client, CountDownLatch latch) {
   this.name = name;
   this.client = client;
   this.latch = latch;
  }

  public String getName() {
   return name;
  }

  public void setName(String name) {
   this.name = name;
  }

  @Override
  public void run() {
   // TODO Auto-generated method stub
   InterProcessMutex lock = new InterProcessMutex(client,"/test_group");
   try {
		while (lock.acquire(120, TimeUnit.SECONDS)) {

			try {
				// do some work inside of the critical section here
				System.out.println("----------" + this.name+ "获得资源----------");
				System.out.println("----------" + this.name+ "正在处理资源----------");
				Thread.sleep(10 * 1000);
				System.out.println("----------" + this.name+ "资源使用完毕----------");
				latch.countDown();
			}
			finally 
			{
				lock.release();
				System.out.println("----------" + this.name+ "释放----------");
			}
			break;
		}
   } catch (Exception e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
   }

  }

 }

}

 

 

 

其他参考文档:

 

http://blog.csdn.net/alivetime/article/details/7101014

 

分享到:
评论

相关推荐

    zk使用curator实现分布式锁

    zookeeper通过使用curator实现分布式锁来保证数据的一致性。 zookeeper通过使用curator实现分布式锁来保证数据的一致性。

    一文彻底理解ZooKeeper分布式锁的实现原理

    二、ZooKeeper分布式锁机制 接下来我们一起来看看,多客户端获取及释放zk分布式锁的整个流程及背后的原理。 首先大家看看下面的图,如果现在有两个客户端一起要争抢zk上的一把分布式锁,会是个什么场景? 如果大家...

    zookeeper 使用 Curator 示例监听、分布式锁

    zookeeper 使用 Curator 进行增、删、改、查、监听、分布式锁

    java分布式锁实现代码

    通过redisson实现分布式锁 通过curator框架实现共享锁,读写锁 项目下载下载,启动本地redis和zookeeper即可; 代码供大家参考,如有不对的地方希望大家指出来。

    4、zookeeper的java三种客户端介绍-Curator(crud、事务操作、监听、分布式计数器、分布式锁)

    4、zookeeper的java三种客户端介绍-Curator(crud、事务操作、监听、分布式计数器、分布式锁) 网址:https://blog.csdn.net/chenwewi520feng/article/details/130288718 zookeeper常用的3种java客户端 zookeeper...

    5、zookeeper的java -Curator(服务注册与发现)

    5、zookeeper的java -Curator(服务注册与发现)...该示例会涉及到本专栏下的其他文章,比如:4、zookeeper的java三种客户端介绍-Curator(crud、事务操作、监听、分布式计数器、分布式锁) 等文章,都是在该专栏下的。

    zookeeperDemo

    Curator zookeeper 实现分布式锁 原理 临时顺序节点 实例代码 关于版本问题 Curator zookeeper 实现分布式锁 原理 每个JVM使用同一个客户端实例,客户端实例对某个方法加锁的时候, zookeeper对应节点下生成一个唯一...

    zookeeper源码分析

    第1章 【开宗明义】纵观全貌 第2章 ZooKeeper之序列化组件源码解析【透视现象,直击本质】 第4章 持久化【高手过招必备】 ...第10章 Zookeeper的分布式锁的实现 第11章 Zookeeper客户端Curator 资料.zip

    zookeeper-branch-3.4.13.7z

    该代码为zookeeper的zookeeper-branch-3.4.13源码研究;...而且还包含原生方式实现的分布式注册服务中心、两种分布式锁、master领导者选举,重在理解底层的实现原理和机制,希望对小伙伴们能有所帮助。

    深入探索Zookeeper:从客户端使用到集群特性的全面指南

    本文深入探讨了Zookeeper的...此外,还介绍了Zookeeper在分布式环境中的经典应用场景,包括分布式锁和集群模式的特点。文章以其深入浅出的讲解和实用的代码示例,适合希望深入了解Zookeeper集群和客户端应用的开发者。

    workflow:基于ZooKeeper和Curator的分布式工作流管理库,可启用分布式任务工作流

    Nirmata工作流程 基于ZooKeeper和Curator的分布式工作流管理库,可启用分布式任务工作流。 此处有完整详细信息: : 变化 更改日志在这里: :

    资源

    ares5k-generator java-web代码生成器二进制地址GitHub: : 编码云: : ares5k-zookeeper-distribute-lock是基于curator实现的zookeeper分布式锁Aop注解组件GitHub: : 编码云: : ares5k延迟的承诺消息是兔子MQ...

    ElasticJob分布式调度解决方案.rar

    作业注册中心: 基于Zookeeper和其客户端Curator实现的全局作业注册控制中心。用于注册,控制和协调分布式作业执行。 作业分片: 将一个任务分片成为多个小任务项在多服务器上同时执行。 弹性扩容缩容: 运行中的...

    distribute_lock:分布式锁

    distribute_lock分布式锁:分别实现:redis:jedisredissionspring-data-rediszookeeper:zkclient(暂未实现)curator

    【spring-boot-seckill分布式秒杀系统 v1.0】从0到1构建的java秒杀系统源码+安装说明

    4、后端秒杀业务逻辑,基于Redis 或者 Zookeeper 分布式锁,Kafka 或者 Redis 做消息队列,DRDS数据库中间件实现数据的读写分离。 优化思路 1、分流、分流、分流,重要的事情说三遍,再牛逼的机器也抵挡不住高级别的...

    java_learning_practice:java进阶之路:面试高频算法,akka,多线程,NIO,Netty,SpringBoot,Spark && Flink等

    nowcoder,swordoffer,以及算法红皮书等语言技术:kotlin,java8函数式,多线程等框架:akka,zookeeper,Disruptor等核心网springboot相关练习球衣封装Spring安全练习基于curator fremework的分布式锁封装hbase...

    当当网开源的分布式作业调度组件 Elastic-Job.zip

    该项目基于成熟的开源产品Quartz和Zookeeper及其客户端Curator进行二次开发。 ddframe其他模块也有可独立开源的部分,之前当当曾开源过dd-soa的基石模块DubboX。elastic-job和ddframe关系见下图Elastic-Job 主要...

    curator-client-2.4.2.jar

    zookeeper的封装的框架,比zookeeper原生的api好用很多,比如分布式事务,分布式计数器等

    策展人:Apache Curator

    Apache Curator是用于 (一种分布式协调服务)的Java / JVM客户端库。 Apache Curator包括一个高级API框架和实用程序,使使用Apache ZooKeeper变得更加轻松和可靠。 它还包括针对常见用例和扩展的配方,例如服务...

    spring-boot-seckill分布式秒杀系统-其他

    4、后端秒杀业务逻辑,基于Redis 或者 Zookeeper 分布式锁,Kafka 或者 Redis 做消息队列,DRDS数据库中间件实现数据的读写分离。 优化思路 1、分流、分流、分流,重要的事情说三遍,再牛逼的机器也抵挡不住高级别的...

Global site tag (gtag.js) - Google Analytics