当前位置: 首页 > news >正文

【Zookeeper】四,Zookeeper节点类型、通知、仲裁、会话

文章目录

        • Zookeeper的架构
        • znode的版本
        • Zookeeper的节点类型
          • 层级树状结构
          • znode的不同类型
        • Zookeeper监视与通知
          • 通知的类型
        • Zookeeper的仲裁
        • Zk的会话
          • 会话的生命周期

Zookeeper的架构

Zookeeper的服务器端运行两种模式:独立模式(standalone)和仲裁模式(quorum)。
独立模式只是一个单独的服务器,Zk的状态无法进行复制。
仲裁模式下,Zk拥有一组服务器,称之为Zk集合,它们之间可以进行状态复制。
在这里插入图片描述

znode的版本

每个znode都有一个版本号,随着数据的变化而进行自增。比如执行set和delete两次操作,这两次调用以版本号作为转入参数,只有当传入的版本号与服务器上的版本号一致时才会调用成功。比如客户端c1对znode/config写入了一些配置信息,如果另外一个c2同时更新了这个znode,此时c1的版本号已经过期,c1调用set就会失败。

Zookeeper的节点类型
层级树状结构

在Zookeeper中,维护了一个小型的数据节点,这些节点称为znode,采用类似于文件系统的层级树状结构进行管理。
在这里插入图片描述根节点包含4个子节点,其中三个子节点拥有下一级节点,叶子节点存储了数据信息。

  • /workers下面的每个子节点保存了一个可用的从节点信息。
  • /tasks下面的每个znode子节点表示了已经创建,并等待从节点执行的任务信息。
  • /assign下面的每个znode子节点保存了分配到某个从节点的一个任务信息,当主节点为从节点分配了一个任务信息,就会在/assign下增加一个子节点。
znode的不同类型

持久节点
持久的znode只能通过delete来删除。
持久类型的znode可以为应用保存一些数据,保证数据不丢失。

临时节点
当创建该节点的客户端与Zookeeper的连接断开时,这个节点就会被删除。
临时节点主要传递了应用层面的一些信息。在主从模式中,当主节点创建了一个临时节点时,这个临时节点的存在表示主节点状态正常。从节点中使用临时znode也可以检测从节点是否有效。
临时节点存在以下两种情况会被删除:

  • 创建该znode的客户端会话超时或主动关闭。
  • 某个客户端主动删除该节点。

有序节点
一个znode可以被设置为有序节点。有序节点会被分配一个唯一的单调递增的整数。
例如创建/tasks/task-的时候,Zookeeper将会分配一个唯一的序列号追加到路径之后,最终名称为/tasks/task-1

总结
znode总共有四种类型

  • 持久的(persistent)
  • 临时的(ephemeral)
  • 持久有序(persistent sequential)
  • 临时有序(ephemeral sequential)
Zookeeper监视与通知

如果客户端每次访问znode节点的时候,客户端都要获取节点的所有内容,这会导致很高的延迟,代价很大。所以Zookeeper选择了基于通知的机制。首先,客户端告知Zookeeper自己要通过哪一个znode来接收通知,也就是在znode上设置一个监视点;当节点发生变化时,客户端会受到这个通知,并从Zookeeper上获取到最新的数据。其次,通知是一种单次触发的操作,客户端每次接收到通知后,必须再次设置一个新的监视点。
如果客户端在接收到通知,并设置下一个新的监视点之前,节点数据发生了变化呢?
客户端在每次设置新的通知的时候,都需要先从节点读取数据,这样就不会错过所有的变更。

通知的类型

通知的类型取决于设置监视点的类型,如监控znode的数据变化、监控znode子节点的变化、监控znode的创建和删除。

Zookeeper的仲裁

当Zk存在多个副本的时候,Zk会复制集群中所有服务器的数据树,如果让客户端等待服务器复制完所有数据后再继续,显然会存在较高的延迟。所以在Zk中可以设定法人数量。例如,我们一共有5个Zk服务器,将法定人数设置为3。这样,只要任何3个服务器保存了数据,客户端就可以继续,而其他两个服务器最终也将会捕获到数据,并进行保存。

