Zookeeper-快速开始

Zookeeper介绍

简介:ZooKeeper 是一个开源的分布式协调框架,是Apache Hadoop 的一个子项目,主要用来解决分布式集群中应用系统的一致性问题。

设计目标:将那些复杂且容易出错的分布式一致性服务封装起来,构成一个高效可靠的原语集,并以一系列简单易用的接口提供给用户使用。

ZooKeeper本质上是一个分布式的小文件存储系统(Zookeeper=文件系统+监听机制)。

功能:基于数据的集群管理、统一命名服务、分布式配置管理、分布式消息队列、分布式锁、分布式协调。

设计模式:一个基于观察者模式设计的分布式服务管理框架

官方:Apache ZooKeeper

Zookeeper快速开始

Zookeeper安装

下载地址:Apache ZooKeeper

运行环境:jdk8

修改配置文件

解压安装包后进入conf目录,复制zoo_sample.cfg,修改为zoo.cfg

修改 zoo.cfg 配置文件,将 dataDir=/tmp/zookeeper 修改为指定的data目录

zoo.cfg中参数含义:

启动zookeeper server

# 可以通过 bin/zkServer.sh  来查看都支持哪些参数 
# 默认加载配置路径conf/zoo.cfg
bin/zkServer.sh start
bin/zkServer.sh start conf/my_zoo.cfg# 查看zookeeper状态
bin/zkServer.sh status

启动zookeeper client连接Zookeeper server

bin/zkCli.sh
# 连接远程的zookeeper server
bin/zkCli.sh -server ip:port

客户端命令行操作

输入命令 help 查看所有命令:

命令基本语法功能描述
help显示所有操作命令
ls [-s] [-w] [-R] path使用 ls 命令来查看当前 znode 的子节点 [可监听] -w: 监听子节点变化 -s: 节点状态信息(时间戳、版本号、数据大小等)-R: 表示递归的获取
create [-s] [-e] [-c] [-t ttl] path [data] [acl]创建节点-s : 创建有序节点。-e : 创建临时节点。-c : 创建一个容器节点。t ttl] : 创建一个TTL节点, -t 时间(单位毫秒)。data:节点的数据,可选,如果不使用时,节点数据就为null。acl:访问控制
get [-s] [-w] path获取节点数据信息 -s: 节点状态信息(时间戳、版本号、数据大小等) -w: 监听节点变化
set [-s] [-v version] path data设置节点数据-s:表示节点为顺序节点-v: 指定版本号
getAcl [-s] path获取节点的访问控制信息-s: 节点状态信息(时间戳、版本号、数据大小等)
setAcl [-s] [-v version] [-R] path acl设置节点的访问控制列表-s:节点状态信息(时间戳、版本号、数据大小等)-v:指定版本号-R:递归的设置
stat [-w] path查看节点状态信息
delete [-v version] path删除某一节点,只能删除无子节点的节点。-v: 表示节点版本号
deleteall path递归的删除某一节点及其子节点
setquota -n|-b val path对节点增加限制n:表示子节点的最大个数b:数据值的最大长度,-1表示无限制

GUI工具

  • Zookeeper图形化工具:ZooInspector

  • Zookeeper图形化工具:开源的prettyZoo(推荐)

  • Zookeeper图形化工具:收费的ZooKeeperAssistant

ZooKeeper数据结构

ZooKeeper 数据模型的结构与 Unix 文件系统很类似,整体上可以看作是一棵树,每个节点称做一个 ZNode。

ZooKeeper的数据模型是层次模型,层次模型和key-value模型是两种主流的数据模型。

ZooKeeper使用文件系统模型主要基于以下两点考虑:

  1. 文件系统的树形结构便于表达数据之间的层次关系

  2. 文件系统的树形结构便于为不同的应用分配独立的命名空间( namespace ) 

ZooKeeper的层次模型称作Data Tree,Data Tree的每个节点叫作Znode。不同于文件系统,每个节点都可以保存数据,每一个 ZNode 默认能够存储 1MB 的数据,每个 ZNode 都可以通过其路径唯一标识,每个节点都有一个版本(version),版本从0开始计数。

