zookeeper学习(一)zk特性与节点数据类型详解(2022)

news/2024/4/29 6:01:04/文章来源:https://blog.csdn.net/royal1235/article/details/128123215

Zookeeper是一个开源的分布式协调框架,主要用来解决分布式集群中应用系统的一致性问题。从设计模式角度来理解其实zk是一个基于观察者模式设计的分布式服务管理框架。

CAP理论:

cap理论指出对于一个分布式计算系统来说,不可能同时满足以下三点:

  • 一致性:在分布式环境中,一致性是指数据在多个副本之间是否能够保持一致的特性,等同于所有节点访问同一份最新的数据副本。在一致性的需求下,当一个系统在数据一致的状态下执行更新操作后,应该保证系统的数据仍处于一致的状态。
  • 可用性:每次请求都能获取到正确的响应,但是不保证获取的数据为最新数据。
  • 分区容错性:分布式系统在遇到任何网络分区故障的时候,仍然需要能够保证对外提供满足一致性和可用性的服务,除非是整个网络环境都发生了故障。

一个分布式系统最多只能同时满足一致性(Consistency)、可用性(Availability)和分区容错性(Partition tolerance)这三项中的两项。

zookeeper保证的CP,eureka是AP ,redis是AP

BASE理论:

base是Basically Available(基本可用)、Soft-state(软状态)和Eventually Consistent(最终一致性)

  • 基本可用:在分布式系统出现故障,允许损失部分可用性(服务降级、页面降级)
  • 软状态:允许分布式系统出现中间状态,而且中间状态不影响系统的可用性,这里的中间状态是指不同的数据备份节点之间的数据更新可以出现延时的最终一致性。
  • 最终一致性:数据备份节点之间经过一段时间达到一致性。

BASE理论是对CAP中的一致性和可用性进行一个权衡的结果,理论的核心思想就是:我们无法做到强一致,但每个应用都可以根据自身的业务特点,采用适当的方式来使系统达到最终一致性。

强一致性:任意时刻,所有节点中的数据是一样的,一个集群需要对外部提供强一致性,所以只要集群内部某一台服务器的数据发生了改变,那么就需要等待集群内其他服务器的数据同步完成后才能正常对外提供服务;保证了强一致性,务必会损耗可用性。

弱一致性:系统中的某个数据被更新后,后续对该数据的读取操作可能得到更新后的值,也可能是更改前的值,即使过了不一致时间窗口,后续的读取也不一定能保证一致。

最终一致性:弱一致性的特殊形式,不保证在任意时刻任意节点上的同一份数据是相同的,但是随着时间的迁移,不同节点上的同一份数据总是在向趋同的方向变化。

顺序一致性:任何一次读都能读到某个数据的最近一次写的数据。对其他节点之前的修改是可见且确定的,并且新的写入建立在已经达成同步的基础上。

Zookeeper写入是强一致性,读取是顺序一致性。

zk数据结构:

zk数据模型结构与Unix文件系统很类似,整体上可以看作是一棵树,每个节点称作一个ZNode

 zk数据模型是层次模型,层次模型和key-value模型是两种主流的数据模型,zk使用文件系统模型主要基于以下两点考虑:

  1. 文件系统的树形结构便于表达数据之间的层次关系
  2. 文件系统的树形结构便于为不同的应用分配独立的命名空间,每个节点都可以保存数据,每一个ZNode默认能够存储1MB的数据,每个ZNode都可以通过其路径唯一标识,每个节点都有一个版本,版本从0开始计数。

Zookeeper安装

zookeeper下载安装方式可以看这一篇文章:linux环境安装zookeeper(一)_酒书的博客-CSDN博客

在启动zk的时候如果报了这个错就是没有jdk环境,需要先装一下jdk环境,可以参考下面这篇文章

linux安装jdk和tomcat_酒书的博客-CSDN博客_linux 安装jdk和tomcat

有了jdk环境启动zk成功

通过命令查看zk状态bin/zkServer.sh status

 然后启动zkClient连接zk server,使用命令bin/zkCli.sh -server ip:端口

zookeeper节点分类:

1、持久节点(PERSISTENT):这样的znode在创建之后即使发生zk集群宕机或者client宕机也不会丢失。

2、临时节点(EPHEMERAL):client宕机或者client在指定的timeout时间内没有给zk集群发消息,这样的znode就会消失。

3、持久顺序节点(PERSISTENT_SEQUENTIAL):znode除了具备持久性znode的特点之外,znode的名字具备顺序性。

