Zookeeper

作为分布式中间件,zookeeper有以下几个重要功能

  1. 服务注册
  2. 服务监听 :观察者模式,有服务上线或下线可以感知,并进行响应回调处理
  3. 服务拉取
  4. 配置中心
  5. CP特性
  6. 数据存储方式为标准的文件结构

安装zk需要java环境,可参考
linux搭建java环境

查看服务启动脚本的命令

bin/zkServer.sh

以此可以看到脚本启动时,支持的参数
在这里插入图片描述
启动zk服务

bin/zkServer.sh start

启动成功日志
在这里插入图片描述
查看服务启动时的状态

bin/zkServer.sh status

在这里插入图片描述
可以看到,上面包含了zk服务启动时加载的配置文件,ip端口号,启动方式为单节点

连接zk客户端

bin/zkCli.sh

在这里插入图片描述
zk客户端,可以通过命令行的方式,对节点进行增删改查的操作
cli命令参考

zk节点类型:

  1. 持久节点 create /node 一直存在,即使客户端关闭
  2. 临时节点 create -e /tmpnode 客户端会话关闭或意外宕机时,该节点会被删除
    临时节点无法创建子节点
    在这里插入图片描述
  3. 有序节点

create -e -s /sortnode 临时有序节点
在这里插入图片描述
create -s /sortnode 持久有序节点
在这里插入图片描述
4. 容器节点 create -c /task
容器节点在最后一个子节点被删除后,也会自动被删除

  1. TTL节点 create -t 3000 /ttlnode
    默认此功能不开启,需修改zoo.conf中配置:
    extendedTypesEnabled = true
    当TTL节点在TTL内没有被修改并且没有子节点时,会被删除

下面来介绍一下zookeeper的一些高级的分布式特性:

  1. 使用临时节点来实现分布式锁
    zk无法重复创建同一名称的节点
    在这里插入图片描述
    在分布式场景中可以使用该特性,创建一个分布式锁
    此外另一个好处是,临时节点在客户端宕机时会自动删除,其他客户端仍然可以正常创建该节点,因此无需担心死锁问题

  2. 根据节点信息中的版本号,实现分布式乐观锁
    zk节点信息中,包含数据版本号的信息

ls -s /tmpnode

stat -w /tmpnode

在这里插入图片描述
在信息中有个dataVersion = 0,每次修改该节点信息时,版本号都会+1
在这里插入图片描述
此时若执行节点删除或修改时,可以带上版本号的参数,实现乐观锁,防止ABA问题
在这里插入图片描述
上面的操作,修改版本号为2的节点失败,原因是版本号不正确,需要更新版本号
在这里插入图片描述
版本号正确,可修改成功
在这里插入图片描述
3. 根据节点信息中的事务编号,在集群选举时可选择版本最新的节点
在节点信息中包含了zk的分布式事务属性,这是保证CP机制的关键所在
在这里插入图片描述
在集群环境中,若主节点服务宕机,会触发选举机制,集群会选举出一个新的节点来作为主节点,
在集群选举中会侧重于选择最新版本的子节点,zk在选举时会通过对比mZxid和pZxid来选择最新
版本的子节点。

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

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

相关文章

面试中关于自动化测试的认识

目录 一、什么是自动化测试,自动化测试的优势是什么? 二、什么样的项目比较适合做自动化测试,什么样的不适合做自动化测试? 三、在制定自动化测试计划的时候一般要考虑哪些点? 四、编写自动化脚本时的一些规范&…

怎么给pdf文件加密?pdf文档如何加密

在数字化时代,保护个人和机密信息的重要性越来越受到关注。PDF(Portable Document Format)是一种广泛使用的文件格式,用于共享和存储各种类型的文档。然而,由于其易于编辑和复制的特性,保护PDF文件中的敏感…

xss跨站脚本攻击总结

XSS(跨站脚本攻击) 跨站脚本攻击(Cross Site Scripting),为了不和层叠样式表(Cascading Style Sheets )CSS的缩写混淆,故将跨站脚本攻击缩写为XSS。恶意攻击者往Web页面里插入恶意Script代码,当…

css基本样式的使用

1、高度和宽度 .c1{height: 300px;width: 500px; }注意事项: 宽度,支持百分比行内标签,默认无效块级标签,默认有效(即使右侧空白,也不给你占用) 块级和行内标签 css样式 标签: di…

我在VScode学Java(Java方法method)

