96SEO 2026-02-19 21:15 11
事件监听概念2.NodeCache2.1.全参构造器参数2.2.代码DEMO2.3.日志输出

3.PathChildrenCache3.1.全参构造器参数3.2.子节点监听时间类型3.2.代码DEMO
4.TreeCache4.1.构造器参数4.2.代码DEMO4.3.日志输出
上一篇博客只介绍了有关Curator中对ZNode的CRUD操作从本篇起开始逐步介绍更加高级的API操作。
中引入了Watcher机制来实现了发布/订阅功能能能够让多个订阅者同时监听某一个对象当一个对象自身状态变化时会通知所有订阅者。
虽然ZooKeeper原生支持通过注册Watcher来进行事件监听但是其使用并不是特别方便需要开发人员反复注册Watcher比较繁琐。
NodeCache监听指定的节点。
PathChildrenCache监听指定节点的子节点。
TreeCache监听指定节点及其子孙节点。
是否开启数据压缩。
传递的数据会进行压缩,传递速度快,但取数据时需要把压缩的数据进行转换,默认为false*/
{log.info(。
。
。
。
。
。
。
。
。
。
。
。
。
容器初始化完毕。
。
。
。
。
。
。
。
。
。
。
。
。
。
);String
/ahao/watcher;TimeUnit.SECONDS.sleep(3);//
添加监听器nodeCache.getListenable().addListener(new
String(currentData.getData(),StandardCharsets.UTF_8);log.info(监听{}节点发生变化数据内容{},path,s);}else
{log.info(监听{}节点被删除了,path);}}});//
开启监听nodeCache.start();TimeUnit.SECONDS.sleep(2);//
创建节点client.create().creatingParentsIfNeeded().forPath(path,第一次新增.getBytes(StandardCharsets.UTF_8));TimeUnit.SECONDS.sleep(2);//
更新节点client.setData().forPath(path,数据修改了.getBytes(StandardCharsets.UTF_8));TimeUnit.SECONDS.sleep(2);//
删除节点client.delete().deletingChildrenIfNeeded().forPath(path);}2.3.日志输出
PathChildrenCache会包含最新的子节点的数据和状态。
是否开启数据压缩。
传递的数据会进行压缩,传递速度快,但取数据时需要把压缩的数据进行转换,默认为false*
用于PathChildrenCache的后台线程的线程池。
该线程池应该是单线程的否则缓存可能会看到不一致的结果*/
PathChildrenCache(CuratorFramework
以下三个事件类型表示当连接断开时PathChildrenCache将继续保持其断开连接之前的状态并且在连接恢复后PathChildrenCache将为断开连接期间发生的所有添加、删除和更新发出正常的子事件。
//
当连接状态处于ConnectionState.SUSPENDED。
CONNECTION_SUSPENDED,//
当连接状态处于ConnectionState.RECONNECTEDCONNECTION_RECONNECTED,//
当连接状态处于ConnectionState.LOSTCONNECTION_LOST,//
当通过PathChildrenCache.start(PathChildrenCache.StartMode.POST_INITIALIZED_EVENT)启动监听时该事件表示PathChildrenCache初始化完成This
{log.info(。
。
。
。
。
。
。
。
。
。
。
。
。
容器初始化完毕。
。
。
。
。
。
。
。
。
。
。
。
。
。
);String
/ahao/watcher;TimeUnit.SECONDS.sleep(3);//
此处的cacheData参数一定要设置为true不然Curator不会缓存数据当本地//
那么后续pathChildrenCache.getCurrentData()得到的数据都为nullPathChildrenCache
PathChildrenCache(client,path,true);//
添加监听器pathChildrenCache.getListenable().addListener(new
PathChildrenCacheEvent.Type.INITIALIZED){log.info(PathChildrenCache初始化完事件类型{},
event.getData();log.info(事件类型{}监听到的子节点发生变化{},event.getType(),currentData.getPath());}}});//
开启监听pathChildrenCache.start(PathChildrenCache.StartMode.POST_INITIALIZED_EVENT);//
创建子节点TimeUnit.SECONDS.sleep(2);client.create().creatingParentsIfNeeded().forPath(path/c1);client.create().creatingParentsIfNeeded().forPath(path/c2);client.create().creatingParentsIfNeeded().forPath(path/c3/age);//
修改子节点TimeUnit.SECONDS.sleep(2);client.setData().forPath(path/c1,c1更新了.getBytes(StandardCharsets.UTF_8));client.setData().forPath(path/c2,c2更新了.getBytes(StandardCharsets.UTF_8));//
删除子节点TimeUnit.SECONDS.sleep(2);client.delete().deletingChildrenIfNeeded().forPath(path/c3);}3.3.日志输出
可以看出PathChildrenCache只会监听直属子节点的变化其非直属子节点的后代节点如/c3/age没有发布通知。
是否开启数据压缩。
传递的数据会进行压缩,传递速度快,但取数据时需要把压缩的数据进行转换,默认为false*
用于PathChildrenCache的后台线程的线程池。
该线程池应该是单线程的否则缓存可能会看到不一致的结果*
TreeCache选择器。
根据指定的策略和条件选择适合的缓存树来创建和维护TreeCache*/
{log.info(。
。
。
。
。
。
。
。
。
。
。
。
。
容器初始化完毕。
。
。
。
。
。
。
。
。
。
。
。
。
。
);String
/ahao/watcher/tree;TimeUnit.SECONDS.sleep(3);//
创建TreeCache对象也可通过TreeCache.newBuilder()创建TreeCache
TreeCache(client,path);treeCache.getListenable().addListener(new
TreeCacheEvent.Type.INITIALIZED){log.info(TreeCache初始化完事件类型{},
event.getData();log.info(事件类型{}监听到的子节点发生变化{},event.getType(),currentData.getPath());}}});//
创建节点TimeUnit.SECONDS.sleep(2);client.create().creatingParentsIfNeeded().forPath(path);client.create().creatingParentsIfNeeded().forPath(path
/t1);client.create().creatingParentsIfNeeded().forPath(path
修改子节点TimeUnit.SECONDS.sleep(2);client.setData().forPath(path,根节点更新了.getBytes(StandardCharsets.UTF_8));client.setData().forPath(path
/t2/ccc,/t2/ccc更新了.getBytes(StandardCharsets.UTF_8));//
删除子节点TimeUnit.SECONDS.sleep(2);client.delete().deletingChildrenIfNeeded().forPath(path
作为专业的SEO优化服务提供商,我们致力于通过科学、系统的搜索引擎优化策略,帮助企业在百度、Google等搜索引擎中获得更高的排名和流量。我们的服务涵盖网站结构优化、内容优化、技术SEO和链接建设等多个维度。
| 服务项目 | 基础套餐 | 标准套餐 | 高级定制 |
|---|---|---|---|
| 关键词优化数量 | 10-20个核心词 | 30-50个核心词+长尾词 | 80-150个全方位覆盖 |
| 内容优化 | 基础页面优化 | 全站内容优化+每月5篇原创 | 个性化内容策略+每月15篇原创 |
| 技术SEO | 基本技术检查 | 全面技术优化+移动适配 | 深度技术重构+性能优化 |
| 外链建设 | 每月5-10条 | 每月20-30条高质量外链 | 每月50+条多渠道外链 |
| 数据报告 | 月度基础报告 | 双周详细报告+分析 | 每周深度报告+策略调整 |
| 效果保障 | 3-6个月见效 | 2-4个月见效 | 1-3个月快速见效 |
我们的SEO优化服务遵循科学严谨的流程,确保每一步都基于数据分析和行业最佳实践:
全面检测网站技术问题、内容质量、竞争对手情况,制定个性化优化方案。
基于用户搜索意图和商业目标,制定全面的关键词矩阵和布局策略。
解决网站技术问题,优化网站结构,提升页面速度和移动端体验。
创作高质量原创内容,优化现有页面,建立内容更新机制。
获取高质量外部链接,建立品牌在线影响力,提升网站权威度。
持续监控排名、流量和转化数据,根据效果调整优化策略。
基于我们服务的客户数据统计,平均优化效果如下:
我们坚信,真正的SEO优化不仅仅是追求排名,而是通过提供优质内容、优化用户体验、建立网站权威,最终实现可持续的业务增长。我们的目标是与客户建立长期合作关系,共同成长。
Demand feedback