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

HTML飞舞的爱心

目录 系列文章 写在前面 完整代码 代码分析 写在后面 系列文章 序号目录1HTML满屏跳动的爱心&#xff08;可写字&#xff09;2HTML五彩缤纷的爱心3HTML满屏漂浮爱心4HTML情人节快乐5HTML蓝色爱心射线6HTML跳动的爱心&#xff08;简易版&#xff09;7HTML粒子爱心8HTML蓝色…...

C++中智能指针的使用及其原理 -- RAII,内存泄漏,shared_ptr,unique_ptr,weak_ptr

目录 1.智能指针的使用场景分析 2.RAII和智能指针的设计思路 3.C标准库智能指针的使用 4.智能指针的原理以及模拟实现 5.shared_ptr循环引用问题和weak_ptr 5.1shared_ptr循环引用问题 5.2weak_ptr的原理和部分接口 5.3weak_ptr的简单模拟实现 6. shared_ptr的线程安…...

Linux服务器安装mongodb

因为项目需要做评论功能&#xff0c;领导要求使用mongodb&#xff0c;所以趁机多学习一下。 在服务器我们使用docker安装mongodb 1、拉取mongodb镜像 docker pull mongo &#xff08;默认拉取最新的镜像&#xff09; 如果你想指定版本可以这样 docker pull mongo:4.4&#…...

Android11修改摄像头前后置方法,触觉智能RK3568开发板演示

本文介绍在Android11系统下&#xff0c;修改摄像头前后置属性的方法。使用触觉智能EVB3568鸿蒙开发板演示&#xff0c;搭载瑞芯微RK3568&#xff0c;四核A55处理器&#xff0c;主频2.0Ghz&#xff0c;1T算力NPU&#xff1b;支持OpenHarmony5.0及Linux、Android等操作系统&#…...

leetcode 212. 单词搜索 II

给定一个 m x n 二维字符网格 board 和一个单词&#xff08;字符串&#xff09;列表 words&#xff0c; 返回所有二维网格上的单词 。 单词必须按照字母顺序&#xff0c;通过 相邻的单元格 内的字母构成&#xff0c;其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一…...

Taro 鸿蒙技术内幕系列(三) - 多语言场景下的通用事件系统设计

基于 Taro 打造的京东鸿蒙 APP 已跟随鸿蒙 Next 系统公测&#xff0c;本系列文章将深入解析 Taro 如何实现使用 React 开发高性能鸿蒙应用的技术内幕 背景 在鸿蒙生态系统中&#xff0c;虽然原生应用通常基于 ArkTS 实现&#xff0c;但在实际研发过程中发现&#xff0c;使用 C…...

《Docker Registry(镜像仓库)详解》

一、引言 在容器化技术日益普及的今天&#xff0c;Docker 已成为众多开发者和企业的首选工具。而 Docker Registry&#xff08;镜像仓库&#xff09;作为 Docker 生态系统中的重要组成部分&#xff0c;负责存储和分发 Docker 镜像。本文将深入探讨 Docker Registry 的概念、功能…...

AI前景分析展望——GPTo1 SoraAI

引言 人工智能&#xff08;AI&#xff09;领域的飞速发展已不仅仅局限于学术研究&#xff0c;它已渗透到各个行业&#xff0c;影响着从生产制造到创意产业的方方面面。在这场技术革新的浪潮中&#xff0c;一些领先的AI模型&#xff0c;像Sora和OpenAI的O1&#xff0c;凭借其强大…...

超级详细讲解转义字符,\? \‘ \f \0 \t等等!!!

C语言有一组特殊的字符称作转义字符&#xff0c;顾名思义&#xff0c;转变原来的意思 1 \? ??)是一个三字母词&#xff0c;在以前的编译器它会被编译为] (??会被编译为[ 因此在以前输入(are you ok ??)就会被编译为are you ok ] 解决这个问题只要在问号前输入\&#xf…...

微信小程序数据请求教程:GET与POST请求详解

微信小程序数据请求教程:GET与POST请求详解 引言 在微信小程序的开发过程中,数据请求是至关重要的一部分。通过与后端服务器进行通信,小程序能够获取动态数据,实现丰富的功能。在这篇文章中,我们将深入探讨微信小程序中的数据请求,重点介绍GET和POST请求的使用方法、示…...

湖北响应式网站建设/百度文库首页

笔记本电脑鼠标动不了怎么办(鼠标没反应怎么解决)鼠标和键盘一样&#xff0c;是辅助我们进行电脑操作的设备&#xff0c;使用没有鼠标的笔记本需要很长时间适应&#xff0c;使用鼠标比较方便&#xff0c;为笔记本配置了一个鼠标&#xff0c;但是比起台式机的鼠标&#xff0c;笔…...

wordpress模板二次元/必应搜索引擎怎么样

1 /** 2 * author 陈维斌 3 * 如果想将日期字符串格式化,需先将其转换为日期类型Date 4 * 以下是提供几种常用的 5 * 6 * var da new Date().format(yyyy-MM-dd hh:mm:ss); //将日期格式串,转换成先要的格式 7 * alert("格式化日期类型 \n" new Date() "\n 为…...

培训销售网站建设/免费b2b推广网站

一.先以非授权的模式启动MongoDB非授权&#xff1a; linux/Mac : mongod -f /mongodb/etc/mongo.conf windows : mongod --config c:\mongodb\etc\mongo.conf 或者 net start mongodb &#xff08;前提是mongo安装到了服务里面&#xff09; 备注&#xff1a; /mongodb/etc/mong…...

洛阳平台公司/seo成都培训

可以使用 IN 子句代替许多 OR 条件。要想理解 IN 子句&#xff0c;还以表 employee_tbl 为例&#xff0c;它的所有记录如下所示&#xff1a;mysql> SELECT * FROM employee_tbl;--------------------------------------------| id | name | work_date | daily_typing_pages …...

做彩票网站收费标准/企业网站seo排名优化

Linux下的链接器支持一个强大的库打桩&#xff08;library interpositioning&#xff09;&#xff0c;允许你拦截对系统标准库中某个目标函数的调用&#xff0c;取而代之执行自己的包装函数。它可以给我们带来两个好处&#xff0c;一是通过添加某些语句&#xff0c;可以追踪自己…...

长安h5网站建设/怎么做私人网站

阅读本文前&#xff0c;请您先点击上面的房产兮&#xff0c;再点击“关注”&#xff0c;这样您就可以继续免费收到最新文章了。每天都有分享。完全是免费订阅&#xff0c;请放心关注一租客自己安装了空调&#xff0c;当要搬走的时候&#xff0c;房东不让他拆管道&#xff0c;而…...