Zookeeper系列——概述

news2024/11/25 5:48:51

Zookeeper系列——概述

  • Zookeeper
    • 官方文档
    • 模型结构
      • 模型的特点
    • 节点的类型
      • 持久节点(PERSISTENT)
      • 持久顺序节点(PERSISTENT_SEQUENTIAL)
      • 临时节点(EPHEMERAL)
      • 临时顺序节点(EPHEMERAL_SEQUENTIAL)
    • 安装Zookeeper
      • 启动
      • 进入容器
      • 连接zookeeper的cli
    • 配置文件(zoo_sample.cfg)
    • Docker启动zookeeper并指定配置文件
    • 指令
      • 指定服务器进行连接
      • 查看所有节点
      • 查看某个节点
      • 创建节点(默认为持久节点)
      • 删除节点(无子节点)
      • 删除节点(含有子节点)
      • 退出连接,会话失效
      • 查看节点状态
      • 获取节点上的数据信息
      • 修改节点数据

Zookeeper

ZooKeeper是一个集中式服务,用于维护配置信息、命名、提供分布式同步和提供组服务。所有这些类型的服务都以某种形式被分布式应用程序使用。每次实现它们时,都有大量的工作要去修复不可避免的bug和争用条件。由于实现这些类型的服务的难度,应用程序最初通常会对这些服务略施小计,这会使它们在发生变化时变得脆弱,并且难以管理。即使正确地执行这些服务,这些服务的不同实现也会导致部署应用程序时的管理复杂性。

一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chuby一个开源的实现,是Hadoop和Hbase的重要组件。ZooKeeper使用Java所编写,但是支持Java和C两种编程语言。

官方文档

https://zookeeper.apache.org/

模型结构

在这里插入图片描述

模型的特点

  1. 每个子目录如/node1都被称作一个znode(节点)。这个znode是被它所在的路径唯一标识
  2. znode可以有子节点目录,并且每个znode 可以存储数据
  3. znode 是有版本的,每个znode中存储的数据可以有多个版本,也就是一个访问路径中可以存储多份数据
  4. znode可以被监控,包括这个目录节点中存储的数据的修改,子节点目录的变化等,一旦变化可以通知设置监控的客户端

节点的类型

持久节点(PERSISTENT)

节点在被创建后就一直存在直到主动删除(即使客户端消失也存在)

持久顺序节点(PERSISTENT_SEQUENTIAL)

节点在被创建后就一直存在直到主动删除,在ZK中,每个父节点会为他的第一级子节点维护一份时序,会记录每个子节点创建的先后顺序。基于这个特性,在创建子节点的时候,可以设置这个属性,那么在创建节点过程中,ZK会自动为给定节点名加上一个数字后缀,作为新的节点名。这个数字后缀的范围是整型的最大值。

临时节点(EPHEMERAL)

生命周期和客户端一致,客户端消亡,节点自动清除且不能有子节点

临时顺序节点(EPHEMERAL_SEQUENTIAL)

生命周期和客户端一致,客户端消亡,节点自动清除且不能有子节点,每个父节点会为他的第一级子节点维护一份时序

安装Zookeeper

我使用的docker安装方式

docker search zookeeper
//安装Java
docker pull adoptopenjdk/openjdk8
//安装zookeeper
docker pull zookeeper

启动

docker run --name zk -p 2181:2181 -d zookeeper

在这里插入图片描述

进入容器

docker exec -it 4284ec625c83 bash

在这里插入图片描述

连接zookeeper的cli

找到bin目录下的zkCli.sh启动

./zkCli.sh

在这里插入图片描述

配置文件(zoo_sample.cfg)

  1. tickTime:集群节点之间的心跳时间
  2. initLimit:初始化集群时的超时时间n*10s
  3. syncLimit:集群在运行时同步数据的超时时间
  4. dataDir:存储数据的默认位置
  5. clientPort:客户端端口(默认2181)
  6. maxClientCnxns:线程池线程数量
# The number of milliseconds of each tick
tickTime=2000
# The number of ticks that the initial 
# synchronization phase can take
initLimit=10
# The number of ticks that can pass between 
# sending a request and getting an acknowledgement
syncLimit=5
# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just 
# example sakes.
dataDir=/tmp/zookeeper
# the port at which the clients will connect
clientPort=2181
# the maximum number of client connections.
# increase this if you need to handle more clients
#maxClientCnxns=60
#
# Be sure to read the maintenance section of the 
# administrator guide before turning on autopurge.
#
# http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
#
# The number of snapshots to retain in dataDir
#autopurge.snapRetainCount=3
# Purge task interval in hours
# Set to "0" to disable auto purge feature
#autopurge.purgeInterval=1