public class DataTree 
{private final ConcurrentHashMap<String, DataNode> nodes =new ConcurrentHashMap<String, DataNode>();private final WatchManager dataWatches = new WatchManager();private final WatchManager childWatches = new WatchManager();
}public class DataNode implements Record 
{byte data[];Long acl;public StatPersisted stat;private Set<String> children = null;
}       

节点分类

zookeeper存在几种不同的节点类型,具有不同的生命周期:

类型生命周期
持久节点 (persistent node)一直存在,一直存储在ZooKeeper 服务器上,即使创建该节点的客户端与服务端的会话关闭了,该节点依然不会被删除
临时节点 (ephemeral node)当创建该临时节点的客户端会话因超时或发生异常而关闭时,该节点也相应在 ZooKeeper 服务器上被删除。
有序节点 (sequential node)并不算是一种单独种类的节点,而是在之前提到的持久节点和临时节点特性的基础上,增加了一个节点有序的性质。在我们创建有序节点的时候会自动使用一个单调递增的数字作为后缀
容器节点 (container node)当一个容器节点的最后一个子节点被删除后,容器节点也会被删除
TTL节点 (ttl node)当一个TTL节点在 TTL 内没有被修改并且没有子节点,会被删除。注意:默认此功能不开启,需要修改配置文件extendedTypesEnabled=true

无序节点:

  • 持久节点(PERSISTENT): 这样的znode在创建之后即使发生ZooKeeper集群宕机或者client宕机也不会丢失。

  • 临时节点(EPHEMERAL ): client宕机或者client在指定的timeout时间内没有给ZooKeeper集群发消息,这样的znode就会消失。

有序节点:

  • 持久顺序节点(PERSISTENT_SEQUENTIAL): znode除了具备持久性znode的特点之外,znode的名字具备顺序性。

  • 临时顺序节点(EPHEMERAL_SEQUENTIAL): znode除了具备临时性znode的特点之外,zorde的名字具备顺序性。

以上4种节点常用

  • Container节点 (3.5.3版本新增):Container容器节点,当容器中没有任何子节点,该容器节点会被zk定期删除(定时任务默认60s 检查一次)。 和持久节点的区别是 ZK 服务端启动后,会有一个单独的线程去扫描,所有的容器节点,当发现容器节点的子节点数量为 0 时,会自动删除该节点。可以用于 leader 或者锁的场景中。

  • TTL节点: 带过期时间节点,默认禁用,需要在zoo.cfg中添加 extendedTypesEnabled=true 开启。 注意:TTL不能用于临时节点

#创建持久节点
create /servers  xxx
#创建临时节点
create -e /servers/host  xxx
#创建临时有序节点
create -e -s /servers/host  xxx
#创建容器节点
create -c /container xxx
# 创建ttl节点
create -t 10 /ttl

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

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

相关文章

JAVAEE初阶 多线程进阶(一)

进阶面试题 一. 锁拓展1.1 乐观锁与悲观锁1.2 轻量级锁与重量级锁1.3 自旋锁和挂起等待锁1.4 普通互斥锁与读写锁1.5 公平锁与非公平锁1.6 可重入锁和不可重入锁 二.锁的优化策略2.1 锁的自适应2.2 锁消除2.3 锁粗化 三.CAS 一. 锁拓展 1.1 乐观锁与悲观锁 乐观锁 : 加锁前,预…

Elasticsearch——快速入门

从零基础的内容开始介绍Elasticsearch&#xff0c;主要包含以下内容&#xff1a; Elasticsearch的定义、优点&#xff0c;以及典型的业务场景。Elasticsearch中重要的概念。Elasticsearch典型的接入方式。安装Elasticsearch。使用Kibana调试Elasticsearch。Elasticsearch节点的…

保护IP地址免受盗用的有效方法

