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

相关推荐
顧棟3 天前
Zookeeper热缩容解析
linux·服务器·zookeeper
Benjamin℡6 天前
Zookeeper(一)搭建单体和集群服务以及Zookeeper客户端
分布式·zookeeper·云原生
二宝哥6 天前
ZooKeeper 3.4.13 单机安装详解
zookeeper
良木生香8 天前
【C++初阶】STL—— Stack & Queue 从入门到精通:容器适配器、迭代器与经典面试题
java·开发语言·c++·算法·zookeeper
李昊哲小课12 天前
spark4 集群安装
大数据·hadoop·zookeeper·spark
2501_9423895517 天前
特斯拉的车辆摄像头每四天为AI训练集采集的数据量
人工智能·hadoop·zookeeper·oracle·时序数据库·memcache
泰克教育官方账号19 天前
泰涨知识 | Shell脚本之一键启动和关闭Zookeeper脚本
分布式·zookeeper·云原生
虚心的百褶裙21 天前
远程调用服务架构设计及zookeeper技术详解(下篇)
分布式·zookeeper·云原生
2301_8011847523 天前
kafka-zookeeper
分布式·zookeeper·kafka
JLWcai202510091 个月前
铸造领域树脂砂轮|金利威多场景解决方案,20 + 配方覆盖全需求
mongodb·zookeeper·eureka·spark·rabbitmq·memcached·storm