​ 我的个人博客主页:如果’真能转义1️⃣说1️⃣的博客主页 关于Java基本语法学习---->可以参考我的这篇博客:《我在VScode学Java》 关于Java数组学习、JVM中的堆和栈—>可以参考我的这篇文章我在VScode学Java(Java一维数组、二维数组、JVM中的堆…

Android JNI线程的同步 (十三)

🔥 Android Studio 版本 🔥 🔥 了解线程同步的两个变量 🔥 pthread_mutex_t 互斥锁 线程的互斥: 目前存在两个线程 , 线程A和线程B, 只允许只有一个资源对临界资源进程操作 (大概意思就是 : A线程 进入操作临界资源的时候 , 那么 B线程 就要进行等待 . 等到 A线程…

Spark(22):SparkStreaming之DStream创建

目录 0. 相关文章链接 1. RDD队列 1.1. 用法及说明 1.2. 案例实操 2. 自定义数据源 2.1. 用法和说明 2.2. 案例实操 3. Kafka数据源 3.1. 版本选型 3.2. Kafka 0-8 Receiver 模式(当前3.x版本不适用) 3.3. Kafka 0-8 Direct 模式(…

离线安装docker

目录 1、下载docker 安装包 2、上传docker 到服务器目录/opt/ 3、解压docker-19.03.9.tgz 4、解压的docker文件夹全部移动至/usr/bin目录 5、将docker注册为系统服务 6、重启生效 6.1、重新加载配置文件 6.2、启动Docker服务 6.3、查看启动状态 6.4、 设置docker为开…

CS 144 Lab Two -- TCPReceiver

CS 144 Lab Two -- TCPReceiver TCPReceiver 简述索引转换TCPReceiver 实现 测试 对应课程视频: 【计算机网络】 斯坦福大学CS144课程 Lab Two 对应的PDF: Lab Checkpoint 2: the TCP receiver TCPReceiver 简述 在 Lab2,我们将实现一个 TCPReceiver,用…

如何在Ubuntu上安装OpenneBula

OpenNebula是一个开源云计算平台,允许我们在完全虚拟化云中组合和管理VMware和KVM虚拟机 第1步:安装MariaDB数据库服务器 OpenNebula还需要一个数据库服务器来存储其内容。 安装MariaDB: 1 2 sudo apt update sudo apt install mariadb-s…

mac idea 常用快捷键

mac idea 常用快捷键 代码生成: Command N:在代码编辑界面生成setter、getter等代码。当光标在左侧的工程结构时,使用Command N可以创建新的类、包等。 删除和复制: Command Delete:删除当前行。Command D&#…

SringCloud集成Redis工具类

1、pom文件 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency>2、redis工具类 Service(value "redisService") Slf4j public class RedisServi…

【深度学习笔记】训练 / 验证 / 测试集

本专栏是网易云课堂人工智能课程《神经网络与深度学习》的学习笔记&#xff0c;视频由网易云课堂与 deeplearning.ai 联合出品&#xff0c;主讲人是吴恩达 Andrew Ng 教授。感兴趣的网友可以观看网易云课堂的视频进行深入学习&#xff0c;视频的链接如下&#xff1a; 神经网络和…

Bootstrap编写一个兼容主流浏览器的受众巨幕式风格页面

Bootstrap编写一个兼容主流浏览器的受众巨幕式风格页面 虽然说IE6除了部分要求苛刻的需求以外已经被可以不考虑了&#xff0c;但是WIN7自带的浏览器IE8还是需要支持的。 本文这个方法主要的优点&#xff0c;个人觉得就是准备少&#xff0c;不需要上网寻找大量的图片做素材&…

CSS ::file-selector-button伪元素修改input上传文件按钮的样式

默认样式 修改后的样式 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content"widthdev…

CNN学习记录

目录 CNN基础知识——卷积(Convolution)、填充(Padding)、步长(Stride): 卷积的三种模式:full, same, valid:

【MySQL】查询进阶

查询进阶 数据库约束约束类型NULL , DEFAULT , UNIQUE 约束主键约束外键约束 聚合查询聚合函数group by子句HAVING 联合查询内连接外连接自连接子查询单行子查询多行子查询 数据库约束 约束类型 NOT NULL #表示某行不能储存空值 UNIQUE #保证每一行必须有唯一的值 DEFAULT #规…

CSS科技感四角边框

实现效果:使用before和after就可以实现,代码量不多,长度颜色都可以自己调整 <!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>Title</title><style>*{margin:0;padding:0;}html,body{…

PostgreSQL MVCC的弊端

数据库有很多种&#xff08;截至 2023 年 4 月有 897 个&#xff09;。面对如此多的数据库&#xff0c;很难知道该选择什么&#xff01;但有一个有趣的现象&#xff0c;互联网集体决定新应用程序的默认选择。在 2000 年代&#xff0c;传统观点选择 MySQL 是因为像 Google 和 Fa…

vue3+vite+pinia+vue-router+ol项目创建及配置

一、vite (一)、定义 vite官网 (二)、操作步骤 注意&#xff1a;两种方式创建目录结构一致 方式一&#xff1a;vite创建脚手架命令&#xff1a; 命令行&#xff1a;npm create vitelatest 然后选择 方式二&#xff1a;命令行直接声明带上vue 二、pinia (一)、定义 定义&#xf…