首页 > 其他分享 >Zookeeper快速使用与详解

Zookeeper快速使用与详解

时间:2023-03-25 16:14:19浏览次数:38  
标签:Zookeeper Watcher 详解 客户端 Znode 快速 节点 分布式

一、Zookeeper简介

1.概念

 Zookeeper是一个开源的分布式协调服务,用于管理大型集群中的资源、配置信息和命名服务等;也是一个高性能的、可靠的、分布式的、开放源代码的协调服务。Zookeeper主要解决分布式应用中的一些数据管理问题,如配置管理、名字服务、集群管理、分布式锁等。

2.核心

 Zookeeper的核心概念有:节点(Node)、Znode、版本(version)、Watcher、ACL等。

  • Zookeeper的节点分为持久节点临时节点。持久节点是一种在Zookeeper上创建的节点,该节点会一直存在于Zookeeper上,直到使用API显示的删除。临时节点则只在客户端连接到Zookeeper上时存在,一旦客户端断开连接,该节点就会自动被删除。

  • Znode是Zookeeper中的基本单元,它是一个包含数据和子节点列表的节点,每个Znode都有一个唯一的路径。每个Znode都可以设置数据和ACL,数据的大小最大为1MB。

  • Zookeeper版本号有三种:版本号(version)、数据版本号(dataVersion)和ACL版本号(aclVersion)。

  • Watcher是Zookeeper的重要特性之一,用于实现分布式环境下的数据订阅和通知。Zookeeper的Watcher机制可以让客户端注册一个Watcher,一旦该节点发生变化,Zookeeper会通知客户端。Zookeeper中Watcher的通知是一次性的,也就是说,一旦通知完成,Watcher就会被删除。同时,Zookeeper也支持设置Watcher的触发类型,包括创建、删除和修改。

  • ACL(Access Control List)是Zookeeper的访问控制机制,它用于控制客户端对Znode的访问权限。在Zookeeper中,ACL是基于节点级别的,通过ACL可以为每个节点设置访问权限,同时还可以设置访问控制的策略。

3.使用场景

 Zookeeper的使用场景包括分布式锁、分布式集群、配置中心、命名服务等,是分布式系统中非常重要的基础设施之一。

二、使用步骤

  1. 下载和安装Zookeeper:从Zookeeper官方网站下载Zookeeper二进制包并解压,然后按照官方文档进行安装配置。

  2. 启动Zookeeper服务器:使用bin目录下的zkServer.sh脚本启动Zookeeper服务器。

  3. 连接Zookeeper服务器:使用Zookeeper提供的命令行客户端连接Zookeeper服务器。

  4. 创建Znode:使用Zookeeper命令行客户端创建Znode节点。

  5. 监听Znode:使用Zookeeper API监听Znode节点变化。

  6. 读取和写入数据:使用Zookeeper API读取和写入Znode节点的数据。

  7. 分布式锁:使用Zookeeper API实现分布式锁。

Zookeeper作为一个分布式协调服务框架,常常用于分布式系统中的服务发现、负载均衡、配置管理等功能的实现。以上是Zookeeper使用步骤的简要介绍,具体实现需要结合具体场景和使用方式进行操作。

三、示例

  1. 引入Zookeeper依赖
<dependency>
    <groupId>org.apache.zookeeper</groupId>
    <artifactId>zookeeper</artifactId>
    <version>3.6.3</version>
</dependency>
  1. 创建Zookeeper客户端连接
ZooKeeper zooKeeper = new ZooKeeper("localhost:2181", 5000, new Watcher() {
    @Override
    public void process(WatchedEvent event) {
        if (event.getState() == Event.KeeperState.SyncConnected) {
            // 连接成功
            System.out.println("Zookeeper connected");
        }
    }
});
  1. 创建Znode节点
String path = "/test";
String data = "hello world";
zooKeeper.create(path, data.getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);
  1. 获取Znode节点数据
byte[] bytes = zooKeeper.getData(path, false, null);
String result = new String(bytes);
System.out.println(result);
  1. 更新Znode节点数据
zooKeeper.setData(path, "new data".getBytes(), -1);

6.删除Znode节点

zooKeeper.delete(path, -1);

上面的示例中,Zookeeper服务器地址为"localhost:2181",具体地址根据实际情况进行替换。

标签:Zookeeper,Watcher,详解,客户端,Znode,快速,节点,分布式
From: https://www.cnblogs.com/arek/p/17254914.html

相关文章

  • java——Zookeeper学习——zk概览转载
    一、ZooKeeper简介ZooKeeper是一个分布式协调服务,提供了诸如数据发布/订阅、负载均衡、命名服务、分布式协调/通知和分布式锁等分布式基础服务。1.1、数据结构ZooKeeper......
  • 【入门】Go语言变量详解
    目录一、变量赋值的几种方式1.1声明单个变量1.2声明多个变量1.3初始化变量1.4变量赋值1.5自动推导类型方式声明变量二、输出输入格式控制2.1输出格式2.1输入格式2.3......
  • linux三剑客之grep详解
    1.什么是Grepgrep(GolobalRegularExpressionprint)是Linux系统中一个强大的文本搜索工具,也是俗称的搜索三兄弟之一,其他两个是awk和sed,grep可以把搜索到的内容打印到屏......
  • 快速掌握 机器学习(Machine Learning) 常用概念术语,常用算法
    1、什么是机器学习?机器学习的概念:传统上如果我们想让计算机工作,我们给它一串指令,然后它遵照这个指令一步步执行下去。有因有果,非常明确。这样的方式计算机是无法执行固定流......
  • 详解shell语法检查模式
    启用verbose调试模式在进入本指导的重点之前,让我们简要地探索下 verbose模式。它可以用-v调试选项来启用,它会告诉 shell 在读取时显示每行。要展示这个如何工作,下......
  • zookeeper集群搭建
    1.zookeeper介绍ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致......
  • ArrayBuffer、Float32Array、Uint8Array 详解
    ArrayBufferArrayBuffer()是一个普通的JavaScript构造函数,可用于在内存中分配特定数量的字节空间。constbuf=newArrayBuffer(16);//在内存中分配16字节alert(buf.......
  • Shell: /dev/null 2>&1详解
    1,可以将/dev/null看作"黑洞".它非常等价于一个只写文件.所有写入它的内容都会永远丢失.而尝试从它那儿读取内容则什么也读不到.然而,/dev/null对命令行和脚本都非常的......
  • OpenHarmony关系型数据库详解[1]
    1概述关系型数据库(RelationalDatabase,以下简称RDB)是一种基于关系模型来管理数据的数据库,是在SQLite基础上提供一套完整的对本地数据库进行管理的机制,为开发者提供无需......
  • CSS - 选择器详解 - 子代、后代选择器详解 - 伪类选择器 - 测试
    @目录测试准备:子代选择器>测试代码:指定id的子代选择器后代选择器(以空格隔开)指定id的后代选择器指定class类的后代选择器多空格后代选择器详解(特别重要)伪类选择......