详解zookeeper安装使用

目录

1.概述

1.1.功能

1.2.特点

1.3.数据结构

2.安装

2.1.Windows

2.2.Linux

3.基础操作

3.1.增

3.2.删

3.3.改

3.4.查

3.5.监听

4.JAVA操作Zookeeper

4.1.依赖

4.2.客户端

4.3.增

4.4.删

4.5.查

4.6.改


1.概述

1.1.功能

zookeeper,Apache旗下一款分布式服务的协调、管理组件。主要有两个功能:

  • 存储
  • 通知

1.存储

zookeeper的存储,类似数据库,用来存放数据,其中存放的是一些数量不大但是很重要、全局都需要的信息,比如可以用来当做注册中心、存放各个服务的信息。

2.通知

客户端向zookeeper服务器进行注册,声明自己想要观察该zookeeper server的何种信息,成为该zookeeper server的观察者,一旦所要观察的信息有变化,zookeeper会向注册在案的该信息对应的观察者发送通知。

1.2.特点

zookeeper有两大特点:

  • CP,强一致性、分区容错性。
  • 自带负载均衡,每次对集群中的访问会自动映射到当前负载最小的节点上去。

1.3.数据结构

zookeeper的数据模型结构与Unix文件系统很类似,是一棵树,每个节点称为znode,每一个znode默认能存储1MB数据,每个znode通过唯一路径标识。

2.安装

2.1.Windows

下载:

直接在官网上下载压缩包,解压即可。

启动:

指令脚本在安装目录下的bin目录下,Windows的启动脚本是zkServer.cmd

启动会报错,因为缺少配置文件:

zookeeper启动时去config目录下扫描的配置文件名为zoo.cfg,而该目录下默认下载安装后只有一个zoo_sample.cfg,这是zookeeper官方给出的一个配置文件模板,可以直接将其改名为zoo.cfg即可正常启动zookeeper。

启动客户端:

启动zookeeper服务器后,启动客户端即可在客户端中使用指令来操作zookeeper。

2.2.Linux

Linux的配置文件示例:

tickTime:心跳时间,沟通间隔,单位,心跳个数。

initLimit:服务器启动时的同步阶段耗时,单位,心跳个数。

syncLimit:从发出一个通知到收到响应的等待时间,单位,心跳个数。

server.编号:集群配置,集群中编号唯一,与数据目录下的myid中的值对齐。

节点IP:通信端口:选举端口;服务端口。

3.基础操作

3.1.增

不能创建空节点,只能创建带数据的节点。

 

 

-e  -s  可以混用,创建有序的临时节点。

3.2.删

3.3.改

3.4.查

查数据:

 查状态:

  • cZxid: 这是导致创建znode更改的事务ID.
  • mZxid :这是最后修改znode更改的事务ID.
  • oZxid:这是用于添加或删除了节点的znode更改的事务ID。
  • ctime: 表示从1970-01-01T00:00:00Z开始以毫秒为单位的znode创建时间
  • mtime: 表示从1970-01-01T00:00:00Z开始以毫秒为单位的znode最近修改时间。
  • dataVersion: 表示对该znode的数据所做的更改次数
  • cversion: 这表示对此znode的了节点进行的更改次数
  • acIVersion: 表示对此znode的ACL进行更改的次数ephemeralOwner:如果znode是ephemera类型节点,则这是node所有者的 session D,如果ode不是ephemera#点,则该字段设置为零。
  • dataLength: 这是znode数据字段的长度
  • numChildren: 这表示znode的子节点的数量

3.5.监听

watch,监听机制, zookeeper通知功能的落地实现,Zookeeper 中非常重要的特性,我们基于 zookeeper 上创建的节点,可以对这些节点绑定监听事件。比如可以监听节点数据变更、节点变更、状态变更等事件,通过这个事件机制,可以实现基于 zookeeper的分布式锁、集群管理等功能。

当数据发生变化的时候, zookeeper 会产生一个 watcher 事件,并且会发送到客户端。但是客户端只会收到一次通知。如果后续这个节点再次发生变化,那么之前设置 watcher 的客户端不会再次收到消息(watcher 是一次性的操作),可以通过循环监听去达到永久监听效果 。

ls  路径 watch   监听该路径下子节点的变化

get  路径  watch  监听该路径下数据的变化

4.JAVA操作Zookeeper

4.1.依赖

版本号,自己确定一下,这里博主用的3.5.8而已:

<dependency><groupId>org.apache.zookeeper</groupId><artifactId>zookeeper</artifactId><version>3.5.8</version>
</dependency>

4.2.客户端

构造函数有三个参数:

  • 连接地址,zookeeper的IP地址
  • 会话超时时间,超过此时间server没有收到client的心跳会断开会话,清理该会话的临时数据。
  • watch通知,watch的数据有变的时候返回的通知。

