docker安装zookeeper,以及zk可视化界面介绍

1. zookeeper

1.1. zookeeper简单介绍

ZooKeeper 是一个分布式的开源协调服务,最初由 Apache Hadoop 项目开发,用于构建分布式应用程序。它提供了一个简单的接口,允许开发人员实现诸如配置维护、域名服务、分布式同步、组服务等常见任务。ZooKeeper 的设计目标是提供高性能、高可用性和严格的顺序访问。

1.2. zookeeper数据模型介绍

ZooKeeper 的数据模型是一个层次化的命名空间,类似于文件系统。这个命名空间由称为 ZNodes 的节点组成,每个 ZNode 可以存储数据,并且可以有子节点。ZooKeeper 提供了持久节点、临时节点和顺序节点三种类型的 ZNodes。通过观察机制、事务 ID 和版本控制,ZooKeeper 确保了数据的一致性和可靠性。这个数据模型为分布式系统中的配置管理、命名服务、分布式锁等提供了强大的支持。

1.2.1 层次化命名空间

ZooKeeper 的命名空间是一个树形结构,类似于文件系统的目录结构。每个节点(ZNode)都有一个唯一的路径,路径由斜杠(/)分隔。例如:

/app
/app/service1
/app/service2
/app/service1/config
/app/service1/state

在这个例子中,/app 是一个 ZNode,它有两个子节点 service1service2service1 又有两个子节点 configstate

1.2.2 ZNodes

ZNodes 是 ZooKeeper 数据模型的基本单元。每个 ZNode 可以存储数据,并且可以有子节点。ZNodes 有两种类型:

  • 持久节点(Persistent Nodes):一旦创建,持久节点会一直存在,直到被显式删除。
  • 临时节点(Ephemeral Nodes):临时节点在创建它的客户端会话结束时自动删除。临时节点不能有子节点。

此外,ZNodes 还可以是:

  • 顺序节点(Sequential Nodes):顺序节点在创建时会被自动分配一个唯一的、单调递增的整数。这个整数附加在节点名称的末尾。顺序节点可以是持久的或临时的。
1.2.3 数据存储

每个 ZNode 可以存储数据。数据的大小通常有限制(默认情况下,ZooKeeper 允许的最大数据大小为 1MB)。数据可以是任何类型的信息,例如配置文件、状态信息、锁信息等。

1.2.4 观察机制(Watches)

客户端可以在 ZNodes 上设置观察(Watches)。当 ZNode 的数据发生变化或 ZNode 的子节点发生变化时,ZooKeeper 会通知设置了观察的客户端。观察机制是 ZooKeeper 实现事件驱动编程的关键特性之一。

1.2.5 事务 ID(zxid)

ZooKeeper 为每个事务分配一个唯一的事务 ID(zxid)。zxid 是一个 64 位的整数,分为两部分:高 32 位表示当前的 epoch(纪元),低 32 位表示事务的顺序号。zxid 用于确保所有更新操作的顺序一致性。

1.2.6 版本控制

每个 ZNode 都有三个版本号:

  • version:数据版本号,每次数据更新时递增。
  • cversion:子节点版本号,每次子节点变化时递增。
  • aversion:ACL(访问控制列表)版本号,每次 ACL 变化时递增。

版本号用于实现乐观锁机制,确保在并发更新时数据的一致性。

1.3. docker安装zookeeper步骤(单节点)

1.3.1 在服务器上创建目录保存zookeeper相关内容(本操作是在/root目录下进行)
 mkdir docker_volume/zookeeper
1.3.2 拉取zookeeper镜像
docker pull zookeeper
docker images              //查看下载的本地镜像
docker inspect zookeeper   //查看zookeeper详细信息
1.3.3、安装,并挂载数据卷到宿主机
docker run -d -e TZ="Asia/Shanghai" -p 2181:2181 -v $PWD/docker_volume/zookeeper/data:/data -v $PWD/docker_volume/zookeeper/logs:/logs --name zookeeper --restart always zookeeper

参数解释

-e TZ="Asia/Shanghai"   # 指定上海时区 
-d                      # 表示一直在后台运行容器
-p 2181:2181            # 对端口进行映射,将本地2181端口映射到容器内部的2181端口
--name                  # 设置创建的容器名称
-v                      # 将本地目录(文件)挂载到容器指定目录; 宿主机目录 / 容器内目录
--restart always        # 始终重新启动zookeeper
zookeeper               # 镜像名称 

