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

相关推荐
AC赳赳老秦2 天前
财务数据智能解读:DeepSeek分析利润表生成异常波动原因报告
数据库·人工智能·postgresql·zookeeper·测试用例·时序数据库·deepseek
AC赳赳老秦2 天前
企业级人工智能平台选型深度分析:天翼云 DeepSeek 与开源解决方案的部署考量与成本博弈
人工智能·elasticsearch·zookeeper·rabbitmq·github·时序数据库·deepseek
程序员阿鹏3 天前
怎么理解削峰填谷?
java·开发语言·数据结构·spring·zookeeper·rabbitmq·rab
跟着珅聪学java4 天前
ZooKeeper底层原理
zookeeper
A_Gorilla4 天前
zookeeper分布式原理是什么?简单介绍(入门)
zookeeper
川215 天前
ZooKeeper配置+失误
linux·分布式·zookeeper
淡云微晴5 天前
Zookeeper 分布式协调服务
分布式·zookeeper
爬也要爬着前进5 天前
zookeeper迁移k8s
zookeeper·kubernetes·debian
爱学大树锯6 天前
【Zookeeper分布式锁:从原理到实战】
分布式·zookeeper·云原生
富士康质检员张全蛋7 天前
深入理解zookeeper session机制
zookeeper