法定人数的设置不能太大或太小,一般设置为服务器数量的多数,并且服务器数量一般为奇数个(不是必须的,但偶数个会使系统更加脆弱)。例如总共5台Zk服务器,则可以将法定人数数量设置为3。

Zk的会话

在进行操作Zookeeper前,客户端需要与服务端建立会话。当一个会话终止时,这个会话期间创建的所有临时节点都将会消失。
会话提供了顺序保障,同一个会话中的请求会以FIFO的顺序执行。如果客户端拥有多个并发的会话,那么FIFO的顺序在多个会话之间未必能够保持。

会话的生命周期

会话的生命周期是指会话从创建到结束的时期。
会话的相关状态主要有:CONNECTING、CONNECTED、CLOSED、NOT_CONNECTED
在这里插入图片描述

相关文章:

【Zookeeper】四,Zookeeper节点类型、通知、仲裁、会话

文章目录 Zookeeper的架构znode的版本Zookeeper的节点类型层级树状结构znode的不同类型 Zookeeper监视与通知通知的类型 Zookeeper的仲裁Zk的会话会话的生命周期 Zookeeper的架构 Zookeeper的服务器端运行两种模式:独立模式(standalone)和仲…...

【二分查找】力扣 34. 在排序数组中查找元素的第一个和最后一个位置

