

『互联网架构』软件架构-zookeeper之curator详解(36)
source link: https://idig8.com/2019/03/16/hulianwangjiagouruanjianjiagou-zookeeperzhicuratorxiangjie36/?amp%3Butm_medium=referral
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

为了更好的实现java操作zookeeper服务器,后来出现Curator框架,非常的强大,目前已经是apache的顶级项目,里面提供了更多丰富的操作。例如:session超时重连,主从选举,分布式计数器,分布式锁等适用于各种复杂的zookeeper场景的API封装。
源码:https://github.com/limingios/netFuture/源码/『互联网架构』软件架构-zookeeper之curator详解(36)
官方源码
http://curator.apache.org/
这个跟zkclient的区别是,zkclient就类似mybatis,curator类似hibernate。
- maven依赖
<dependency> <groupId>org.apache.curator</groupId> 基础框架 <artifactId>curator-framework</artifactId> <version></version> </dependency> <dependency> <groupId>org.apache.curator</groupId> <artifactId>curator-recipes</artifactId> 功能 jar 分布式锁、队列等 <version></version> </dependency> <dependency> 客户端重试策略 <groupId>org.apache.curator</groupId> <artifactId>curator-client</artifactId> <version></version> </dependency>
- 使用
Curator 框架提供了一种流式接口,通过 builder 串起来,传递参数都是调方法。
Curator 框架通过 CuratorFrameworkFactory 以工厂模式和 builder 模式创建
CuratorFramework 实例。 CuratorFramework 实例都是线程安全的,你应该在你的应用中共享同一个。
工厂方法 newClient()提供了一个简单方式创建实例。 而 Builder 提供了更多的参数控制。
一旦你创建了一个 CuratorFramework 实例,你必须调用它的 start()启动,在应用退出时调用 close()方法关闭。
- 创建 Curator 连接实例
注意:一个 Zookeeper 集群只需要构造一个 CuratorFramework 实例对象即可。CuratorFramework 使用之前必须先调用client.start();
String address = "localhost:2181"; CuratorFramework client = CuratorFrameworkFactory.newClient(address, new ExponentialBackoffRetry(1000, 3));//重试机制 client.start()
-
CuratorFramework
>提供的方法
事件类型以及事件的方法
Event Type Event Methods CREATE getResultCode() and getPath() DELETE getResultCode() and getPath() EXISTS getResultCode(), getPath() and getStat() GETDATA getResultCode(), getPath(), getStat() and getData() SETDATA getResultCode(), getPath() and getStat() CHILDREN getResultCode(), getPath(), getStat(),getChildren() WATCHED getWatchedEvent监听器
Curator 提供了三种 Watcher(Cache)来监听结点的变化:
* Path Cache
监视一个路径下子结点的创建、删除,以及结点数据的更新。产生的事件会传递给注册的 PathChildrenCacheListener。
- Node Cache
监视一个结点的创建、更新、删除,并将结点的数据缓存在本地。
- Tree Cache
Path Cache 和 Node Cache 的“合体”,监视路径下的创建、更新、删除事件,并缓存路径下所有子结点的数据。
重试机制
Curator 内部实现的几种重试策略:
- ExponentialBackoffRetry:重试指定的次数, 且每一次重试之间停顿的时间逐渐增加.
- RetryNTimes:指定最大重试次数的重试策略
- RetryOneTime:仅重试一次
- RetryUntilElapsed:一直重试直到达到规定的时间
分布式锁
maven引入.用分布式锁或者原子操作、队列等功能需引入
<dependency> <groupId>org.apache.curator</groupId> <artifactId>curator-recipes</artifactId> <version>${version}</version> </dependency>
PS:只是个工具,apache的顶级项目,可以通过源码来学习。在文章上边提供了源码。
>>原创文章,欢迎转载。转载请注明:转载自IT人故事会,谢谢!
>>原文链接地址:上一篇:已是最新文章
Recommend
-
43
-
55
-
38
今天主要是说源码的分析,客户端启动过程的源码分析和服务端启动过程的源码分析。最后在说说zookeeper的运维和总结。源码:https://github.com/limingios/netFuture/源码/『互联网架构』软件架构-zookeeper之源码分析和运维总结(37)...
-
67
README.md Apache Curator
-
25
原创:小姐姐味道(微信公众号ID:xjjdog),欢迎分享,转载请保留出处。 zookeeper不是为高可用性设计的,但它使用 ZAB 协议达...
-
23
Apache Curator是用于Apache ZooKeeper的一个Java客户端库;它包括一个高级API框架和实用程序,使使用Apache ZooKeeper更加容易和可靠。Curator之于ZooKeeper就像Cuava之于Java。
-
7
分布式锁之 Apache Curator InterProcessReadWriteLock 2020-07-22
-
8
How to setup and use zookeeper in scala using Apache Curator Reading Time: 2 minutesIn order to use Zookeeper to manage your project’s configurations across the cluster, first we will setup the zookeeper ensembl...
-
7
ZooKeeper 分布式锁 Curator 源码 02:可重入锁重复加锁和锁释放程序员小航关注发布于: 20 小时前加锁逻辑已经介绍完毕,那当一个线程重复加锁是如何处理的呢?在上一小节中...
-
2
CuratorFramework基本介绍 CuratorFramework是Netflix公司开源的一套Zookeeper客户端框架,它作为一款优秀的ZooKeeper客户端开源工具,主要提供了对客户端到服务的连接管理和连接重试机制,以及一些扩展功能,它解决了很多ZooKeeper客户端非常底层的...
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK