【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 来接受来 自服务端的响应。

相关推荐
白晨并不是很能熬夜1 天前
【RPC】第 4 篇:服务发现 — Zookeeper + 缓存容错
java·后端·程序人生·缓存·zookeeper·rpc·服务发现
星筏2 天前
深入理解分布式锁:ZooKeeper vs Redis
redis·分布式·zookeeper
Thanks_ks3 天前
分布式系统中的并发控制与分布式锁机制深度剖析
redis·zookeeper·高并发·分布式锁·架构设计·并发控制·分布式系统
千百元3 天前
zookeeper启不来了
linux·zookeeper·debian
ezreal_pan3 天前
Kafka Docker 部署持久化避坑指南:解决重启后 Cluster ID 不匹配问题
分布式·docker·zookeeper·容器·kafka·devops
独隅7 天前
ZooKeeper 基础原理深度解析
分布式·zookeeper·云原生
富士康质检员张全蛋9 天前
ZooKeeper性能调优终 关键配置提升集群吞吐量
zookeeper
IT从业者张某某9 天前
基于Docker的hadoop容器安装zookeeper
hadoop·docker·zookeeper
百结21411 天前
zookeeper+kafka消息队列群集部署
分布式·zookeeper·kafka
白露与泡影11 天前
从零学习Kafka:ZooKeeper vs KRaft
学习·zookeeper·kafka