一、题目 二、思路 将题目转化为求解 target 和 target 1 的查找。分别采用最基础的二分查找即可。 三、题解 class Solution {public int[] searchRange(int[] nums, int target) {int n nums.length;int start lowerBound(nums, target);if (start n || nums[start] !…...

以达梦为数据库底座时部署的微服务页面报乱码,调整兼容模式

1.问题描述 部署微服务,文件、代码是延用的mysql类型的,部署前做了部分适配,但是在使用dm数据库进行安装的服务在页面上查询出的数据却都是乱码 2.查询官网,注意到一个参数COMPATIBLE_MODE兼容模式的配置 考虑是延用mysql&…...

Java设计模式 —— 【创建型模式】工厂模式(简单工厂、工厂方法模式、抽象工厂)详解

文章目录 前言一、简单工厂(静态工厂)1、概述2、代码实现3、优缺点 二、工厂方法模式1、概述2、代码实现3、优缺点 三、抽象工厂模式1、概述2、代码实现3、优缺点 四、总结 前言 先看个案例:【手机和手机店】在没有工厂的时候,手…...

KST-3D01型胎儿超声仿真体模、吸声材料以及超声骨密度仪用定量试件介绍

一、KST-3D01型胎儿超声仿真体模 KST—3D01型胎儿超声体模,采用仿羊水环境中内置胎龄为7个月大仿胎儿设计。用于超声影像系统3D扫描演示装置表面轮廓呈现和3D重建。仿羊水超声影像呈暗回声(无回波)特性,仿胎儿超声影像呈对比明显…...

网络原理->DNS协议和NAT协议解

前言 大家好我是小帅,今天我们来了解应用层的DNS协议和NAT技术 个人主页:再无B~U~G 文章目录 1.重要应⽤层协议DNS(Domain Name System)1.1 DNS背景 2. NAT技术3. 总结 1.重要应⽤层协议DNS(Domain Name System) DNS是⼀整套从域…...

基于yolov8、yolov5的100种中药材检测识别系统(含UI界面、训练好的模型、Python代码、数据集)

项目介绍 项目中所用到的算法模型和数据集等信息如下: 算法模型:     yolov8、yolov8 SE注意力机制 或 yolov5、yolov5 SE注意力机制 , 直接提供最少两个训练好的模型。模型十分重要,因为有些同学的电脑没有 GPU&#xff0…...

RuoYi排序

RuoYi框架提供了多种实现排序的方法,以满足不同场景下的需求。这里简要介绍几种常见的排序实现方式: 1. 后端排序 1.1 使用startPagePlus方法 RuoYi框架中,可以通过对BaseController进行扩展来实现更灵活的分页与排序功能。例如&#xff0…...

Python+Pytest+Yaml+Allure数据参数化(DDT)数据驱动(一)

我们在做数据之前要知道几个问题 1、在代码层面怎么来数据驱动 2、yaml文件是什么 3、怎么用yaml文件实现对应的数据驱动 我们用的是pytest框架所以相对来说是简单的,我们通过pytest框架来实现,而框架中要数据驱动用到我们装饰器就好啦pytest.mark.p…...

BASLER工业相机维修不能触发拍照如何处理解决这个问题

BASLER工业相机维修不能触发拍照如何处理解决这个问题?最近遇到挺多工业相机维修咨询这个不能触发拍照的案例,所以今天优米佳维修的技术就抽空整理了这篇关于BASLER相机不能触发拍照的处理方法分享给大家。 当碰到巴斯勒工业相机不能触发拍照的问题&…...

Could not locate device support files.

报错信息:Failure Reason: The device may be running a version of iOS (13.6.1 17G80) that is not supported by this version of Xcode.[missing string: 869a8e318f07f3e2f42e11d435502286094f76de] 问题:xcode15升级到xcode16之后,13.…...

linux系统中常用文件日常使用命令记录

我们办公机是Ubuntu系统; 记录下工作中经常使用的几个文件或命令或一些零碎的知识点: (该文档会持续更新) 查看系统信息: uname -a cat /etc/product-info cat /etc/os-version 存放系统启停脚本 /etc/init.d/ 存放源…...

【C++打怪之路Lv16】-- map set

🌈 个人主页:白子寰 🔥 分类专栏:重生之我在学Linux,C打怪之路,python从入门到精通,数据结构,C语言,C语言题集👈 希望得到您的订阅和支持~ 💡 坚持…...

TPU-MLIR 项目源码结构分析

TPU-MLIR 项目源码结构分析 本文用作学习记录和交流分享,主要内容为 TPU-MLIR 的源码框架分析和构建流程分析。源码地址:https://github.com/sophgo/tpu-mlir 文件结构 从最外层开始分析 envsetup.sh 该脚本用于配置和初始化开发环境,其中…...

IDEA Maven 打包找不到程序包错误或找不到符号,报错“程序包不存在“

参考文章:https://blog.csdn.net/yueeryuanyi/article/details/14211090 问题:IDEA Maven 打包找不到程序包错误或找不到符号,报错“程序包不存在“编译都没问题 解决思路 – >【清除缓存】 1. 强制刷新Maven缓存 选择 Maven 标签,Exe…...

Sourcetree:一款强大的Git客户端

Sourcetree:一款强大的Git客户端 Sourcetree是一款由Atlassian开发的免费Git客户端,它提供了一个直观的图形界面,让用户能够轻松地管理他们的版本控制系统。无论是初学者还是有经验的开发者,Sourcetree都能提供方便快捷的Git操作…...

Linux环境变量与本地变量

文章目录 Linux环境变量与本地变量什么是环境变量查看环境变量设置环境变量本地变量命令行参数 Linux环境变量与本地变量 什么是环境变量 操作系统或运行时环境中存储的一些变量,用来存储与进程或系统相关的配置信息。这些变量在进程启动时由操作系统或Shell读取&…...

ChatGPT的应用场景:开启无限可能的大门

ChatGPT的应用场景:开启无限可能的大门 随着人工智能技术的快速发展,自然语言处理领域迎来了前所未有的突破。其中,ChatGPT作为一款基于Transformer架构的语言模型,凭借其强大的语言理解和生成能力,在多个行业和场景中展现出了广泛的应用潜力。以下是ChatGPT八个最具代表…...

QT按下两次按钮,保存这期间内变换的QtextEdit控件内的数据

这个功能在项目中很常见&#xff0c;对界面里某个控件的数据进行记录&#xff0c;我这个是每秒记录5次&#xff0c;实际就是每200ms触发一次定时器&#xff0c;来满足需求。 .h文件 #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QtSerialPort> …...

daos源码编译

1. 前言 本文详细介绍如何在almalinux8.9上编译daos.2.0.0源码。系统环境如下&#xff1a; daos: 2.0.0 linux os: almalinux 8.9 linux kernel: 4.18.0-513.5.1.el8_9.x86_64之所以选择2.0.0版本&#xff0c;是因为daos从2.0.0开始是一个全新的架构设计&a…...

19c补丁后oracle属主变化,导致不能识别磁盘组

补丁后服务器重启&#xff0c;数据库再次无法启动 ORA01017: invalid username/password; logon denied Oracle 19c 在打上 19.23 或以上补丁版本后&#xff0c;存在与用户组权限相关的问题。具体表现为&#xff0c;Oracle 实例的运行用户&#xff08;oracle&#xff09;和集…...

YSYX学习记录(八)

C语言&#xff0c;练习0&#xff1a; 先创建一个文件夹&#xff0c;我用的是物理机&#xff1a; 安装build-essential 练习1&#xff1a; 我注释掉了 #include <stdio.h> 出现下面错误 在你的文本编辑器中打开ex1文件&#xff0c;随机修改或删除一部分&#xff0c;之后…...

论文浅尝 | 基于判别指令微调生成式大语言模型的知识图谱补全方法(ISWC2024)

笔记整理&#xff1a;刘治强&#xff0c;浙江大学硕士生&#xff0c;研究方向为知识图谱表示学习&#xff0c;大语言模型 论文链接&#xff1a;http://arxiv.org/abs/2407.16127 发表会议&#xff1a;ISWC 2024 1. 动机 传统的知识图谱补全&#xff08;KGC&#xff09;模型通过…...

微服务商城-商品微服务

数据表 CREATE TABLE product (id bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 商品id,cateid smallint(6) UNSIGNED NOT NULL DEFAULT 0 COMMENT 类别Id,name varchar(100) NOT NULL DEFAULT COMMENT 商品名称,subtitle varchar(200) NOT NULL DEFAULT COMMENT 商…...

关于 WASM:1. WASM 基础原理

一、WASM 简介 1.1 WebAssembly 是什么&#xff1f; WebAssembly&#xff08;WASM&#xff09; 是一种能在现代浏览器中高效运行的二进制指令格式&#xff0c;它不是传统的编程语言&#xff0c;而是一种 低级字节码格式&#xff0c;可由高级语言&#xff08;如 C、C、Rust&am…...

RNN避坑指南:从数学推导到LSTM/GRU工业级部署实战流程

本文较长&#xff0c;建议点赞收藏&#xff0c;以免遗失。更多AI大模型应用开发学习视频及资料&#xff0c;尽在聚客AI学院。 本文全面剖析RNN核心原理&#xff0c;深入讲解梯度消失/爆炸问题&#xff0c;并通过LSTM/GRU结构实现解决方案&#xff0c;提供时间序列预测和文本生成…...

springboot整合VUE之在线教育管理系统简介

可以学习到的技能 学会常用技术栈的使用 独立开发项目 学会前端的开发流程 学会后端的开发流程 学会数据库的设计 学会前后端接口调用方式 学会多模块之间的关联 学会数据的处理 适用人群 在校学生&#xff0c;小白用户&#xff0c;想学习知识的 有点基础&#xff0c;想要通过项…...

动态 Web 开发技术入门篇

一、HTTP 协议核心 1.1 HTTP 基础 协议全称 &#xff1a;HyperText Transfer Protocol&#xff08;超文本传输协议&#xff09; 默认端口 &#xff1a;HTTP 使用 80 端口&#xff0c;HTTPS 使用 443 端口。 请求方法 &#xff1a; GET &#xff1a;用于获取资源&#xff0c;…...

解析奥地利 XARION激光超声检测系统:无膜光学麦克风 + 无耦合剂的技术协同优势及多元应用

在工业制造领域&#xff0c;无损检测&#xff08;NDT)的精度与效率直接影响产品质量与生产安全。奥地利 XARION开发的激光超声精密检测系统&#xff0c;以非接触式光学麦克风技术为核心&#xff0c;打破传统检测瓶颈&#xff0c;为半导体、航空航天、汽车制造等行业提供了高灵敏…...

【Linux】自动化构建-Make/Makefile

前言 上文我们讲到了Linux中的编译器gcc/g 【Linux】编译器gcc/g及其库的详细介绍-CSDN博客 本来我们将一个对于编译来说很重要的工具&#xff1a;make/makfile 1.背景 在一个工程中源文件不计其数&#xff0c;其按类型、功能、模块分别放在若干个目录中&#xff0c;mak…...