Apache Curator 的简单介绍

相关文章:

Zookeeper客户端 原生API、ZKClient和Curator简单介绍: https://blog.csdn.net/xiaojin21cen/article/details/88537916

Curator 说明

官网:http://curator.apache.org/index.html

Apache Curator是Apache ZooKeeper的Java / JVM客户端库,Apache ZooKeeper是一种分布式协调服务。它包括一个高级API框架和实用程序,使Apache ZooKeeper更容易和更可靠。它还包括常见用例和扩展(如服务发现和Java 8异步DSL)的配方。

Curator项目组件 (下载官方源码就可以看到以下组件)

组名名称用途
ClientZookeeper 客户端的封装,用于取代原生的 Zookeeper 客户端, 提供了一些底层处理和相关的工具方法。
Framework简化 Zookeeper 高级功能的使用,并增加了一些新的功能,比如 Zookeeper 集群连接、重试等。
RecipesZookeeper 所有的典型应用场景的实现(除了两阶段提交外) ,该组件依赖 Client 和 Framework 。
包括 监听、各种分布式锁(可重入锁、排他锁、共享锁、信号锁等)、缓存、队列、选举、分布式 atomic(分布式计数器)、分布式Barrier 等等。
Utilities为 Zookeeper 提供的各种工具类。
ErrorsCurator 异常处理, 连接, 恢复等。

Maven依赖

(地址:https://search.maven.org/search?q=org.apache.curator)

GroupID/OrgArtifactID/Name描述
org.apache.curatorcurator-recipes所有典型应用场景。需要依赖client和framework,需设置自动获取依赖。
org.apache.curatorcurator-framework同组件中framework介绍。
org.apache.curatorcurator-client同组件中client介绍。
org.apache.curatorcurator-test包含TestingServer、TestingCluster和一些测试工具。
org.apache.curatorcurator-examples各种使用Curator特性的案例。
org.apache.curatorcurator-x-discovery在framework上构建的服务发现实现。
org.apache.curatorcurator-x-discoveryserver可以和Curator Discovery一起使用的RESTful服务器。
org.apache.curatorcurator-x-rpcCurator framework和recipes非java环境的桥接。

分布式锁实现

<dependency>
	<groupId>org.apache.curator</groupId>
	<artifactId>curator-recipes</artifactId>
	<version>4.1.0</version>
</dependency>
public class Test{

	public static void main(String[] args) {
	    String zkConnectionString = "localhost:2181";
	    RetryPolicy retryPolicy = new ExponentialBackoffRetry(1000, 3);
	    CuratorFramework client = CuratorFrameworkFactory.newClient(zkConnectionString, retryPolicy);
	    client.start();
	
	    try {	    
	        //创建分布式锁, 锁空间的根节点路径为  /curator/lock
	        InterProcessMutex lock = new InterProcessMutex(client, "/curator/lock");
           	if ( lock.acquire(1000, TimeUnit.SECONDS) )  {
                // do some work inside of the critical section here
                System.out.println("do some work inside of the critical section here");
            }	
	    } catch (Exception e) {
	        e.printStackTrace();
	    }finally{
           //完成业务流程, 释放锁
            lock.release();
        }
	}
}

转载: https://blog.csdn.net/belvine/article/details/87610059

  • 1
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值