【zookeeper经典应用实战】

文章目录

    • Zookeeper主要方法
  1. Zookeeper Java客户端实战
    ZooKeeper应用的开发主要通过Java客户端API去连接和操作ZooKeeper集群。可供选择的Java客户
    端API有:
    ZooKeeper官方的Java客户端API。
    第三方的Java客户端API,比如Curator。
    ZooKeeper官方的客户端API提供了基本的操作。例如,创建会话、创建节点、读取节点、更新数据、
    删除节点和检查节点是否存在等。不过,对于实际开发来说,ZooKeeper官方API有一些不足之处,具
    体如下:
    ZooKeeper的Watcher监测是一次性的,每次触发之后都需要重新进行注册。
    会话超时之后没有实现重连机制。
    异常处理烦琐,ZooKeeper提供了很多异常,对于开发人员来说可能根本不知道应该如何处理这些抛出的异常。
    仅提供了简单的byte[]数组类型的接口,没有提供Java POJO级别的序列化数据处理接口。
    创建节点时如果抛出异常,需要自行检查节点是否存在。
    无法实现级联删除。
    总之,ZooKeeper官方API功能比较简单,在实际开发过程中比较笨重,一般不推荐使用。

ZooKeeper原生客户端主要使用org.apache.zookeeper.ZooKeeper这个类来使用ZooKeeper服务。

ZooKeeper常用构造器

1 ZooKeeper (connectString, sessionTimeout, watcher)

connectString:使用逗号分隔的列表,每个ZooKeeper节点是一个host.port对,host 是机器名或者IP地址,

port是ZooKeeper节点对客户端提供服务的端口号。客户端会任意选取connectString 中的一个节点建立连接。

sessionTimeout : session timeout时间。

watcher:用于接收到来自ZooKeeper集群的事件。

使用 zookeeper 原生 API,连接zookeeper集群

Zookeeper主要方法

create(path, data, acl,createMode): 创建一个给定路径的 znode,并在 znode 保存 data[]的 数据,

createMode指定 znode 的类型。

delete(path, version):如果给定 path 上的 znode 的版本和给定的 version 匹配, 删除 znode。

exists(path, watch):判断给定 path 上的 znode 是否存在,并在 znode 设置一个 watch。

getData(path, watch):返回给定 path 上的 znode 数据,并在 znode 设置一个 watch。

setData(path, data, version):如果给定 path 上的 znode 的版本和给定的 version 匹配,设置 znode 数据。

getChildren(path, watch):返回给定 path 上的 znode 的孩子 znode 名字,并在 znode 设置一个 watch。

sync(path):把客户端 session 连接节点和 leader 节点进行同步。

方法特点:

所有获取 znode 数据的 API 都可以设置一个 watch 用来监控 znode 的变化。

所有更新 znode 数据的 API 都有两个版本: 无条件更新版本和条件更新版本。如果 version 为 -1,更新为无条

件更新。否则只有给定的 version 和 znode 当前的 version 一样,才会进行更新,这样的更新是条件更新。

所有的方法都有同步和异步两个版本。同步版本的方法发送请求给 ZooKeeper 并等待服务器的响 应。异步版本

把请求放入客户端的请求队列,然后马上返回。异步版本通过 callback 来接受来 自服务端的响应。

相关推荐
东阳马生架构4 小时前
zk基础—4.zk实现分布式功能
zookeeper
东阳马生架构10 小时前
zk基础—3.集群与核心参数一
zookeeper
java技术小馆16 小时前
Zookeeper中的Zxid是如何设计的
java·分布式·zookeeper·云原生
东阳马生架构1 天前
zk基础—3.集群与核心参数
zookeeper
纪元A梦1 天前
分布式锁算法——基于ZooKeeper的分布式锁全面解析
java·分布式·算法·zookeeper
拾荒的小海螺1 天前
JAVA:使用 Curator 进行 ZooKeeper 操作的技术指南
java·zookeeper·java-zookeeper
东阳马生架构2 天前
zk基础—1.一致性原理和算法二
zookeeper·分布式原理
东阳马生架构2 天前
zk基础—2.架构原理和使用场景
zookeeper