漫谈zookeeper watcher单次触发特性

本文探讨了Zookeeper中Watcher的单次触发特性,通过模拟团队讨论,阐述了这种设计的原因和优势,包括减少不必要的数据传输、提高性能,并提供了相关操作的伪代码,强调了Watcher在分布式锁等场景中的适用性。
摘要由CSDN通过智能技术生成

架构师 Hooya 正带领着他的团队着手开发一款高性能分布式协调工具,暂名 zookeeper

Hooya开场白:同学们,作为一个分布式协调软件,通知功能是必不可少的。今天我们来 brainstorm 一下如何设计咱 zookeeper 的通知机制吧。

攻城狮小A抢先道:这简单呀,不就是实现一个大号的观察者模式嘛,Client 注册 watcher,Server 在数据改动的时候通知 Client,目测不会太复杂。

Hooya:再简单也要从头开始,我们先定义一下通知的事件吧。

小A一拍脑门zookeeper 目录按结构存储节点,同时节点上可以存储数据,有了:

enum EventType {
   
    NodeCreated,
    NodeDeleted,
    DataChanged,
    ChildrenChanged;
}

Hooya笑道:小伙子思维很活跃啊。

小A害羞道:嘿嘿,跟据事件类型,Client 注册 watcher 也很简单:

Client.addWatcher(path, eventType, callback);

程序猿小B发问:那 Server 端触发事件的方法该如何表示呢?

小A解释:当 Server 节点数据发生变化的时候,找到其对应的所有 watcher,挨个触发相应的事件,不同事件签名也不一样:

Server.fireDataChangedEvent(path, dataBefore, dataAfter);
Server.fireChildrenChangedEvent
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值