## Metrics Providers
#
# https://prometheus.io Metrics Exporter
#metricsProvider.className=org.apache.zookeeper.metrics.prometheus.PrometheusMetricsProvider
#metricsProvider.httpPort=7000
#metricsProvider.exportJvmInfo=true

Docker启动zookeeper并指定配置文件

意思是指定/root/dockerfiles/zookeeperconf目录作为zookeeper的conf目录

docker run --name zk -p 2181:2181 -v /root/dockerfiles/zookeeperconf:/conf -d zookeeper

指令

指定服务器进行连接

./zkCli.sh -server 地址:2181

查看所有节点

ls /

查看某个节点

ls /节点名称

创建节点(默认为持久节点)

create -节点类型 /节点名称 数据
//持久节点
create -p /node1 1
//持久顺序
create -s /node2 2
//临时
create -e /node3 3
//临时顺序
create -s -e /node4 4 

删除节点(无子节点)

delete /节点名称

删除节点(含有子节点)

递归删除全部

rmr /节点名称

退出连接,会话失效

quit

查看节点状态

stat /节点名称

在这里插入图片描述

  1. cZxid:创建的事务ID
  2. ctime:创建时间
  3. mZxid:修改的ID
  4. mtime:修改的时间
  5. pZxid:父节点ID
  6. cversion:创建的版本号
  7. dataVersion:节点数据版本号
  8. aclVersion:节点ACL的版本号
  9. ephemeralOwner:如果节点是临时节点,则表示创建该节点的会话的SessionID;如果节点是持久节点,则属性值为0
  10. dataLength:数据内容的长度
  11. numChildren:子节点个数

获取节点上的数据信息

get /节点名称

修改节点数据

set /节点名称 数据

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

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

相关文章

基于微信小程序的足浴城消费系统设计与实现-计算机毕业设计源码+LW文档

小程序开发说明 开发语言:Java 框架:ssm JDK版本:JDK1.8 服务器:tomcat7 数据库:mysql 5.7(一定要5.7版本) 数据库工具:Navicat11 开发软件:eclipse/myeclipse/idea Mav…

m基于simulink的WCDMA通信链路仿真

目录 1.算法概述 2.仿真效果预览 3.核心MATLAB代码预览 4.完整MATLAB程序 1.算法概述 W-CDMA由ETSI NTT DoCoMo作为无线介面为他们的3G网路FOMA开发。后来NTTDocomo提交给ITU一个详细规范作为一个象IMT-2000一样作为一个候选的国际3G标准。国际电信联盟(ITU) 最终接受W-CDM…

ESP32-WROOM-32 ESP32 wifi模块基本参数与引脚定义

基本参数: WiFi描述标准FCC/CE/TELEC/KCC/SRRC/NCC协议 802.11 b/g/n/e/i (802.11n,速度高达150Mbps) A-MPDU和A-MSDU聚合,支持0.4μS防护间隔 频率范围2.4GHz~2.5GHz(2400M~2483.5M)蓝牙描述协议符合蓝牙v4.2BR/EDR和BLE标准射频 具有-98dB…

nosql课后答案

文章目录第一章 绪论1. NoSQL和关系型数据库在设计目标上有何主要区别?2. 简要总结一下NoSQL数据库的技术特点。第二章 NoSQL数据库的基本原理1. 描述分布式数据管理的特点。2 什么是CAP原理?CAP原理是否适用于单机环境?3. 简述BASE理论的具体…

杨紫开直播被吐槽脸胖、脖子粗、嘴唇厚,这就是明星开美颜的原因

自从发明了美颜,人人都变成了美女,不过这样的话也有弊端,那就是真真假假虚虚实实难以辨别。爱美之心人皆有之。尤其是娱乐圈的明星,在直播的时候更是开启十级美颜,以至于整个人都变形了。 当然也有不开美颜的明星&…

【技术分享】计算机视觉常见的十种图像标注方法

文章目录1.语义分割2.矩形框标注3.多边形标注4.关键点标注5.立方体标注6.3D点云标注7.2D/3D融合标注8.目标追踪9.OCR转写10.属性识别1.语义分割 语义分割是指根据物体的属性,对复杂不规则图片进行进行区域划分,并标注对应上属性,以帮助训练图…

工业互联网MES解决方案-最新全套文件

工业互联网MES解决方案-最新全套文件一、建设背景生产企业面临的问题:二、思路架构MES系统的实现对企业的影响:三、建设方案四、获取 - 工业互联网MES全套最新解决方案合集一、建设背景 MES(生产制造执行系统)在整个企业生产过程…

