Hadoop-29 ZooKeeper集群 Watcher机制 工作原理 与 ZK基本命令 测试集群效果 3台公网云服务器

章节内容

上节我们完成了:

  • ZNode的基本介绍
  • ZNode节点类型的介绍
  • 事务ID的介绍
  • ZNode实机测试效果

背景介绍

这里是三台公网云服务器,每台 2C4G,搭建一个Hadoop的学习环境,供我学习。
之前已经在 VM 虚拟机上搭建过一次,但是没留下笔记,这次趁着前几天薅羊毛的3台机器,赶紧尝试在公网上搭建体验一下。

  • 2C4G 编号 h121
  • 2C4G 编号 h122
  • 2C2G 编号 h123

在这里插入图片描述

Wacher 机制

ZooKeeper 使用Watcher机制实现分布式数据的发布/订阅功能。
一个典型的发布/订阅模型定义了一对多的订阅关系,能够让多个订阅者同时监听一个主题对象,当这个主题对象自身状态变化时,会通知所有订阅者,使他们能够做出相应的处理。

在这里插入图片描述

ZooKeeper 的 Watcher 机制主要包括:

  • 客户端线程
  • 客户端 Watcher Manager
  • ZooKeeper服务器

Watcher 机制的工作原理

注册节点

客户端可以在读取或获取某个节点的数据时,选择注册一个 Watcher。
可以通过 getData(), getChildren(), 和exists() 等方法来注册 Watcher。
注册 Watcher 时,客户端发送一个请求到 ZooKeeper 服务器,服务器将这个 Watcher 记录在相应节点的 Watcher 列表中。

触发节点

当节点发生变化时(例如节点的数据变化节点的创建或删除子节点的变化等),ZooKeeper 服务器会触发相应节点上的 Watcher。
Watcher 触发是一次性的。当一个 Watcher 被触发后,它就不再活跃,如果客户端需要继续监视该节点,则需要重新注册 Watcher

进行通知

被触发的 Watcher 会向客户端发送一个事件通知(WatchedEvent)。该事件包含了事件的类型(如节点创建、删除或数据变化)和受影响的节点路径。
客户端在接收到通知后,可以根据需要采取相应的行动,例如重新获取节点数据重新注册 Watcher

Watcher特点

  • 一次性:Watcher 机制是一次性的,客户端需要在每次事件发生后重新注册 Watcher 以继续监视节点。
  • 异步通知:Watcher 事件是异步通知的,这意味着客户端注册 Watcher 后不会阻塞等待事件的发生,而是通过事件通知机制处理事件。
  • 轻量级:Watcher 是轻量级的,不会对 ZooKeeper 服务器带来显著的性能负担。

Watcher 使用场景

  • 配置管理:在分布式系统中,多个服务可能依赖同一个配置。通过 Watcher 机制,可以实现配置的动态更新,当配置变更时,所有依赖该配置的服务都能及时收到通知并进行更新。
  • 服务发现:在服务发现机制中,客户端可以通过 Watcher 监视服务节点的变化,当有新服务加入或服务下线时,客户端能够及时感知并更新服务列表。
  • 分布式锁:在实现分布式锁时,可以使用 Watcher 机制监控锁节点的状态,当锁被释放时,等待的客户端可以收到通知并尝试获取锁。

创建节点

永久节点

create /wzk 123456

顺序节点

create -s /wzk-order 654321

临时节点

create -e /wzk-temp 123123

在这里插入图片描述

读取节点

列出节点

ls /

查看数据

get /wzk

在这里插入图片描述

更新节点

set /wzk-temp 111222

删除节点

delete /wzk-temp

在这里插入图片描述

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

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

相关文章

LVS+Nginx高可用集群---keepalived原理与实战

1.高可用集群架构keepalived双机主备原理 高可用:(HA) 部署nginx存在两台nginx。当主节点的nginx宕机停止服务的时候,nginx备用机起到跟nginx(主) keepalived的概念:解决单点故障;组件免费;可以实现高可用HA机制&…

《0基础》学习Python——第十一讲

一、lambda 匿名函数 lambda函数是一种匿名函数。它是一种快速定义单行函数的方法。与常规函数不同,lambda函数没有名称,也没有使用def关键字来定义。lambda函数通常用于一些简单的函数,可以在代码中快速定义和使用,而不需要为其定…

Hive的基本操作(查询)

1、基础查询 基本语法 select 字段列表|表达式|子查询 from 表(子查询|视图|临时表|普通表) where [not] 条件A and|or 条件B --先:面向原始行进行筛选 group by 字段A[,字段B,...] > 分组【去重处理】 having 聚合条件(非原始字段条件) --再&#x…

《梦醒蝶飞:释放Excel函数与公式的力量》12.3 DMIN函数