4.3.增

三个参数:

  • path:路径

  • data:数据

  • ACL机制:使用zookeeper API中自带的枚举类CreateMode:创建临时节点还是永久节点(-e  还是  -s),使用zookeeper API中自带的枚举类

4.4.删

zooKeeper.delete(znodePath, -1);

在 ZooKeeper 中,当删除一个 znode(节点)时,需要传递一个版本号作为版本检查的条件。这个版本号用来确保在删除操作执行时,znode 的版本和指定的版本号是一致的。如果版本号不匹配,删除操作将会失败。

在删除方法 zooKeeper.delete(znodePath, version) 中,第二个参数 version 是用来指定要删除的 znode 的版本号。当 version 参数设置为 -1 时,表示不执行版本检查,即忽略 znode 的版本,直接删除该 znode。这意味着无论 znode 的版本是什么,都会被删除。

4.5.查

查节点:

查数据:

查状态:

 

4.6.改

version,版本号,要与dataVersion严格对齐,

可以查状态获得版本号,

修改成功后dataVersion会自加1。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/11332.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

pdf转换word软件哪个好?式?这款软件帮你轻松实现转换

在工作中&#xff0c;我们常常遇到这样的情况&#xff1a;我们的文件可能是PDF格式的&#xff0c;但对方要求我们以Word形式发送&#xff0c;因为Word相对于PDF占用更小的内存&#xff0c;打开更方便&#xff0c;发送时间更短。这时我们需要将PDF转换为Word格式&#xff0c;然而…

【跨代码仓库合并方案】

1、背景&#xff1a; 1、wiser绑定的uiidA的定制修改内容和ELKO绑定的uiidB基本是一样的&#xff0c;需要手动粘贴同步&#xff0c;增加测试保障风险&#xff0c;还会浪费开发资源投入&#xff1b; 2、施耐德wiser和elko面板两套面板基本一致&#xff0c;但是经过new art升级后…

机器学习深度学习——感知机

&#x1f468;‍&#x1f393;作者简介&#xff1a;一位即将上大四&#xff0c;正专攻机器学习的保研er &#x1f30c;上期文章&#xff1a;机器学习&&深度学习——softmax回归的简洁实现 &#x1f4da;订阅专栏&#xff1a;机器学习&&深度学习 希望文章对你们…

市面上的ipad国产触控笔怎么样?精选的性价比电容笔

要知道&#xff0c;真正的苹果品牌的那款原装电容笔&#xff0c;光是一支电容笔就价格近千元。实际上&#xff0c;平替电容笔对没有太多预算的用户是个不错的选择。一支苹果品牌的电容笔&#xff0c;价格是平替品牌的四倍&#xff0c;但电容笔的书写效果&#xff0c;却丝毫不逊…

科技云报道:是时候全员FinOps了吗?

科技云报道原创。 在论坛上&#xff0c;国外某企业的真实案例引发了热议。一开始该企业只顾技术创新&#xff0c;积极上云&#xff0c;不顾成本。 直到有一天&#xff0c;高层介入喊停&#xff1a;“这个云不能再上了&#xff0c;成本已经远大于收益了”。该企业因为成本失控…

java-day01

一&#xff1a;基础常识 软件&#xff1a;按照特定顺序的计算机数据与指令的集合。可分为系统软件&#xff08;如操作系统&#xff09;和应用软件&#xff08;如QQ&#xff09; 人机交互方式&#xff1a;图形化界面&#xff08;GUI&#xff09;与命令行&#xff08;CLI&#…

性能优化 - 前端性能监控和性能指标计算方式

