Apache ZooKeeper

开发者福利!热门AI工具限时免费用 购周边即赠Coding Plan Lite,Claude Code、Cursor等20+工具畅享,效率翻倍! 阅读详情

1、Zookeeper基本知识

1.1、ZooKeeper集群搭建

Zookeeper集群搭建指的是ZooKeeper分布式模式安装。通常由2n+1台servers组成。这是因为为了保证Leader选举(基于Paxos算法的实现)能过得到多数的支持,所以ZooKeeper集群的数量一般为奇数。
Zookeeper运行需要java环境,所以需要提前安装jdk。对于安装leader+follower模式的集群,大致过程如下:

  • 配置主机名称到IP地址映射配置
  • 修改ZooKeeper配置文件
  • 远程复制分发安装文件
  • 设置myid
  • 启动ZooKeeper集群
    如果要想使用Observer模式,可在对应节点的配置文件添加如下配置:
    peerType=observer
    其次,必须在配置文件指定哪些节点被指定为Observer,如:
    server.1:node-1:2181:3181:observer
1.2、ZooKeeper概述

Zookeeper是一个分布式协调服务的开源框架。主要用来解决分布式集群中应用系统的一致性问题。
ZooKeeper本质上是一个分布式的小文件存储系统。提供基于类似于文件系统的目录树方式的数据存储,并且可以对树中的节点进行有效管理。从而用来维护和监控你存储的数据的状态变化。通过监控这些数据状态的变化,从而可以达到基于数据的集群管理。

1.3、ZooKeeper特性

1.全局数据一致:集群中每个服务器保存一份相同的数据副本,client无论连接到哪个服务器,展示的数据都是一致的,这是最重要的特征;
2.可靠性:如果消息被其中一台服务器接受,那么将被所有的服务器接受。
3.顺序性:包括全局有序和偏序两种:全局有序是指如果在一台服务器上消息a在消息b前发布,则在所有Server上消息a都将在消息b前被发布;偏序是指如果一个消息b在消息a后被同一个发送者发布,a必将排在b前面。
4.数据更新原子性:一次数据更新要么成功(半数以上节点成功),要么失败,不存在中间状态;
实时性:Zookeeper保证客户端将在一个时间间隔范围内获得服务器的更新信息,或者服务器失效的信息。

1.4、ZooKeeper集群角色

在这里插入图片描述
Leader:
Zookeeper集群工作的核心
事务请求(写操作)的唯一调度和处理者,保证集群事务处理的顺序性;
集群内部各个服务器的调度者。
对于create,setData,delete等有写操作的请求,则需要统一转发给leader处理,leader需要决定编号、执行操作,这个过程称为一个事务。
Follower:
处理客户端非事务(读操作)请求,转发事务请求给Leader;
参与集群Leader选举投票。
此外,针对访问量比较大的zookeeper集群,还可新增观察者角色。
Observer:
观察者角色,观察Zookeeper集群的最新状态变化并将这些状态同步过来,其对于非事务请求可以进行独立处理,对于事务请求,则会转发给Leader服务器进行处理。
不会参与任何形式的投票只提供非事务服务,通常用于在不影响集群事务处理能力的前提下提升集群的非事务处理能力。

2、ZooKeeper shell

2.1、客户端连接

运行 zkCli.sh –server ip 进入命令行工具。
输入help,输出zk shell提示:
在这里插入图片描述

2.2、shell基本操作

创建节点

create [-s] [-e] path data acl

其中,-s或-e分别指定节点特性,顺序或临时节点,若不指定,则表示持久节点;acl用来进行权限控制。
创建顺序节点:
在这里插入图片描述
创建临时节点:
在这里插入图片描述
创建永久节点:
在这里插入图片描述
读取节点
与读取相关的命令有ls 命令和get 命令,ls命令可以列出Zookeeper指定节点下的所有子节点,只能查看指定节点下的第一级的所有子节点;get命令可以获取Zookeeper指定节点的数据内容和属性信息。
  ls path [watch]   get path [watch]   ls2 path [watch]
  在这里插入图片描述
  更新节点

