Zookeeper:Curator

本文涉及的产品
注册配置 MSE Nacos/ZooKeeper,118元/月
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
云原生网关 MSE Higress,422元/月
简介: Curator简介Curator提供了一套Java类库, 可以更容易的使用ZooKeeper。 ZooKeeper本身提供了Java Client的访问类,但是API太底层,不宜使用, 容易出错。 Curator提供了三个组件。 Curator共有四个子项目组成: - Curator client用来替代ZOoKeeper提供的类, 它封装了底层的管理并提供了一些有

Curator简介

Curator提供了一套Java类库, 可以更容易的使用ZooKeeper。 ZooKeeper本身提供了Java Client的访问类,但是API太底层,不宜使用, 容易出错。 Curator提供了三个组件。
Curator共有四个子项目组成:
- Curator client用来替代ZOoKeeper提供的类, 它封装了底层的管理并提供了一些有用的工具;
- Curator framework提供了高级的API来简化ZooKeeper的使用。它增加了很多基于ZooKeeper的特性,帮助管理ZooKeeper的连接以及重试操作;
- Curator Recipes提供了使用ZooKeeper的一些通用的技巧(方法);
- Curator Service Discovery分布式的服务发现和服务管理;
- Curator Test提供了基于ZooKeeper的单元测试工具。

在基本的使用过程中,经常会用到Curator framework,Recipes等。这里分别介绍下这几个库的使用。

Curator frameowrk使用指南

特点

  • 自动化的连接管理:重新建立到ZooKeeper的连接和重试机制;
  • 清理API:简化了原生的ZooKeeper的方法,事件等
    提供了一个现代的流式接口;
  • 提供了Recipes实现,提供Leader Election,Shared Lock,分布式队列,分不死you xian;

依赖库说明

首先看下Curator framework的mvn库,这里使用3.0版本来学习相关内容:

<!-- https://mvnrepository.com/artifact/org.apache.curator/curator-framework -->
<dependency>
    <groupId>org.apache.curator</groupId>
    <artifactId>curator-framework</artifactId>
    <version>3.0.0</version>
</dependency>

使用时注意:

Curator框架通过CuratorFrameworkFactory以工厂模式和builder模式创建CuratorFramework实例。

工厂方法newClient()提供了一个简单方式创建实例。 而Builder提供了更多的参数控制。一旦你创建了一个CuratorFramework实例,你必须调用它的start()启动,在应用退出时调用close()方法关闭.

使用指南

RetryPolicy retryPolicy = new ExponentialBackoffRetry(1000, 3);
CuratorFramework curatorFramework = null;
    try {
        curatorFramework = CuratorFrameworkFactory.newClient("192.168.1.169:2181", retryPolicy);
            curatorFramework.start();
            System.out.println(curatorFramework.getState().toString());
    }
        catch (Exception e) {

    }
        finally {
            CloseableUtils.closeQuietly(curatorFramework);
        }

ZNode的基本操作:

方法 描述
create() 开始创建操作, 可以调用额外的方法(比如方式mode 或者后台执行background) 并在最后调用forPath()指定要操作的ZNode
delete() 开始删除操作. 可以调用额外的方法(版本或者后台处理version or background)并在最后调用forPath()指定要操作的ZNode
checkExists() 开始检查ZNode是否存在的操作. 可以调用额外的方法(监控或者后台处理)并在最后调用forPath()指定要操作的ZNode
getData() 开始获得ZNode节点数据的操作. 可以调用额外的方法(监控、后台处理或者获取状态watch, background or get stat) 并在最后调用forPath()指定要操作的ZNode
setData() 开始设置ZNode节点数据的操作. 可以调用额外的方法(版本或者后台处理) 并在最后调用forPath()指定要操作的ZNode
getChildren() 开始获得ZNode的子节点列表。 以调用额外的方法(监控、后台处理或者获取状态watch, background or get stat) 并在最后调用forPath()指定要操作的ZNode
inTransaction() 开始是原子ZooKeeper事务. 可以复合create, setData, check, and/or delete 等操作然后调用commit()作为一个原子操作提交
transactionOp() 用于allocate operations to be used with transaction().
transaction() 自动提交一个操作集合为一个事物.
getACL() 返回ZNode节点的ACL设置,并在最后调用forPath(),以指定要操作的ZNode节点
setACL() 设置节点的ACL配置,并在最后调用forPath(),以指定需要操作的ZNode节点
getConfig() 获取最后一次提交的配置信息,forEnsemble()
reconfig() 用于重新设置配置信息,可以通过forEnsemble()调用额外的方法