性能优化 - 前端性能监控和性能指标计算方式 前言一. 性能指标介绍1.1 单一指标介绍1.2 指标计算① Redirect(重定向耗时)② AppCache(应用程序缓存的DNS解析)③ DNS(DNS解析耗时)④ TCP(TCP连接耗时)⑤ TTFB(请求响应耗时)⑥ Trans(内容传输耗时)⑦ DOM(DOM解析耗时) 1.3 FP(f…

代码随想录算法训练营第二天| 977

977. 有序数组的平方y 思路&#xff0c;原数组是有序的&#xff0c;但是因为负数平方后可能变无序了&#xff0c;因此利用双指针遍历原数组&#xff0c;比较 nums[left]*nums[left]和nums[right]*nums[right]谁更大&#xff0c;然后对新数组赋值 class Solution {public int…

MFC第二十四天 使用GDI对象画笔和画刷来开发控件(分页控件选择态的算法分析、使用CToolTipCtrl开发动静态提示)

文章目录 GDI对象画笔和画刷来开发控件梯形边框的按钮控件CMainDlg.hCMainDlg.cppCLadderCtrl.hCLadderCtrl.cpp 矩形边框的三态按钮控件 CToolTipCtrl开发动静态提示CMainDlg.hCMainDlg.cppCLadderCtrl.hCLadderCtrl.cpp: 实现文件 矩形边框的三态按钮控件 CToolTipCtrl开发动…

欢乐暑假,华为儿童手表5系列为孩子位置安全保驾护航!

暑假带娃&#xff0c;就像爸妈的练兵场。幸好有 5 系列&#xff0c;离线定位、位置提醒、行为记录等安全守护功能面面俱到、样样精通&#xff0c;陪伴孩子度过悠长假期&#xff0c;也让爸妈长辈更安心更省力&#xff5e; 暑期到了&#xff0c;小朋友们都想出去玩&#xff0c;但…

修改密码和再次确认密码的js和element-ui的使用

<template><div><!-- plan的插槽 --><plan title"修改密码"><!-- 插槽的名字 --><span slot"header">修改密码</span><el-form:model"ruleForm2"status-icon:rules"rules2"ref"rul…

【数据结构】实验七:字符串

实验七 字符串实验报告 一、实验目的与要求 1&#xff09;巩固对串的理解&#xff1b; 2&#xff09;掌握串的基本操作实现&#xff1b; 3&#xff09;掌握 BF 和 KMP 算法思想。 二、实验内容 1. 给定一个字符串ababcabcdabcde和一个子串abcd,查找字串是否在主串中出现。…

【数据结构】实验一:绪论

实验一 绪论 一、实验目的与要求 1&#xff09;熟悉C/C语言&#xff08;或其他编程语言&#xff09;的集成开发环境&#xff1b; 2&#xff09;通过本实验加深对算法时间复杂度的理解&#xff1b; 3&#xff09;结合具体的问题分析算法时间复杂度。 二、实验内容 设计程…

深入学习 redis - Stream、Geospatial、HyperLogLog、Bitmap、Bitfields 类型扩展

目录 前言 Stream geospatial HyperLogLog Bitmaps Bitfields 前言 redis 中最关键的五个数据类型 String、List、Hash、Set、Zset 应用最广泛&#xff0c;同时 redis 也推出了额外的 5 个数据类型&#xff0c;他们分别是针对特殊场景才进行的应用的. Ps&#xff1a;这几种…

odoo16-domain

odoo16-domain 参考:https://blog.csdn.net/u013250491/article/details/86699928 domain的使用注意以下几点: 是在py文件中使用还是在xml中使用,py文件是在后端使用可以利用orm, 而xml是在前端渲染,使用的是js,没有办法使用orm如果在xml中使用,domain的格式建议为[[]], 二维…

Paragon NTFS2023最新版Mac读写NTFS磁盘工具

Paragon NTFS for Mac是Mac平台上一款非常优秀的读写工具&#xff0c;可以在Mac OS X中完全读写、修改、访问NTFS硬盘、U盘等外接设备的文件。这款软件最大的亮点简书可以让我们读写 NTFS 分区&#xff0c;因为在Mac OS X 系统上&#xff0c;默认状态下我们只能读取NTFS 分区&a…

速成版-带您一天学完python自动化测试(selenium)

Selenium是一套web网站的程序自动化操作解决方案。我们通过编写自动化程序&#xff0c;使得自动完成浏览器界面的相关操作&#xff0c;除了能够自动化的完成相关操作&#xff0c;还能从web页面获取相关信息&#xff0c;然后通过程序进行分析处理&#xff0c;本质上就是提升从网…

25.5 matlab里面的10中优化方法介绍——牛顿法(matlab程序)

1.简述 1 牛顿法简介 牛顿迭代法&#xff08;Newton’s method&#xff09;又称为牛顿-拉夫逊&#xff08;拉弗森&#xff09;方法&#xff08;Newton-Raphson method&#xff09;&#xff0c;它是牛顿在17世纪提出的一种在实数域和复数域上近似求解方程的方法。 多数方程不存…

【spring】spring bean的生命周期

spring bean的生命周期 文章目录 spring bean的生命周期简介一、bean的创建阶段二、bean的初始化阶段三、bean的销毁阶段四、spring bean的生命周期总述 简介 本文测试并且介绍了spring中bean的生命周期&#xff0c;如果只想知道结果可以跳到最后一部分直接查看。 一、bean的…

图像滤波器

图像噪声 • 图像噪声是图像在获取或是传输过程中受到随机信号干扰&#xff0c;妨碍人们对图像理解及分析处理 的信号。 • 图像噪声的产生来自图像获取中的环境条件和传感元器件自身的质量&#xff0c;图像在传输过程中产 生图像噪声的主要因素是所用的传输信道受到了噪声…