本文来自bilibili视频:
https://www.bilibili.com/video/BV1JT4y1g7nM?p=31
这里操作Zookeeper的JavaAPI使用的是一套Zookeeper客户端框架 Curator, 解决了很多Zookeeper客户端非常底层的细节开发工作。
Curator包含了几个包:
- curator-framework: 对Zookeeper的底层api的一些封装
- curator-recipes: 封装了-些高级特性,如: Cache事件监听、 选举、分布式锁、分布式计数器等
Maven依赖(使用curator的版本: 2.12.0, 对应Zookeeper的版本为: 3.4.x,如果跨版本会有兼容性问题,很有可能导致节点操作失败):
Zookeeper的JavaAPI操作
创建永久节点
- RetryPolicy:重试策略(时间为毫秒)
创建临时节点
与上图类似,只需要更改节点类型(为了看到效果,可以选择延时结束)。
设置节点数据
与上图类似,只需要将4替换为:
节点数据查询
与上图类似,只需要将4替换为:
watch机制
设置节点的cache,实际上是指定监控哪一个节点。
hello5是一个节点,但它也可以有子节点,实际上是一个树形结构。
Treecache实际上就是把树形结构映射到内存中,形成缓存。也可以理解为树形结构和Treecache建立了一个映射关系。
getListenable相当于获取监听容器,addListener相当于添加一个自定义的监听器 -> 匿名内部对象