4、临时顺序节点(EPHEMERAL_SEQUENTIAL):znode除了具备临时性znode的特点之外,znode的名字具备顺序性。

5、Container节点(3.5.3版本新增):Container容器节点,当容器中没有任何子节点,该容器节点会被zk定期删除(定时任务默认60s检查一次)。和持久节点的区别是zk服务端启动后,会有一个单独的线程去扫描所有的容器节点,当发现容器节点的子节点数量为0时,会自动删除该节点。可以用于leader或者锁场景中。

#创建容器节点
create c /container xxx

6、TTL节点:带过期时间节点,默认禁用,需要在zoo.cfg中添加extendedTypesEnabled=true开启,注意TTL不能用于临时节点

# 创建ttl节点:create t 10 /ttl

zookeeper节点特性总结

1、同一级节点key名称是唯一的

 2、创建节点时,必须要带上全路径

3、session关闭,临时节点清除

4、watch机制,监听节点变化

事件监听机制类似于观察者模式,watch流程是客户端向服务端某个节点路径上注册一个watcher,同时客户端也会存储特定的watcher,当节点数据或子节点发生变化时,服务端通知客户端,客户端进行回调处理。

5、delete命令只能一层一层删除。提示:新版本可以通过deleteall命令递归删除

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_228869.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

golang知识点整理

目录 1、goroutine GMP模型 2、goroutine阻塞的处理 3、goroutine内存泄漏 4、map原理、扩容 5、go内存管理 6、go的gc 1、goroutine GMP模型 1. G代表一个goroutine对象,每次go调用的时候,都会创建一个G对象 2. M代表一个线程,每次创建…

SpringCloud:Gateway之限流、熔断

目录 一、服务雪崩简介及压测实践演示 ​编辑 二、sentinel简单模式之流控QPS案例 什么是Sentinel ​ 安装Sentinel控制台 三、sentinel流控简单模式之并发线程数案例 四、sentinel流控之关联模式&链路模式 关联模式 链路模式 五、sentinel降级之平均响应时间&…

最新 | VDA-ISA5.0.4最新版本发布,汽车企业如何增强信息安全?

汽车行业拥有广泛而复杂的供应链,包括汽车整车制造商、不同层级的零部件厂商、供应商、服务商等众多企业。在这个链条上,其中任何一家企业的网络安全问题不论是数据泄密还是内外部攻击都有可能对整个供应链造成巨大影响。 比如2021年6月,某德…

能力提高篇--协调能力【对接】

作为一名安防技术支持工程师,正常情况下我们的日常主要为解决问题,然而对于重大项目或者复杂项目,更多的情况下我们的职责为收集客户需求,拉通研发侧评估,确认需求,确认程序交付时间,测试和最终…

【python与数据分析】实验十三 北京市空气质量

目录 一、实验内容 二、完成情况 三、数据分析 1.问题描述 2.编程思路 3.程序代码 4.程序运行结果 (1)2014年-2019年AQI时间序列折线图 (2)各年AQI折线图、AQI直方图、PM2.5与AQI散点图、空气质量整体情况的饼图 ​&am…

10-18-hive-元数据及其他方式与hive交互

10-hive-元数据及其他方式访问hive&#xff1a; 使用元数据服务的方式访问 Hive (类似将hive提供了一个服务端) 1&#xff09;在hive-site.xml 文件中添加如下配置信息 <!-- 指定存储元数据要连接的地址 --> <property> <name>hive.metastore.uris</nam…

[附源码]计算机毕业设计SpringBoot网上鲜花购物系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

Day16-购物车页面-商品列表修改购物车商品的勾选状态

提纲挈领&#xff1a; 我的操作&#xff1a; 1》当用户点击 radio 组件&#xff0c;希望修改当前商品的勾选状态&#xff0c;此时用户可以为 my-goods 组件绑定 radio-change 事件&#xff0c;从而获取当前商品的 goods_id 和 goods_state&#xff1a; 定义 radioChangeHandle…

leetcode-每日一题-1779-找到最近的有相同 X 或 Y 坐标的点(简单,数学思想)

今天这道每日一题很简单&#xff0c;没啥可说的&#xff0c;细心点即可 1779. 找到最近的有相同 X 或 Y 坐标的点 难度简单73收藏分享切换为英文接收动态反馈 给你两个整数 x 和 y &#xff0c;表示你在一个笛卡尔坐标系下的 (x, y) 处。同时&#xff0c;在同一个坐标系下给你一…

