Zookeeper如何正确设置和获取watcher

 Zookeeper如何正确设置和获取watcher

Watcher 设置是开发中最常见的,需要搞清楚watcher的一些基本特征,对于exists、getdata、getchild对于节点的不同操作会收到不同的 watcher信息

state=-112 会话超时状态
state= -113 认证失败状态
state=  1 连接建立中
state= 2 (暂时不清楚如何理解这个状态,ZOO_ASSOCIATING_STATE)
state=3 连接已建立状态
state= 999 无连接状态

type=1 创建节点事件
type=2 删除节点事件
type=3 更改节点事件
type=4 子节点列表变化事件
type= -1 会话session事件
type=-2 监控被移除事件

父节点的变更以及孙节点的变更都不会触发watcher,而对watcher本身节点以及子节点的变更会触发watcher,具体参照下表。

操作 方法 触发watcher watcher state watcher type watcher path
Create当前节点 getdata × × × ×
getchildren 3 4
exists × × × ×
set当前节点 getdata 3 3
getchildren × × × ×
exists 3 3
delete当前节点 getdata 3 2
getchildren 3 2
exists 3 2
create子节点 getdata × × × ×
getchildren 3 4
exists × × × ×
set子节点 getdata × × × ×
getchildren × × × ×
exists × × × ×
delete子节点 getdata × × × ×
getchildren 3 4
exists × × × ×
恢复连接 getdata 1 -1 ×
getchildren 1 -1 ×
exists 1 -1 ×
恢复连接session未超时 getdata -112 -1 ×
getchildren -112 -1 ×
exists -112 -1 ×
恢复连接session超时 getdata 3 -1 ×
getchildren 3 -1 ×
exists 3 -1 ×

注:×表示否,√表示是。
更多参见 http://tech.uc.cn/?p=1189,不过该文章中第五节对event和state的说明有误,请仔细辨别。

时间: 2024-08-04 12:05:18

Zookeeper如何正确设置和获取watcher的相关文章

ios-iOS 开发 如何设置和获取锁屏的时间长短

问题描述 iOS 开发 如何设置和获取锁屏的时间长短 在ios开发中 如何代码设置锁屏的时间 以及获取设置的锁屏时间 解决方案 获取的时间 , 我是不知道!可以监听锁屏, 程序在前台,这种比较简单.直接使用Darwin层的通知就可以了: #import #define NotificationLock CFSTR("com.apple.springboard.lockcomplete") #define NotificationChange CFSTR("com.apple.

自定义组件及其内组件大小的正确设置

http://blog.csdn.net/xiaodao1986/article/details/8481288 一.自定义组件大小的设置 不管你怎么设置,自定义组件似乎总是match_parent.我们需要覆盖onMeasure方法,并在其内正确设置组件大小. [java] view plaincopy @Override   protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {       //注意:为

javascript实现设置、获取和删除Cookie的方法

  本文实例讲述了javascript实现设置.获取和删除Cookie的方法.分享给大家供大家参考.具体实现方法如下: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66

jQuery设置与获取HTML,文本和值的简单实例

 本篇文章主要是对jQuery设置与获取HTML,文本和值的简单实例进行了介绍,需要的朋友可以过来参考下,希望对大家有所帮助  代码如下: <script type="text/javascript">  //<![CDATA[   $(function(){       //获取<p>元素的HTML代码       $("input:eq(0)").click(function(){             alert(  $(&qu

Win8.1提示:SecureBoot未正确设置的解决方法

  一个新系统总会有这样那样的问题,这不!昨天小编的朋友在从win8升级到win8.1之后就向小编咨询,在win8.1电脑桌面右下角一直有"SecureBoot未正确设置"的提示,非常烦人,那么怎么去掉或者隐藏这个呢? 小编也不会啊,谁让咱木有win8系统呢?好在万能的度娘帮助了我,下面为大家介绍下解决方法,大家可以参考. 桌面右下角显示"SecureBoot未正确配置 build9600"解决办法 第一种模式BIOS: 在将Secure Boot设置为Enable

Win7系统麦克风正确设置方法

  不要觉得直接把麦克风插进主机菊花就可以正常使用了,绝大多数情况下我们还需要进一步进行设置.下面系统之家小编就为大家介绍一下Win7系统麦克风正确设置方法. 我们把麦克风大概分类一下,首先介绍的是内置麦克风. 1.首先打开控制面板-->语音识别-->高级语音选项; 2.找到"音频输入"按钮; 3.在播放目录下把扬声器和耳机设为默认; 4.在录制目录下把集成式麦克风阵列设为默认即可; 下面为大家介绍的是外置型麦克风. 1.右击右下角的小喇叭图标,选择"录音设备&q

正确设置Windows7的虚拟内存的办法

1.何为虚拟内存? 内存在计算机中的作用很大,电脑中所有运行的程序都需要经过内存来执行,如果执行的程序很大或很多,就会导致内存消耗殆尽.为了解决这个问题,WINDOWS运用了虚拟内存技术,即拿出一部分硬盘空间来充当内存使用,这部分空间即称为虚拟内存,电脑公司win7系统 虚拟内存在硬盘上的存在形式就是PAGEFILE.SYS这个页面文件. 虚拟内存只是真实内存不足的补充,所以不要加以神化,虚拟内存的读写性能(即硬盘的读写)只有真正内存性能的几十分之一,而且对硬盘损伤很大!能不用则不用,能少用则少

局域网-C#客户端应用程序第一次连接服务器的端口号该如何设置或获取

问题描述 C#客户端应用程序第一次连接服务器的端口号该如何设置或获取 我做的毕业设计是有服务器的局域网聊天室 我的客户端是要放在不同的电脑上的(这些电脑都在局域网里 而且有台电脑作为服务器)下面问题来了 客户端第一次连接服务器的端口号应该如何设置或获取,我之所以这样问是因为第一次连接以后,服务器可以通过第一次建立的"通道"为客户端分配端口号(服务器里有个方法是获取服务器可用的端口号,当客户端需要新的端口号时可以通过第一次的"通道"向服务器发送请求,然后服务器返回可用

操作系统-装了ubuntut后怎么正确设置启动菜单启动win8??

问题描述 装了ubuntut后怎么正确设置启动菜单启动win8?? 我win8在/dev/sda1中,ubuntu在/dev/sda5中,然后默认是ubuntu启动,进入ubuntu 的grub启动菜单选择win8会出错,进不去win8,怎么设置?. 解决方案 参考UEFI模式+GPT硬盘实现Windows 8与Ubuntu双系统启动Win8引导Ubuntu之grub2