IP地址是互联网通信的基础&#xff0c;然而&#xff0c;由于其重要性&#xff0c;IP地址的盗用成为一种潜在的网络威胁。本文将深入探讨防止IP地址被盗用的方法&#xff0c;以维护网络的安全性。 第一部分&#xff1a;IP地址盗用的威胁与风险 1.1 IP地址盗用的定义 IP地址盗…

软件测试必备的测试工具清单汇总

前言 据统计&#xff0c;中国软件外包市场的潜力和机会已远远超过软件王国印度&#xff0c;不过由于软件人才的严重不足致使我国软件发展遭遇“瓶颈”。国家为了大力培养软件人才&#xff0c;不断采取积极有效的措施。我国对软件测试人才的需求数量还将持续增加&#xff0c;因…

【MAC】M2 安装docker 与 mysql

一、docker下载地址 下载地址 二、安装docker完成 罗列一下docker常用命令 # 查看docker版本 docker --version# 拉取镜像 docker pull 镜像名# 查看当前所有镜像 docker images# 查看运行中的容器 docker ps -a docker ps grep| 镜像名#镜像启动操作&#xff1a; sudo dock…

使用单向链表实现栈的相关操作【1.2】

创建节点: class StackNode {private StackNode next;private int no;public StackNode getNext() {return next;}public void setNext(StackNode next) {this.next next;}public StackNode(int no) {this.no no;}public int getNo() {return no;}public void setNo(int no)…

Day65力扣打卡

打卡记录 寻找峰值 II&#xff08;二分&#xff09; 链接 class Solution:def findPeakGrid(self, mat: List[List[int]]) -> List[int]:l, r 0, len(mat) - 1while l < r:mid (l r) // 2mx max(mat[mid])if mx > mat[mid 1][mat[mid].index(mx)]:r midelse:l…

linux搭建gitlab

gitlab的介绍 区别于github&#xff0c;github是面向互联网基于git实现的代码托管平台&#xff0c;gitlab是基于Ruby语言实现的git管理平台软件&#xff0c;一般用于公司内部代码仓库。 gitlab组成 gitlab组成 Nginx 静态Web服务器Gitlab-workhorse 轻量级的反向代理服务器Git…

五年一贯专转本这么管用的记忆法你用了吗?

在枯燥无聊的学习当中&#xff0c;能有好的学习记忆方式就能事半功倍&#xff0c;但是怎样的学习记忆方式才适合我们呢&#xff1f;那我今天就给大家介绍一下吧&#xff0c;如果觉得好用&#xff0c;可以试试&#xff0c;让我们在之后的转本考试当中能有个好成绩&#xff01;zb…

R10在工业自动化-485转WiFi无线路由解决方案

R10是钡铼技术有限公司研发的一款用于工业自动化应用的485转WiFi无线路由器解决方案。该解决方案可以将传统的RS485通信设备无线化&#xff0c;实现数据的远程监控和管理。下面将详细介绍R10在工业自动化中的应用。 首先&#xff0c;R10具备RS485转WiFi的功能&#xff0c;可以…

Apache CouchDB 垂直权限绕过漏洞 CVE-2017-12635 已亲自复现

Apache CouchDB 垂直权限绕过漏洞 CVE-2017-12635 已亲自复现 漏洞名称影响版本影响版本 漏洞复现环境搭建漏洞利用 总结 漏洞名称 影响版本 Apache CouchDB是一个开源的NoSQL数据库&#xff0c;专注于易用性和成为“完全拥抱web的数据库”。它是一个使用JSON作为数据存储格式…

uni-app 用于开发H5项目展示饼图,使用ucharts 饼图示例

先下载ucharts H5示例源码&#xff1a; uCharts: 高性能跨平台图表库&#xff0c;支持H5、APP、小程序&#xff08;微信小程序、支付宝小程序、钉钉小程序、百度小程序、头条小程序、QQ小程序、快手小程序、360小程序&#xff09;、Vue、Taro等更多支持canvas的框架平台&#…