set path data [version]

data就是要更新的新内容,version表示数据版本。
在这里插入图片描述
现在dataVersion已经变为1了,表示进行了更新。
删除节点

delete path [version]

若删除节点存在子节点,那么无法删除该节点,必须先删除子节点,再删除父节点。
Rmr path
可以递归删除节点。
quota

setquota -n|-b val path

对节点增加限制。

n:表示子节点的最大个数
b:表示数据值的最大长度
val:子节点最大个数或数据值的最大长度
path:节点路径
在这里插入图片描述
listquota path 列出指定节点的quota
在这里插入图片描述
子节点个数为2,数据长度-1表示没限制

delquota [-n|-b] path  删除quota

其他命令
history : 列出命令历史
在这里插入图片描述
redo:该命令可以重新执行指定命令编号的历史命令,命令编号可以通过history查看

3、ZooKeeper数据模型

ZooKeeper的数据模型,在结构上和标准文件系统的非常相似,拥有一个层次的命名空间,都是采用树形层次结构,ZooKeeper树中的每个节点被称为—Znode。和文件系统的目录树一样,ZooKeeper树中的每个节点可以拥有子节点。但也有不同之处:
1.Znode兼具文件和目录两种特点。既像文件一样维护着数据、元信息、ACL、时间戳等数据结构,又像目录一样可以作为路径标识的一部分,并可以具有子Znode。用户对Znode具有增、删、改、查等操作(权限允许的情况下)。
2.Znode具有原子性操作,读操作将获取与节点相关的所有数据,写操作也将替换掉节点的所有数据。另外,每一个节点都拥有自己的ACL(访问控制列表),这个列表规定了用户的权限,即限定了特定用户对目标节点可以执行的操作。
3.Znode存储数据大小有限制。ZooKeeper虽然可以关联一些数据,但并没有被设计为常规的数据库或者大数据存储,相反的是,它用来管理调度数据,比如分布式应用中的配置文件信息、状态信息、汇集位置等等。这些数据的共同特性就是它们都是很小的数据,通常以KB为大小单位。ZooKeeper的服务器和客户端都被设计为严格检查并限制每个Znode的数据大小至多1M,当时常规使用中应该远小于此值。
4.Znode通过路径引用,如同Unix中的文件路径。路径必须是绝对的,因此他们必须由斜杠字符来开头。除此以外,他们必须是唯一的,也就是说每一个路径只有一个表示,因此这些路径不能改变。在ZooKeeper中,路径由Unicode字符串组成,并且有一些限制。字符串"/zookeeper"用以保存管理信息,比如关键配额信息。

3.1、数据结构图

在这里插入图片描述
图中的每个节点称为一个Znode。 每个Znode由3部分组成:
① stat:此为状态信息, 描述该Znode的版本, 权限等信息
② data:与该Znode关联的数据
③ children:该Znode下的子节点

3.2、节点类型

Znode有两种,分别为临时节点和永久节点。
节点的类型在创建时即被确定,并且不能改变。
临时节点

Zookeeper学习:Zookeeper 的 API 使用 1. API 相关介绍 Zookeeper作为一个分布式框架,主要用来解决分布式一致性问题,它提供了简单的分布式原语,并且对多种编程语言提供了APl,Zooeeper API 共包含五个包,分别为∶ org.apache.zookeeper org.apache.zookeeper.data org.apache.zookeeper.server org.apache.zookeeper. server.quorum org.apache.zookeeper.server.upgrade 其中 org. 阅读详情

相关推荐

Apache ZooKeeper 官方首页页介绍

Apache ZooKeeper致力于开发和维护一个支持高度可靠分布式协调的开源服务器。 1.ZooKeeper 是什么? 2 ZooKeeper:因为协调分布式系统是一个动物园 2.1 ZooKeeper Overview:为客户端开发人员、管理员和贡献者提供的技术概述文档。 2.1.1 Overview:ZooKeeper 的鸟瞰图,包括设计理念和建筑。 2.1.2 Getting Sta...