查看容器

#查看容器是否启动
docker ps
#查看容器日志
docker logs 容器id/容器名称

在这里插入图片描述

这样单节点的zookeeper就成功安装完成了

1.4. zookeeper可视化界面

1.4.1 prettyZoo

名字prettyZoo,意为美丽的动物园,是开源项目,3.1K的star。下载地址:https://github.com/vran-dev/PrettyZoo/releases。 根据自己需要下载对应版本,这里使用的是windows版本。

在这里插入图片描述

点击左侧创建,即可填写zk的地址,点击左下角保存
在这里插入图片描述
双击即可连接到zk,点击节点后,数据也是一目了然,包括节点列表,元数据,和data
在这里插入图片描述

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

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

相关文章

Excel 无法打开文件

Excel 无法打开文件 ‘新建 Microsoft Excel 工作表.xlsx",因为 文件格式或文件扩展名无效。请确定文件未损坏,并且文件扩展名与文件的格式匹配。

idea配置maven仓库

下载Maven并配置文件内容 maven下载网址:Maven – Download Apache Maven 下载到D盘:D:\apache-maven-3.9.9 创建maven-repository文件夹作为本地仓库 修改conf文件夹下的setting.xml文件内容 在里面添加一条,指定本地仓库,下载…

L1G3000 提示工程(Prompt Engineering)

什么是Prompt(提示词)? Prompt是一种灵活、多样化的输入方式,可以用于指导大语言模型生成各种类型的内容。什么是提示工程? 提示工程是一种通过设计和调整输入(Prompts)来改善模型性能或控制其输出结果的技术。 六大基本原则: 指令要清晰提供参考内容复杂的任务拆…

C#与C++交互开发系列(十九):跨进程通信之套接字(Sockets)

1、前言 套接字(Sockets)是一种强大的通信方式,可以在同一台设备或网络上的不同设备之间进行通信。C# 和 C 都支持套接字编程,这使得在它们之间实现跨进程通信成为可能。本文将介绍如何通过套接字实现 C# 和 C 程序的跨进程通信&…

Python | Leetcode Python题解之第538题把二叉搜索树转换为累加树

题目: 题解: class Solution:def convertBST(self, root: TreeNode) -> TreeNode:def getSuccessor(node: TreeNode) -> TreeNode:succ node.rightwhile succ.left and succ.left ! node:succ succ.leftreturn succtotal 0node rootwhile nod…

几个docker可用的镜像源

几个docker可用的镜像源 &#x1f490;The Begin&#x1f490;点点关注&#xff0c;收藏不迷路&#x1f490; sudo rm -rf /etc/docker/daemon.json sudo mkdir -p /etc/dockersudo tee /etc/docker/daemon.json <<-EOF {"registry-mirrors": ["https://d…

java ssm 校园快递物流平台 校园快递管理系统 物流管理 源码 jsp

一、项目简介 本项目是一套基于SSM的校园快递物流平台&#xff0c;主要针对计算机相关专业的和需要项目实战练习的Java学习者。 包含&#xff1a;项目源码、数据库脚本、软件工具等。 项目都经过严格调试&#xff0c;确保可以运行&#xff01; 二、技术实现 ​后端技术&#x…

Sentinel通过限流对微服务进行保护

目录 雪崩问题 解决雪崩问题的方法&#xff1a; 我们使用sentinel组件实现微服务的保护 一&#xff1a;下载sentinel 二.启动sentinel 三.访问&#xff1a;localhost:8080 默认的账号和密码都是sentinel 微服务整合sentinel 一.导入sentinel依赖 二.在application.yml配…

【Linux】冯诺依曼体系、再谈操作系统

目录 一、冯诺依曼体系结构&#xff1a; 1、产生&#xff1a; 2、介绍&#xff1a; 二、再谈操作系统&#xff1a; 1、为什么要管理软硬件资源&#xff1a; 2、操作系统如何进行管理&#xff1a; 3、库函数&#xff1a; 4、学习操作系统的意义&#xff1a; 一、冯诺依曼…

斗破QT编程入门系列之二:GUI应用程序设计基础:UI文件(四星斗师)

