Zookeeper 客户端 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项目组件 (下载官方源码就可以看到以下组件)

组名名称 用途
Recipes Zookeeper典型应用场景的实现,这些实现是基于Curator Framework。
Framework Zookeeper API的高层封装,大大简化Zookeeper客户端编程,添加了例如Zookeeper连接管理、重试机制等。
Utilities 为Zookeeper提供的各种实用程序。
Client Zookeeper client的封装,用于取代原生的Zookeeper客户端(ZooKeeper类),提供一些非常有用的客户端特性。
Errors Curator如何处理错误,连接问题,可恢复的例外等。

Maven依赖

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

GroupID/Org ArtifactID/Name 描述
org.apache.curator curator-recipes 所有典型应用场景。需要依赖client和framework,需设置自动获取依赖。
org.apache.curator curator-framework 同组件中framework介绍。
org.apache.curator curator-client 同组件中client介绍。
org.apache.curator curator-test 包含TestingServer、TestingCluster和一些测试工具。
org.apache.curator curator-examples 各种使用Curator特性的案例。
org.apache.curator curator-x-discovery 在framework上构建的服务发现实现。
org.apache.curator curator-x-discoveryserver 可以和Curator Discovery一起使用的RESTful服务器。
org.apache.curator curator-x-rpc Curator 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) )  {
	            try {
	                // do some work inside of the critical section here
	                System.out.println("do some work inside of the critical section here");
	            }finally{
	                //完成业务流程, 释放锁
	                lock.release();
	            }
	        }
	
	    } catch (Exception e) {
	        e.printStackTrace();
	    }
	}
}

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

猜你喜欢

转载自blog.csdn.net/xiaojin21cen/article/details/88538102