zookeeper知多少

本文涉及的产品
任务调度 XXL-JOB 版免费试用,400 元额度,开发版规格
MSE Nacos/ZooKeeper 企业版试用,1600元额度,限量50份
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介: zookeeper知多少

zk 的数据模型和节点类型

数据模型:树形结构

zk维护的数据主要有:客户端的会话(session)状态及数据节点(dataNode)信息。

zk在内存中构造了个DataTree的数据结构,维护着path到dataNode的映射以及dataNode间都树状层关系。为了提高读取性能,集群中每个服务节点都是将数据全量存储在内存中。所以,zk最适合读多写少且轻量级数据的应用场景。

数据仅存储在内存是很不安全都,zk采用事务日志文件以及快照文件都方案来落盘数据,保障数据在不丢失的情况下快速恢复。

树中的每个节点都被为 一 Znode

Znode 兼具文件和目录两种特点。可以做路径标识,也可以存储数据,并可以具有子Znode。具有增,删,改,查等操作。

Znode 具有原子性操作,读操作将获取与节点相关的所有数据,写操作也将替换掉节点的所有数据。另外,每一个节点都拥有自己的ACL(访问控制列表),这个列表规定了用户的权限,即限定了特定用户对目标节点可以执行的操作

Znode存储数据大小有限制。每个Znode的数据大写至多1M,常规使用中应该远小于此值。

Znode通过路径引用,如同Unix中的文件路径。路径必须是绝对的,因此他们必须有斜杠字符来开头。除此以外,他们必须是一致的,也就是说每一个路径只有一个表示,因此这些路径不能改变。在Zookeeper中,路径由Unicode字符串组成,并且有一些限制。字符串“/zookeeper”用以保存管理信息,比如关键配额信息。


节点类型

持久节点:一旦创建、该数据节点会一直存储在zk服务器上、即使创建该节点的客户端与服务端的会话关闭了、该节点也不会被删除

临时节点:当创建该接地单的客户端会话因超时或发生异常而关闭时、该节点也相应的在zk上被删除。

有序节点:不是一种单独种类的节点、而是在持久节点和临时节点的基础上、增加了一个节点有序的性质。


zk的使用场景

命名服务:

通过指定的名字来获取资源或者服务地址。Zookeeper 可以创建一个全局唯一的路径,这个路径就可以作为一个名字。被命名的实体可以是集群中的机器,服务的地址,或者是远程对象等。一些分布式服务框架(RPC、RMI)中的服务地址列表,通过使用命名服务,客户端应用能够根据特定的名字来获取资源的实体、服务地址和提供者信息等

配置管理:

实际项目开发中,经常使用.properties或者xml需要配置很多信息,如数据库连接信息,fps地址端口等等。程序分布式部署时,如果把程序的这些配置信息保存在zk的znode节点下,当你要修改配置,即znode会发生变化时,二勘院通过改变zk中某个目录节点的内容,利用watcher通知给各个客户端,从而更改配置。

集群管理:

集群管理包括集群监控和集群控制,就是监控集群机器状态,剔除机器和加入机器。zookeeper可以方便集群机器的管理,它可以实时监控znode节点的变化,一旦发现有机器挂了,该机器就会与zk断开连接,对应的临时目录节点会被删除,其他所有机器都收到通知。新机器加入也是类似。


zk  watch 机制

客户端,可以通过在znode上设置watch,实现实时监听znode的变化

Watch 事件是一个一次性的触发器,当被设置了Watch的数据发生了改变的时候,则服务器将这个改变发送给设置了Watch的客户端

1、父节点的创建,修改,删除都会触发Watcher事件。

2、子节点的创建,删除会触发Watcher事件。

一次性:一旦被触发就会移除,再次使用需要重新注册,因为每次变动都需要通知所有客户端,一次性可以减轻压力, 3.6.0默认持久递归,可以触发多次

