Zookeeper实例原生API--同步获取节点数据
来源:互联网 发布:php开发实例大全怎么样 编辑:程序博客网 时间:2024/06/08 13:45
/** * * @ClassName: GetData_API_Sync_Usage * @Description: TODO(ZooKeeper API 获取节点数据内容,使用同步(sync)接口) * @author RongShu* @date 2017年6月11日 下午8:36:54 * */public class GetData_API_Sync_Usage implements Watcher { private static CountDownLatch connectedSemaphore = new CountDownLatch(1); private static ZooKeeper zk = null; private static Stat stat = new Stat(); public static void main(String[] args) throws Exception { String path = "/zk-book"; zk = new ZooKeeper("localhost:2181",5000,new GetData_API_Sync_Usage()); connectedSemaphore.await(); zk.create( path, "123".getBytes(), Ids.OPEN_ACL_UNSAFE, CreateMode.EPHEMERAL ); System.out.println(new String(zk.getData( path, true, stat ))); System.out.println(stat.getCzxid()+","+stat.getMzxid()+","+stat.getVersion()); zk.setData( path, "123".getBytes(), -1 ); Thread.sleep( Integer.MAX_VALUE ); } public void process(WatchedEvent event) { if (KeeperState.SyncConnected == event.getState()) { if (EventType.None == event.getType() && null == event.getPath()) { connectedSemaphore.countDown(); } else if (event.getType() == EventType.NodeDataChanged) { try { System.out.println(new String(zk.getData( event.getPath(), true, stat ))); System.out.println(stat.getCzxid()+","+stat.getMzxid()+","+stat.getVersion()); } catch (Exception e) {} } } }}输出123373,373,0123373,374,1
注意:
客户端在获取一个节点数据内容的时候是可以进行watcher注册的,这样一来,一旦该节点的状态发生变更,那么Zookeeper服务端就会向客户端发送一个NodeDataChanged()事件通知。
API返回结果的类型是byte[],目前Zookeeper只支持这种类型的数据存储,所以在获取数据的时候也是返回此类型。
这里明确一个概念:节点的数据内容或是节点的数据版本变化,都被看作是Zookeeper节点的变化。
扩展
参考
1.《从Paxos到Zookeeper:分布式一致性原理与实践》
2. https://zookeeper.apache.org/doc/r3.5.3-beta/api/index.html
阅读全文
0 0
- Zookeeper实例原生API--同步获取节点数据
- Zookeeper实例原生API--同步获取子节点列表
- Zookeeper实例原生API--同步更新节点数据
- Zookeeper实例原生API--异步获取节点数据
- Zookeeper实例原生API--同步创建节点
- Zookeeper实例原生API--异步获取子节点列表
- Zookeeper实例原生API--异步更新节点数据
- Zookeeper实例原生API--异步创建节点
- Zookeeper实例原生API--删除节点
- Zookeeper实例ZkClient API-获取节点数据内容
- Zookeeper实例原生API--使用错误权限信息的ZooKeeper会话访问含权限信息的数据节点
- Zookeeper实例原生API--检查节点是否存在
- Zookeeper实例原生API--删除节点接口权限
- Zookeeper实例原生API--无权限信息的Zookeeper会话访问有权限信息的节点
- Zookeeper实例ZkClient API-获取子节点列表
- Zookeeper实例Curator API-使用Curator获取数据内容
- Zookeeper实例原生API--创建一个基本的Zookeeper会话
- Zookeeper实例ZkClient API-创建节点
- 揭露动画ViewAnimationUtils.createCircularReveal()
- 由于IE对URL编码问题处理不当带来的XSS的PoC
- 计算机视觉资料
- Restful
- Java反射
- Zookeeper实例原生API--同步获取节点数据
- [HAOI2017]新型城市化
- 简单支持unity同一个项目多开的方式
- 状态栏、沉浸式状态栏
- 限制容器对内存的使用
- (6/10)Servlet入门
- 单例模式之线程安全
- 2.下拉刷新 用第三方插件XListView怎么弄
- 使用Intellij IDEA通过Maven+Hibernate+Spring Mvc构建Java后台