斗破Qt目录&#xff1a; 斗破Qt编程入门系列之前言&#xff1a;认识Qt&#xff1a;Qt的获取与安装&#xff08;四星斗师&#xff09; 斗破QT编程入门系列之一&#xff1a;认识Qt&#xff1a;初步使用&#xff08;四星斗师&#xff09; 斗破QT编程入门系列之二&#xff1a;认识…

ffmpeg命令

1. 修改视频的数据速率 ffmpeg.exe -i video.mp4 -r 30 -c:v libx264 -b:v 1500k output.mp42. mp4与h264互相转换 ffmpeg.exe -i a.mp4 -vcodec h264 output.h264 ffmpeg.exe -i output.h264 -vcodec mpeg4 output.mp4

前端三件套-css

一、元素选择器 元素选择器&#xff1a;利用标签名称。p,h1-h6...... 行内样式&#xff08;内联样式&#xff09;&#xff1a;例如<p style"color:red;font-size:50px"> id选择器&#xff1a;针对某一个特定的标签来使用。以#定义。 class&#xff08;类&a…

c++设计模式demo

模式设计原则 依赖倒置原则 ⾼层模块不应该依赖低层模块&#xff0c;⼆者都应该依赖抽象 &#xff1b; 抽象不应该依赖具体实现&#xff0c;具体实现应该依赖于抽象&#xff1b; ⾃动驾驶系统公司是⾼层&#xff0c;汽⻋⽣产⼚商为低层&#xff0c;它们不应该互相依赖&#x…

操作系统学习笔记-4.1文件管理

文章目录 文件的逻辑结构1. 顺序结构特点应用场景示例 2. 索引结构特点应用场景示例 3. 链接结构特点应用场景示例 总结 文件目录文件的物理结构1. 连续分配&#xff08;Contiguous Allocation&#xff09;2. 链接分配&#xff08;Linked Allocation&#xff09;隐式链接 3. 索…

ES文档:文档操作_doc(7.9.2)

用心记录技术&#xff0c;走心分享&#xff0c;始于后端&#xff0c;不止于后端&#xff0c;励志成为一名优秀的全栈架构师&#xff0c;真正的实现码中致富。 ElasticSearch文档的操作&#xff1b; 添加文档 新建一个索引 goboy-blog&#xff0c;如果添加文档索引不存在则会创…

深入解析 WinForms MVVM 模式中的事件驱动与数据驱动

前言 在传统的 WinForms 开发中&#xff0c;事件驱动模型&#xff08;Event-Driven Model&#xff09;是核心&#xff0c;它通过控件的事件&#xff08;如点击按钮、改变文本等&#xff09;触发业务逻辑。然而&#xff0c;MVVM 模式引入了数据驱动&#xff08;Data-Driven&…

Python中的 if __name__ == ‘__main__

在Python中&#xff0c;if __name__ __main__: 这行代码有一个特定的用途和含义。为了理解它&#xff0c;我们需要先了解Python中的__name__变量以及Python脚本是如何执行的。 __name__变量 每个Python模块&#xff08;python文件&#xff09;都有一个内置的属性__name__。当…

【系统面试篇】进程与线程类(2)(笔记)——进程调度、中断、异常、用户态、核心态

目录 一、相关面试题 1. 进程的调度算法有哪些&#xff1f; 调度原则 &#xff08;1&#xff09;先来先服务调度算法 &#xff08;2&#xff09;最短作业优先调度算法 &#xff08;3&#xff09;高响应比优先调度算法 &#xff08;4&#xff09;时间片轮转调度算法 &am…

大数据工具 flume 的安装配置与使用 (详细版)

参考网址&#xff1a;Flume 1.9用户手册中文版 — 可能是目前翻译最完整的版本了 1&#xff0c;上传安装包 安装包链接&#xff1a;文件下载-奶牛快传 Download &#xff5c;CowTransfer 口令&#xff1a;x8bhcg 1&#xff0c;切换盘符到安装目录 cd /opt/moudles 解压文件…

使用uni-app框架开发各种web前端程序

使用uni-app框架开发各种web前端程序是目前非常流程的开发方式&#xff0c;比如开发APP、小程序、H5等等&#xff0c;是一个使用 vue 开发所有前端应用的框架&#xff0c;开发者编写一套代码&#xff0c;可发布到ios&#xff0c;安卓、H5、以及各种小程序&#xff08;微信、支付…