轻量:只通知发生了事件,不会告知事件内容,减轻服务器和带宽压力


Watcher机制包括三个角色:客户端线程、客户端的WatchManager以及Zookeeper服务器

1、客户端向Zookeeper服务器注册一个Watcher监听,

2、把这个监听信息存储到客户端的WatchManager中

3、当Zookeeper中的节点发生变化时,会通知客户端,客户端调用相应的Watcher对象中的回调方法。watch回调是串行同步的

目录
相关文章
|
网络协议 关系型数据库 MySQL
MySQL 设置白名单的详细步骤
要为MySQL设置白名单,需要执行以下步骤: 1. 登录到MySQL服务器的命令行或图形界面客户端。 2. 选择要设置白名单的数据库。可以使用以下命令进入MySQL命令行界面: ``` mysql -u <username> -p ``` 3. 创建一个包含需要允许访问的IP地址的表。你可以使用以下命令进行创建: ``` CREATE TABLE whitelist ( id INT NOT NULL AUTO_INCREMENT, ip_address VARCHAR(45) NOT NULL, PRIMARY KEY (
3460 1
|
开发工具 git Windows
VSCode下载与安装使用教程【超详细讲解】
VSCode下载与安装使用教程【超详细讲解】
4512 0
VSCode下载与安装使用教程【超详细讲解】
|
存储 JavaScript 测试技术
rpmdb损坏的修复方法
yum强制终止后,提示rpmdb损坏 error: cannot open providename index using db3 - bad file descriptor
9393 0
|
8月前
|
监控 jenkins 测试技术
Ansible与Jenkins:自动化工具的对比
Ansible和Jenkins是自动化领域的两大巨头。Ansible专注于配置管理和任务自动化,采用无代理架构,使用YAML定义配置,具有幂等性和可扩展性。Jenkins则擅长持续集成和持续交付(CI/CD),支持丰富的插件生态系统,适用于自动化构建、测试和部署。两者各有优势,Ansible适合配置管理与大规模部署,Jenkins则在CI/CD方面表现出色。结合使用可创建更强大的自动化工作流,提升团队生产力和软件质量。选择工具时应根据具体需求决定。
|
8月前
|
算法 定位技术 vr&ar
基于WebGIS技术的校园地图导航系统解决方案
本文提出了一套基于WebGIS技术的校园地图导航系统构建与优化方案,通过校园三维地图、路线导航、特色路线、位置分享等核心功能机框架设计,旨在为用户提供高效、智能、个性化的导航体验。
438 0
基于WebGIS技术的校园地图导航系统解决方案
|
机器学习/深度学习 人工智能 算法
【机器学习】概率模型在机器学习中的应用:以朴素贝叶斯分类去为例
【机器学习】概率模型在机器学习中的应用:以朴素贝叶斯分类去为例
321 0
|
存储 移动开发 前端开发
SpringBoot文件分片上传
最近好几个项目在运行过程中客户都提出文件上传大小的限制能否设置的大一些,用户经常需要上传好几个G的资料文件,如图纸,视频等,并且需要在上传大文件过程中进行优化实时展现进度条,进行技术评估后针对框架文件上传进行扩展升级,扩展接口支持大文件分片上传处理,减少服务器瞬时的内存压力,同一个文件上传失败后可以从成功上传分片位置进行断点续传,文件上传成功后再次上传无需等待达到秒传的效果,优化用户交互体验,具体的实现流程如下图所示
371 0
SpringBoot文件分片上传
|
Linux C语言
centos 7 下使用高版本gcc编译安装
centos 7 下使用高版本gcc编译安装
554 0
|
算法
【MATLAB】 HANTS滤波算法
【MATLAB】 HANTS滤波算法
372 0
|
C# Windows
WPF技术之Menu控件
WPF(Windows Presentation Foundation)是一种用于创建Windows应用程序的框架,而WPF Menu控件用于在应用程序中创建菜单。
401 0