玻璃汽水的博客 594

Zookeeper 客户端 org.apache.zookeeper:zookeeper:3.5.8

博文目录 文章目录Zookeeper 客户端代码演示Apache Curator 客户端会话创建重试策略代码演示异步接口监听Curator Cachesnode cachepath cachetree cache代码演示集群模式下的使用 Zookeeper 客户端 zookeeper 官方的客户端没有和服务端代码分离,他们为同一个jar 文件,所以我们直接引入zookeeper的maven即可, 这里版本请保持与服务端版本一致,不然会有很多兼容性的问题 <dependency> &lt

mrathena 2341

Apache zookeeper kafka 开启SASL安全认证

使用kafka-console-producer.sh脚本测试生产者,由于开启安全认证和授权,此时使用console-producer脚本来尝试发送消息,那么消息会发送失败,原因是没有指定合法的认证用户,因此客户端需要做相应的配置,需要创建一个名为producer.conf的配置文件给producer程序使用。Client配置了broker到Zookeeper的连接用户名密码,这里要和前面zookeeper配置中的zk_jaas.conf.conf 中 user_kafka 的账号和密码相同。

2401_87298714的博客 1710

Zookeeper入门介绍

Zookeeper是什么 官方文档上这么解释zookeeper,它是一个分布式服务框架,是Apache Hadoop 的一个子项目,它主要是用来解决分布式应用中经常遇到的一些数据管理问题,如:统一命名服务、状态同步服务、集群管理、分布式应用配置项的管理等。 简单来说,zookeeper=文件系统+监听通知机制。 1.文件系统 Zookeeper维护一个类似文件系统的数据结构: 每个子目录项如 NameService 都被称作为 ...

有个疙叫瘩儿的博客 366

zookeeper安装及其使用

1.官网:https://zookeeper.apache.org/ 2.将zookeeper-3.4.11.tar.gz拷贝进入到/opt目录下并解压 3.新建专属zookeeper目录,mkdir /myzookeeper, 随后将上一步解压的zookeeper内容拷贝进/myzookeeper目录内 4.启动zookeeper(启动Zookeeper服务之前需要先安装好Java环境) 到/myzookeeper/zookeeper-3.4.9/bin路径下,执行./zkServer.sh s

qq_42288638的博客 445

Apache ZooKeeper - 构建ZooKeeper源码环境及StandAlone模式下的服务端和客户端启动

文章目录拉取源码 拉取源码 https://github.com/apache/zookeeper Clone ---- HTTPS IDEA里

小工匠 2万+

Apache ZooKeeper 简介

对于开发人员和系统管理员来说,了解和利用 ZooKeeper 可以显著提高其分布式应用程序的性能和可靠性,为可扩展和容错系统铺平道路。

技术探索驿站 1915

apache curetor zookeeper 工具类

package com.cloud.serviceclient.curator; import org.apache.curator.framework.CuratorFramework; import org.apache.curator.framework.recipes.cache.ChildData; import org.apache.curator.framework.recipe...

Amy的博客 7万+

Apache Curator 操作Zookeeper api

Zookeeper客户端(Apache Curator) ZooKeeper常用客户端 zookeeper自带的客户端是官方提供的,比较底层、使用起来写代码麻烦、不够直接。 Apache Curator是Apache的开源项目,封装了zookeeper自带的客户端,使用相对简便,易于使用。 zkclient是另一个开源的ZooKeeper客户端,其地址:github.com/adyliu/zkc...

weixin_33963594的博客 126

Apache ZooKeeper 及 Curator 使用总结

Apache ZooKeeper 及 Curator 使用总结

凡的博客 1429

Mac Apache ZooKeeper 配置