《FFmpeg Basics》中文版-08-模糊,锐化和其他去噪

正文 包含各种噪声的视频输入可以使用去噪滤波器和选项来增强。 在视频编码之前,去噪是视频预处理的一部分。 模糊视频效果 模糊效果用于提高图像(视频帧)中某些类型的噪声的质量,其中每个输出像素值是根据相邻像素值计算的。 …

java项目-第138期ssm就业信息管理系统-java毕业设计_计算机毕业设计

java项目-第138期ssm就业信息管理系统-java毕业设计_计算机毕业设计 【源码请到资源专栏下载】 今天分享的项目是《ssm就业信息管理系统》 该项目分为管理员和普通用员2个角色。 普通用户有就业信息、就业统计2个功能 管理员用户有就业信息、 就业统计:按专业统计 …

AVR单片机及其编译软件

内容包括AVRStudio及WinAVR介绍,软件下载地址,编译环境设置,IAR for AVR的使用,AVR单片机的介绍。紫色文字是超链接,点击自动跳转至相关博文。持续更新,原创不易! 目录: 一、AVRSt…

用Python脚本能获取Wifi密码么?能。

注意,本文不是破解 WIFI 密码,当然你把程序发给别人再获取对方密码,那是社会工程学。 文章目录⛳️ 实战场景与 subprocess 模块介绍⛳️ Python 获取本地 Wifi 密码⛳️ 实战场景与 subprocess 模块介绍 这篇博客给大家带来一个小小的案例&…

魏副业而战:做闲鱼比打工强

我是魏哥,与其在家躺平,不如魏副业而战! 学员小D做闲鱼又赚了122元,并在社群中晒了收入截图,大家纷纷点赞。 小D说,做闲鱼比打工强,一边聊天,一边赚钱,很喜欢这种赚钱方…

多线程服务器端的实现

理解线程的概念 引入线程的背景 多进程模型的缺点 ①、创建进程的过程会给操作系统带来相当沉重的复旦 ②、为了完成进程间数据交换,需要特殊的IPC技术 ③、每秒少则数十次、多则数千次的“上下文切换”是创建进程时最大的开销(主要) 线…

2022实验室更新 DBCO-NH2,DBCO-Amine 叠氮化物功能化化合物

DBCO(二苯并环辛炔) 氨基衍生物,可与含有羧基的生化小分子形成稳定酰胺键连接。DBCO-NHS酯是一种与胺反应的化合物,可用于修饰含胺分子(在水性介质中的溶解度有限)。它与伯胺(例如赖氨酸的侧链氨基或多肽的N端氨基)在中性或弱碱性pH下反应形成共价键。这…

某政府门户网站维护项目运维方案

一.1 运维总体原则 一.1.1 整体性原则 我们将综合考虑XXX目前所有门户网站相关应用系统的现状,提出整体的运行维护策略,有效保障系统运行中各环节的不间断运行,并综合使用不同层次的技术手段,为应用系统和系统依托的基础环境提供全…

【AI理论学习】多模态介绍及当前研究方向

多模态介绍及当前研究方向什么是多模态?多模态的任务和数据集有哪些?多种模态融合的方式有哪些?多模态任务的研究方向有哪些?参考资料什么是多模态? 什么是多模态?多模态指的是多种模态的信息,…

Golang入门笔记(8)—— init 函数

init 函数 : 每一个源文件都可以包含一个init函数,该函数会在 程序入口main函数执行前 ,被Go运行的框架进行调用。 测试代码: package mainimport ("fmt" )func init() {fmt.Println("init...") }func main(…

vue 项目源码映射失败问题解决

文章目录vue 项目源码映射失败问题解决前言解决方案效果参考vue 项目源码映射失败问题解决 前言 不知何时起,项目控制台调试进入源代码变成编译后的文件了,调试起来十分不便,强迫症十分难受(像是自己英语水平一般,基…

人工智能:PyTorch深度学习框架介绍

目录 1、PyTorch 2、PyTorch常用的工具包 3、PyTorch特点 4、PyTorch不足之处 今天给大家讲解一下PyTorch深度学习框架的一些基础知识,希望对大家理解PyTorch有一定的帮助! 1、PyTorch PyTorch是一个基于Torch的Python机器学习框架。它是由Facebook的人工…

Android Studio实现记单词App,背完四六级一次过~

项目目录一、项目概述二、主要技术三、开发环境四、详细设计1、数据库2、单词详情3、搜索单词五、运行演示一、项目概述 本系统包含高考、四级、六级、托福和雅思词汇五个章节。每个章节分为多个单元,每个单元又包含上百个词汇。可以在单元列表查询单词&#xff0c…