GEE开发之Modis_GPP数据分析和获取

GEE开发之Modis_GPP数据分析和获取1.GPP2.MOD系列和MYD系列区别3.MOD17A2H(500m/8天)4.MYD17A2H(500m/8天)4.1 MYD17A2H下的指数4.2 遥感影像查看5.GPP日数据下载(以MYD17A2H为例)6.GPP月数据下载(以MYD17A2H为例)7.GPP年数据下载(以MYD17A2H为例)前言&#xff1a;主要介绍利用…

flask入门教程之数据库保存

计算机操作数据时&#xff0c;一般是在内存中对数据进行处理&#xff0c;但是计算机的内存空间有限&#xff0c;服务器操作大量数据时&#xff0c;容易造成内存不足&#xff0c;且一旦计算机关机&#xff0c;则内存数据就丢失。所以我们需要将数据进行存储。 持久化&#xff0…

Java 基础数据类型占用内存空间和字符串编码简介(二)

Java 基础数据类型占用内存空间简介一 计算机简介1.基本概念2.CPU 三级缓存3.本机参数查看二 数据占用内存情况1.多线程Demo2.结果解析1.直接计算2.volatile 计算3.缓存行填充一 计算机简介 结合多线程计算机的硬件&#xff0c;从侧面理解数据存储如何影响我们的程序 1.基本概…

门面/外观模式

一、门面模式 1、定义 门面模式&#xff08;Facade Pattern&#xff09;又称作外观模式&#xff0c;是指提供一个统一的接口&#xff0c;用来访问子系统中的一群接口&#xff0c;属于结构型设计模式。 门面模式的主要特征是定义了一个高层接口&#xff0c;让子系统更容易使用。…

自然语言处理NLP——ERNIE-M:基于回译机制的“预训练-微调”多语言模型

目录 系列文章目录 一、背景介绍 1.多语言任务 1.1 多语言任务定义 1.2 多语言任务难题 2.多语言模型 2.1 多语言模型定义与原理 2.2 多语言模型困难 3.论文简介 3.1 背景与开发动机 3.2 论文梗概 3.3 论文贡献与成就 二、相关工作 1.预训练方法 1.1 预训练方法…

Tomcat的安装、在idea中的使用以及创建Web项目

目录Tomcat的安装Tomcat运行Tomcat在idea中的使用创建Web项目最后Tomcat的安装 Tomcat的官网: https://tomcat.apache.org/ 从官网上可以下载对应的版本进行使用。 下载windows64位&#xff0c;版本自行选择。 下载好之后找到压缩包进行解压&#xff0c;注意目录不要有中文且…

1. 一些截图方法的比较;2. 将截图直接转换为PDF并拼接,与插入Word后再转换为PDF的对比

1. 一些截图方法的比较 1.1. 有时候当某个软件没有导出功能&#xff0c;或者导出功能受限&#xff0c;比如 tableau public&#xff0c;但又需要获取展示出的可视化信息时&#xff0c;就需要用到截图。如果这些截图还要用在正式文档中&#xff0c;就需要是高清的&#xff0c;至…

[附源码]Python计算机毕业设计SSM篮球馆预约小程序(程序+LW)

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

TypeScript(TS)基础内容详细介绍

目录 一、TypeScript概念 二、TypeScript特点 三、开发环境配置 四、初识ts 五、TypeScript类型声明 1、any&#xff1a; 2、number数字类型 3 string字符串类型 4 boolean布尔类型 表示逻辑值&#xff1a;true 和 false。 5 数组类型 6 元组类型 7 enum枚举类型…

Java8 函数式编程【基础篇】

Java 8是Java在保持向后兼容的前提下首次迈出重要一步&#xff0c;相比之前&#xff0c;不再是只对类库的改良&#xff0c;在编写复杂的集合处理、并行化执行、代码简洁度等方面都有颠覆性的提升。本文将探索和理解函数式编程的含义&#xff0c;以及它在Java 8中的实现。 一、…

全光谱台灯对孩子有伤害吗?儿童用台灯的好处和坏处是什么

全光谱台灯是指灯光色谱丰富度与太阳光一般全面的台灯&#xff0c;这样的灯光照射下的任何物体&#xff0c;不但颜色丰富多彩&#xff0c;而且极其真实&#xff0c;无限接近太阳光下的真实色彩&#xff0c;对人眼舒适度有巨大的提升&#xff0c;所以全光谱台灯不但对孩子无害&a…