&#13; 1、配置准备工作 1)配置 ZooKeeper 准备工作 下载相关软件 apache-zookeeper-v3.4.10.zip ZooKeeper 官网 ZooKeeper 配置软件下载地址,密码:ixgx。 2)配置注意事项 提前下载好相关软件,且安装目录最好安装在全英文路径下。如果路径有中文名,那么可能会出现一些莫名其妙的问题。 3)示例配置环...

rstbfveradsvc 207

Apache Zookeeper总结

Zookeeper组件介绍

weixin_47120324的博客 523

apache-tomcat、apache-maven、apache-zookeeper等的本地环境配置

apache-zookeeper是一个开源的分布式协调服务,它主要用于在分布式环境中实现同步和协调。apache-tomcat充当了一个Web服务器和一个Java应用程序服务器的角色,可以用来部署和运行Java Web应用程序,使开发者能够轻松地部署和管理Java Web应用程序。再输入startup运行,发现已经变为中文,这样,tomcat的环境就配置好了。现在,开始配置tomcat的环境,右键此电脑——》属性——》高级系统设置。现在,开始配置maven的环境,右键此电脑——》属性——》高级系统设置。

m0_74289031的博客 1736

Apache ZooKeeper之Java API

org.apache.zookeeper.Zookeeper * Zookeeper 是在Java中客户端主类,负责建立与zookeeper集群的会话,并提供方法进行操作。 org.apache.zookeeper.Watcher Watcher接口表示一个标准的事件处理器,其定义了事件通知相关的逻辑,包含KeeperState和EventType两个枚举类,分别代表了通知状态...

最慢的步伐不是跬步,而是徘徊;最快的脚步不是冲刺,而是坚持 7094

1 Apache Dubbo Zookeeper

Apache Dubbo Zookeeper 基础介绍

qq_24907431的博客 500

ZooKeeperApache ZooKeeper 深入详解

ZooKeeper是一个分布式协调服务,提供配置管理、命名服务、分布式同步等功能。其核心设计强调简单性、可靠性和原子性,采用类似文件系统的层次化数据模型(ZNode),支持持久、临时、顺序等多种节点类型。ZooKeeper集群包含Leader、Follower和Observer角色,通过会话机制和Watch监控实现分布式协调。客户端会话通过心跳维持,支持条件更新和版本控制,确保数据一致性。Watch机制允许客户端监听节点变化,实现事件驱动的分布式协调。整体架构高效可靠,适合构建分布式系统的基础服务。

NeoLshu的博客 1471

Apache ZooKeeper - 使用Apache Curator操作ZK

文章目录原生ZK API VS CuratorCurator 概述 原生ZK API VS Curator Apache ZooKeeper - 使用原生的API操作ZK ZooKeeper原生Java API的不足之处: 连接zk超时时,不支持自动重连,需要手动操作 Watch注册一次就会失效,需手工反复注册 不支持递归创建节点 异步支持,没有线程池 … Apache curator: Apache Commiter作者的开源项目 解决Watch注册一次就会失效的问题 API 更加简单易用、封装了

小工匠 2万+

使用Apache Curator连接Zookeeper版本问题

在项目中使用到Apache Curator Framework连接zookeeper-3.4.5-cdh5.7.0,使用的Curator Framework版本是最新版4.0.1 <!-- https://mvnrepository.com/artifact/org.apache.curator/curator-framework --> <dependency> ...

浅汐 9109

zookeeper_使用Apache Zookeeper进行协调和服务发现

zookeeper 事实证明,面向服务的设计是针对各种不同的分布式系统的成功解决方案。 如果使用得当,它会带来很多好处。 但是随着服务数量的增加,了解部署什么以及部署在何处变得更加困难。 而且由于我们正在构建可靠且高度可用的系统,因此还需要问另一个问题:每个服务有多少实例可用? 在今天的帖子中,我想向您介绍Apache ZooKeeper的世界-一种高度可靠的分布式协调服务。 ZooKeepe...

cunfen8879的博客 291
上一篇: Linux常用命令
下一篇: HBase安装部署
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值