当前位置: 首页 > 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…...

浏览器访问 AWS ECS 上部署的 Docker 容器(监听 80 端口)

✅ 一、ECS 服务配置 Dockerfile 确保监听 80 端口 EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]或 EXPOSE 80 CMD ["python3", "-m", "http.server", "80"]任务定义&#xff08;Task Definition&…...

【杂谈】-递归进化:人工智能的自我改进与监管挑战

递归进化&#xff1a;人工智能的自我改进与监管挑战 文章目录 递归进化&#xff1a;人工智能的自我改进与监管挑战1、自我改进型人工智能的崛起2、人工智能如何挑战人类监管&#xff1f;3、确保人工智能受控的策略4、人类在人工智能发展中的角色5、平衡自主性与控制力6、总结与…...

Docker 运行 Kafka 带 SASL 认证教程

Docker 运行 Kafka 带 SASL 认证教程 Docker 运行 Kafka 带 SASL 认证教程一、说明二、环境准备三、编写 Docker Compose 和 jaas文件docker-compose.yml代码说明&#xff1a;server_jaas.conf 四、启动服务五、验证服务六、连接kafka服务七、总结 Docker 运行 Kafka 带 SASL 认…...

2021-03-15 iview一些问题

1.iview 在使用tree组件时&#xff0c;发现没有set类的方法&#xff0c;只有get&#xff0c;那么要改变tree值&#xff0c;只能遍历treeData&#xff0c;递归修改treeData的checked&#xff0c;发现无法更改&#xff0c;原因在于check模式下&#xff0c;子元素的勾选状态跟父节…...

【Java_EE】Spring MVC

目录 Spring Web MVC ​编辑注解 RestController RequestMapping RequestParam RequestParam RequestBody PathVariable RequestPart 参数传递 注意事项 ​编辑参数重命名 RequestParam ​编辑​编辑传递集合 RequestParam 传递JSON数据 ​编辑RequestBody ​…...

k8s业务程序联调工具-KtConnect

概述 原理 工具作用是建立了一个从本地到集群的单向VPN&#xff0c;根据VPN原理&#xff0c;打通两个内网必然需要借助一个公共中继节点&#xff0c;ktconnect工具巧妙的利用k8s原生的portforward能力&#xff0c;简化了建立连接的过程&#xff0c;apiserver间接起到了中继节…...

Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决

Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决 问题背景 在一个基于 Spring Cloud Gateway WebFlux 构建的微服务项目中&#xff0c;新增了一个本地验证码接口 /code&#xff0c;使用函数式路由&#xff08;RouterFunction&#xff09;和 Hutool 的 Circle…...

docker 部署发现spring.profiles.active 问题

报错&#xff1a; org.springframework.boot.context.config.InvalidConfigDataPropertyException: Property spring.profiles.active imported from location class path resource [application-test.yml] is invalid in a profile specific resource [origin: class path re…...

Fabric V2.5 通用溯源系统——增加图片上传与下载功能

fabric-trace项目在发布一年后,部署量已突破1000次,为支持更多场景,现新增支持图片信息上链,本文对图片上传、下载功能代码进行梳理,包含智能合约、后端、前端部分。 一、智能合约修改 为了增加图片信息上链溯源,需要对底层数据结构进行修改,在此对智能合约中的农产品数…...

基于Java+MySQL实现(GUI)客户管理系统

客户资料管理系统的设计与实现 第一章 需求分析 1.1 需求总体介绍 本项目为了方便维护客户信息为了方便维护客户信息&#xff0c;对客户进行统一管理&#xff0c;可以把所有客户信息录入系统&#xff0c;进行维护和统计功能。可通过文件的方式保存相关录入数据&#xff0c;对…...