分布式锁保证了对数据的唯一访问,确保多线程数据的正确.
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
相关推荐
zookeeper通过使用curator实现分布式锁来保证数据的一致性。 zookeeper通过使用curator实现分布式锁来保证数据的一致性。
二、ZooKeeper分布式锁机制 接下来我们一起来看看,多客户端获取及释放zk分布式锁的整个流程及背后的原理。 首先大家看看下面的图,如果现在有两个客户端一起要争抢zk上的一把分布式锁,会是个什么场景? 如果大家...
zookeeper 使用 Curator 进行增、删、改、查、监听、分布式锁
通过redisson实现分布式锁 通过curator框架实现共享锁,读写锁 项目下载下载,启动本地redis和zookeeper即可; 代码供大家参考,如有不对的地方希望大家指出来。
4、zookeeper的java三种客户端介绍-Curator(crud、事务操作、监听、分布式计数器、分布式锁) 网址:https://blog.csdn.net/chenwewi520feng/article/details/130288718 zookeeper常用的3种java客户端 zookeeper...
5、zookeeper的java -Curator(服务注册与发现)...该示例会涉及到本专栏下的其他文章,比如:4、zookeeper的java三种客户端介绍-Curator(crud、事务操作、监听、分布式计数器、分布式锁) 等文章,都是在该专栏下的。
Curator zookeeper 实现分布式锁 原理 临时顺序节点 实例代码 关于版本问题 Curator zookeeper 实现分布式锁 原理 每个JVM使用同一个客户端实例,客户端实例对某个方法加锁的时候, zookeeper对应节点下生成一个唯一...
第1章 【开宗明义】纵观全貌 第2章 ZooKeeper之序列化组件源码解析【透视现象,直击本质】 第4章 持久化【高手过招必备】 ...第10章 Zookeeper的分布式锁的实现 第11章 Zookeeper客户端Curator 资料.zip
该代码为zookeeper的zookeeper-branch-3.4.13源码研究;...而且还包含原生方式实现的分布式注册服务中心、两种分布式锁、master领导者选举,重在理解底层的实现原理和机制,希望对小伙伴们能有所帮助。
本文深入探讨了Zookeeper的...此外,还介绍了Zookeeper在分布式环境中的经典应用场景,包括分布式锁和集群模式的特点。文章以其深入浅出的讲解和实用的代码示例,适合希望深入了解Zookeeper集群和客户端应用的开发者。
Nirmata工作流程 基于ZooKeeper和Curator的分布式工作流管理库,可启用分布式任务工作流。 此处有完整详细信息: : 变化 更改日志在这里: :
ares5k-generator java-web代码生成器二进制地址GitHub: : 编码云: : ares5k-zookeeper-distribute-lock是基于curator实现的zookeeper分布式锁Aop注解组件GitHub: : 编码云: : ares5k延迟的承诺消息是兔子MQ...
作业注册中心: 基于Zookeeper和其客户端Curator实现的全局作业注册控制中心。用于注册,控制和协调分布式作业执行。 作业分片: 将一个任务分片成为多个小任务项在多服务器上同时执行。 弹性扩容缩容: 运行中的...
distribute_lock分布式锁:分别实现:redis:jedisredissionspring-data-rediszookeeper:zkclient(暂未实现)curator
4、后端秒杀业务逻辑,基于Redis 或者 Zookeeper 分布式锁,Kafka 或者 Redis 做消息队列,DRDS数据库中间件实现数据的读写分离。 优化思路 1、分流、分流、分流,重要的事情说三遍,再牛逼的机器也抵挡不住高级别的...
nowcoder,swordoffer,以及算法红皮书等语言技术:kotlin,java8函数式,多线程等框架:akka,zookeeper,Disruptor等核心网springboot相关练习球衣封装Spring安全练习基于curator fremework的分布式锁封装hbase...
该项目基于成熟的开源产品Quartz和Zookeeper及其客户端Curator进行二次开发。 ddframe其他模块也有可独立开源的部分,之前当当曾开源过dd-soa的基石模块DubboX。elastic-job和ddframe关系见下图Elastic-Job 主要...
zookeeper的封装的框架,比zookeeper原生的api好用很多,比如分布式事务,分布式计数器等
Apache Curator是用于 (一种分布式协调服务)的Java / JVM客户端库。 Apache Curator包括一个高级API框架和实用程序,使使用Apache ZooKeeper变得更加轻松和可靠。 它还包括针对常见用例和扩展的配方,例如服务...
4、后端秒杀业务逻辑,基于Redis 或者 Zookeeper 分布式锁,Kafka 或者 Redis 做消息队列,DRDS数据库中间件实现数据的读写分离。 优化思路 1、分流、分流、分流,重要的事情说三遍,再牛逼的机器也抵挡不住高级别的...