增删改查:

client.create().forPath("/head", new byte[0]);
client.delete().inBackground().forPath("/head");
client.create().withMode(CreateMode.EPHEMERAL_SEQUENTIAL).forPath("/head/child", new byte[0]);
client.getData().watched().inBackground().forPath("/test");

参考资料:
- http://ifeve.com/zookeeper-curato-framework/

参考资料:
- http://curator.apache.org/

相关实践学习
基于MSE实现微服务的全链路灰度
通过本场景的实验操作,您将了解并实现在线业务的微服务全链路灰度能力。
目录
相关文章
|
6月前
|
存储 Java Linux
【Zookeeper】Introduction to Apache Curator
【Zookeeper】Introduction to Apache Curator
132 0
|
6月前
|
存储 缓存 Java
【Zookeeper】Apach Curator 框架源码分析:后台构造器和节点操作相关源码分析(二)【Ver 4.3.0】
【Zookeeper】Apach Curator 框架源码分析:后台构造器和节点操作相关源码分析(二)【Ver 4.3.0】
103 0
|
6月前
|
存储 缓存 Java
【Zookeeper】Apach Curator 框架源码分析:后台构造器和节点操作相关源码分析(二)【Ver 4.3.0】(2)
【Zookeeper】Apach Curator 框架源码分析:后台构造器和节点操作相关源码分析(二)【Ver 4.3.0】
77 0
【Zookeeper】Apach Curator 框架源码分析:后台构造器和节点操作相关源码分析(二)【Ver 4.3.0】(2)
|
3月前
|
Java API Maven
【zookeeper 第五篇章】Curator 库
Curator 是 Netflix 开源的 ZooKeeper 客户端框架,简化了原生 API 的使用并提供了高级功能。可通过 Maven 添加依赖 `curator-framework` 和 `curator-recipes`。示例代码展示了如何创建 Curator 连接、配置重连策略、进行节点的 CRUD 操作以及事务处理等。例如,使用 `ExponentialBackoffRetry` 实现指数退避重试,通过 `create()` 方法创建持久节点,以及利用 `inTransaction()` 启动事务来保证多个操作的原子性。
95 0
|
6月前
|
Java API Apache
ZooKeeper【基础 03】Java 客户端 Apache Curator 基础 API 使用举例(含源代码)
【4月更文挑战第11天】ZooKeeper【基础 03】Java 客户端 Apache Curator 基础 API 使用举例(含源代码)
74 11
|
6月前
|
存储 缓存 Java
【Zookeeper】Apach Curator 框架源码分析:后台构造器和节点操作相关源码分析(二)【Ver 4.3.0】(1)
【Zookeeper】Apach Curator 框架源码分析:后台构造器和节点操作相关源码分析(二)【Ver 4.3.0】
53 0
【Zookeeper】Apach Curator 框架源码分析:后台构造器和节点操作相关源码分析(二)【Ver 4.3.0】(1)
|
6月前
|
缓存 Java 容器
【Zookeeper】Apach Curator 框架源码分析:初始化过程(一)【Ver 4.3.0】(2)
【Zookeeper】Apach Curator 框架源码分析:初始化过程(一)【Ver 4.3.0】
145 0
【Zookeeper】Apach Curator 框架源码分析:初始化过程(一)【Ver 4.3.0】(2)
|
6月前
|
安全 Java API
【Zookeeper】Apach Curator 框架源码分析:初始化过程(一)【Ver 4.3.0】(1)
【Zookeeper】Apach Curator 框架源码分析:初始化过程(一)【Ver 4.3.0】
171 0
【Zookeeper】Apach Curator 框架源码分析:初始化过程(一)【Ver 4.3.0】(1)
|
6月前
|
Java API Apache
ZooKeeper【基础 03】Java 客户端 Apache Curator 基础 API 使用举例(含源代码)
ZooKeeper【基础 03】Java 客户端 Apache Curator 基础 API 使用举例(含源代码)
67 0
|
Java 测试技术 API
【分布式系统】Curator 实现 Zookeeper 分布式锁
【分布式系统】Curator 实现 Zookeeper 分布式锁
127 0
【分布式系统】Curator 实现 Zookeeper 分布式锁