第12章:数据库函数 第三节 12.3 DMIN函数 12.3.1 简介 DMIN函数是Excel中的一个数据库函数,用于返回数据库或数据表中特定条件下某字段的最小值。DMIN函数在处理大规模数据、数据筛选和分析时非常有用。 12.3.2 语法 DMIN(database, field, criteri…

MYSQL 四、mysql进阶 9(数据库的设计规范)

一、为什么需要数据库设计 二、范 式 2.1 范式简介 在关系型数据库中,关于数据表设计的基本原则、规则就称为范式。 可以理解为,一张数据表的设计结 构需要满足的某种设计标准的 级别 。要想设计一个结构合理的关系型数据库,必须满足一定的…

LLM量化--AWQ论文阅读笔记

写在前面:近来大模型十分火爆,所以最近开启了一波对大模型推理优化论文的阅读,下面是自己的阅读笔记,里面对文章的理解并不全面,只将自己认为比较重要的部分摘了出来,详读的大家可以参看原文 原论文地址&am…

Leetcode—146. LRU 缓存【中等】(shared_ptr、unordered_map、list)

2024每日刷题(143) Leetcode—146. LRU 缓存 先验知识 list & unordered_map 实现代码 struct Node{int key;int value;Node(int key, int value): key(key), value(value) {} };class LRUCache { public:LRUCache(int capacity): m_capacity(capa…

axios以post方式提交表单形式数据

某些后端框架请求接口必须走form表单提交的那种形式&#xff0c;但前端很少有<form action"接口地址" method"post"></form>这种写法去提交表单数据&#xff0c;所以前端需要用axios模拟一个表单提交接口。 Content-Type 代表发送端&#xff0…

【.NET全栈】ASP.NET开发web应用——ASP.NET中的样式、主题和母版页

文章目录 前言一、在ASP.NET中应用CSS样式1、创建CSS样式&#xff08;1&#xff09;内联样式&#xff08;2&#xff09;内部样式表&#xff08;3&#xff09;外部样式表 2、应用CSS样式&#xff08;1&#xff09;菜鸟教程-简单例子&#xff08;2&#xff09;菜鸟教程-用户界面&…

零售门店收银系统源码

php收银系统源码-CSDN博客文章浏览阅读268次&#xff0c;点赞6次&#xff0c;收藏4次。收银系统源码https://blog.csdn.net/qh716/article/details/140431477 1.系统开发语言 核心开发语言: PHP、HTML5、Dart后台接口: PHP7.3后合管理网站: HTML5vue2.0element-uicssjs线下收…

【区块链 + 智慧政务】涉税行政事业性收费“e 链通”项目 | FISCO BCOS应用案例

国内很多城市目前划转至税务部门征收的非税收入项目已达 17 项&#xff0c;其征管方式为行政主管部门核定后交由税务 部门征收。涉税行政事业性收费受限于传统的管理模式&#xff0c;缴费人、业务主管部门、税务部门、财政部门四方处于 相对孤立的状态&#xff0c;信息的传递靠…

校园网自动登录脚本【Windows 10】

如果要使用校园网&#xff0c;必须打开浏览器输入校园网地址&#xff0c;之后输入账号密码登录。实验室电脑绝大多数情况下应该处于联网状态&#xff0c;但不幸的是&#xff0c;我深会限制校园网客户端数量&#xff0c;一旦有新设备接入&#xff0c;很可能实验室电脑就会断网。…

实现给Nginx的指定网站开启basic认证——http基本认证

一、问题描述 目前我们配置的网站内容都是没有限制&#xff0c;可以让任何人打开浏览器都能够访问&#xff0c;这样就会存在一个问题&#xff08;可能会存在一些恶意访问的用户进行恶意操作&#xff0c;直接访问到我们的敏感后台路径进行操作&#xff0c;风险就会很大&#xff…

wps批量删除空白单元格

目录 原始数据1.按ctrlg键2.选择“空值”&#xff0c;点击“定位”3. 右击&#xff0c;删除单元格修改后的数据 原始数据 1.按ctrlg键 2.选择“空值”&#xff0c;点击“定位” 如图所示&#xff0c;空值已被选中 3. 右击&#xff0c;删除单元格 修改后的数据

数据结构—链式二叉树-C语言

代码位置&#xff1a;test-c-2024: 对C语言习题代码的练习 (gitee.com) 一、前言&#xff1a; 在现实中搜索二叉树为常用的二叉树之一&#xff0c;今天我们就要通过链表来实现搜索二叉树。实现的操作有&#xff1a;建二叉树、前序遍历、中序遍历、后序遍历、求树的节点个数、求…

AI音乐创作:一键生成,打造你的专属乐章

文章目录 &#x1f34a;AI音乐创作&#xff1a;一键生成&#xff0c;打造你的专属乐章1 市面上的AI音乐应用1.1 Suno AI1.2 网易天音 2 AI音乐创作的流程2.1 AI音乐风格/流派2.2 AI音乐的结构顺序2.3 使用KIMI生成AI音乐歌词2.4 选择AI音乐乐器2.5 书写AI音乐提示词2.5.1 方法一…

Java NIO 比传统 IO 强在哪里?

这里先给大家展示一副传统 IO 和 NIO 的对比图&#xff0c;感受一下。 传统IO基于字节流或字符流&#xff08;如 FileInputStream、BufferedReader 等&#xff09;进行文件读写&#xff0c;以及使用Socket和ServerSocketChannel进行网络传输。 NIO 使通道&#xff08;Channel&a…

【过题笔记】 7.15

Array Without Local Maximums 算法&#xff1a;动态规划 简要思路&#xff1a; 考虑左边的数跟当前位置的关系&#xff0c;不难想到只有三种情况&#xff1a;大于&#xff0c;小于&#xff0c;等于。 于是可以得到状态 f [ i ] [ j ] [ 0 / 1 / 2 ] f[i][j][0/1/2] f[i][j][…

ubuntu22.04安装SecureCRT8.7.3,完成顺利使用

材料准备 scrt-sfx安装包 &#xff0c; securecrt_linux_crack.pl 补丁脚本&#xff0c;和两个依赖库 其中securecrt_linux_crack.pl是找的专门适合 8.7.3版本的&#xff0c;网上很多版本的crack.pl只能打补丁以前的老版本。 而更老版本的SecureCRT对ubuntu22支持更不好&#…

数据库使用SSL加密连接

简介 数据库开通SSL加密连接是确保数据传输过程中安全性的关键措施&#xff0c;它通过加密数据、验证服务器身份、保护敏感信息、维护数据完整性和可靠性&#xff0c;同时满足行业标准和法规要求&#xff0c;进而提升用户体验和信任度&#xff0c;为企业的数据安全和业务连续性…