Watcher 介绍&通知状态事件类型|学习笔记

简介: 快速学习 Watcher 介绍&通知状态事件类型

开发者学堂课程【大数据 ZooKeeper 快速入门  Watcher 介绍&通知状态事件类型】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/549/detail/7568


Watcher 介绍&通知状态事件类型

 

目录:

一、zookeeper watcher 介绍

二、Watch 机制特点

三、通知状态和事件类型

 

课程概要:下面来学习 zookeeper 中的 watcher 监听机制

 

一、Zookeeper Watcher

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

ZooKeeper 中,引入了 Watcher 机制来实现这种分布式的通知功能。

ZooKeeper 允许客户端向服务端注册一个 Watcher 监听,监听感兴趣的事件,监听一个节点的创建删除和改变,监听它的子节点是否发生改变,当服务端的一些事件触发了这个 Watcher,那么就会向指定客户端发送一个事件通知来实现分布式的通知功能。

触发事件种类很多,如:节点创建,节点删除,节点改变,子节点改变等。监听事件发生后,意味着事件发生,设置的监听就会被触发。

总的来说可以概括 Watcher 为以下三个过程;

(1)客户端向服务端注册 Watcher

(2)服务端事件发生触发 Watcher

(3)客户端回调 Watcher 得到触发事件情况

 

二、Watch 机制特点

1.一次性触发

事件发生触发监听,一个 watcher event 就会被发送到设置监听的客户端,这种效果是一次性的,后续再次发生同样的事件,不会再次触发。

2. 事件封装

ZooKeeper 使用 WatchedEvent 对象来封装服务端事件并传递。WatchedEvent 包含了每一个事件的三个基本属性:

通知状态(keeperState)

事件类型(EventType)

节点路径(path)

客户端根据属性获取感兴趣的数据

3.event 异步发送

watcher 的通知事件从服务端发送到客户端是异步的。服务端监听触发后异步发送。

4.先注册再触发

先注册监听机制再触发,Zookeeper 中的 watch 机制,必须客户端先去服务端注册监听,这样事件发送才会触发监听,通知给客户端。

 

三、通知状态和事件类型

同一个事件类型在不同的通知状态中代表的含义有所不同,下表列举了常见的通知状态和事件类型。

KepperState

EventType

触发条件

说明

 

None(-1)

客户端与服务端成功建立

 

SyncConnected

NodeCreated(1)

Watcher 监听的对应数据节点被创建

 

 

NodeDeleted(2)

Watcher 监听的对应数据节点被删除

此时客户端和服务器处于连接状态

 

NodeDataChanged(3)

Watcher监听的对应数据节点的数据内容发生变更

 

 

NodeChildChanged(4)

Wather 监听的对应数据节点的子节点列表发生变更

 

Disconnected(0)

None(-1)

客户端与ZooKeeper 服务断开连接

此时客户端和服务器处于连接状态

Expired(-112)

Node(-1)

会话超时

此时客户端会话失效,通常同时也会收SessionExpiredException异常

AuthFailed(4)

None(-1)

通常有两种情况:1.使用错误的schema进行权限2.SASL权限检查失败

通常也会收到AuthFailedException异常

EventType 是数据节点 znode 发生变化时对应的通知类型。EventType 变化时 KeeperState 永远处于 SyncConnected 通知状态下;当 keeperState 发生变化时,EventType 永远为 None。

连接状态事件(type=None,path=null)不需要客户端注册,客户端只要有需要直接处理就行了。

 

 

相关文章
|
云安全 存储 安全
一文看全数据跨境合规
于9月1日正式实施的《数据安全法》再次加码数据出境安全。 基于8月27日《数据安全法》解读与阿里云三大合规方案线上直播活动,阿里云解决方案架构师锅涛分享的《数据跨境流转安全》主题内容,整理出数据出境安全的九问九答,为企业数据跨境流转送上安全锦囊。
1526 0
一文看全数据跨境合规
|
Linux Go Windows
NATS服务器部署及测试
版权声明:本文为博主chszs的原创文章,未经博主允许不得转载。 https://blog.csdn.net/chszs/article/details/51002444 NATS服务器部署及测试 作者:chszs,未经博主允许不得转载。
3164 0
|
存储 自然语言处理 BI
从 Elasticsearch 到 Apache Doris 腾讯音乐内容库升级,统一搜索分析引擎,成本直降 80%
实现写入性能提升 4 倍、使用成本节省达 80% 的显著成效
491 1
从 Elasticsearch 到 Apache Doris 腾讯音乐内容库升级,统一搜索分析引擎,成本直降 80%
|
安全 数据安全/隐私保护
谨防二维码陷阱:揭秘网络钓鱼攻击与保护措施
当我们深入了解二维码的世界时,了解它们的特性和潜在风险变得至关重要,揭示了伴随其广泛普及的更为阴暗的一面
538 1
|
Windows
Windows平台如何修改监听的服务名称?
【8月更文挑战第15天】在Windows平台上可透过注册表编辑器、命令提示符或第三方工具修改服务的显示名称。首先,通过注册表编辑器找到`HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services`下的目标服务,修改其“DisplayName”键值。或者,在命令提示符中使用`sc config`命令来变更服务名称。此外,利用第三方工具如Windows Service Manager也能简化此过程。修改前请确保了解可能的影响并做好备份。
714 4
|
前端开发 JavaScript Java
获取Servlet中的request.getContextPath方法详解
获取Servlet中的request.getContextPath方法详解
|
人工智能 数据可视化 开发者
快速部署 Dify 社区版
Dify.AI 是一款 LLMOps 平台,帮助开发者更简单、更快速地构建 AI 应用。它的核心理念是通过可声明式的 YAML 文件定义 AI 应用的各个方面,包括 Prompt、上下文和插件等。Dify 提供了可视化的 Prompt 编排、运营、数据集管理等功能。这些功能使得开发者能够在数天内完成 AI 应用的开发,或将 LLM 快速集成到现有应用中,并进行持续运营和改进,创造一个真正有价值的 AI 应用。本文介绍使用计算巢快速部署 Dify 社区版。
快速部署 Dify 社区版
|
缓存 分布式计算 算法
优化Hadoop MapReduce性能的最佳实践
【8月更文第28天】Hadoop MapReduce是一个用于处理大规模数据集的软件框架,适用于分布式计算环境。虽然MapReduce框架本身具有很好的可扩展性和容错性,但在某些情况下,任务执行可能会因为各种原因导致性能瓶颈。本文将探讨如何通过调整配置参数和优化算法逻辑来提高MapReduce任务的效率。
1393 0
|
安全 UED 开发者
微信扫码登录--设计技术分享
【8月更文挑战第7天】在当今的数字化时代,微信扫码登录已成为众多网站和应用提升用户体验、简化登录流程的重要手段。本文将围绕微信扫码登录的设计原理、实现步骤及关键技术点进行技术分享,帮助开发者更好地理解和应用这一功能。
1119 0
|
缓存 并行计算 Ubuntu
在Ubuntu系统下部署大语言模型
在Ubuntu系统下部署大语言模型
941 0