使用curator实现对zookeeper的增、删、改、查、回调
来源:互联网 发布:罗技无线鼠标推荐知乎 编辑:程序博客网 时间:2024/06/05 22:46
Curator是Netflix公司开源的一套zookeeper客户端框架,解决了很多Zookeeper客户端非常底层的细节开发工作,里面提供了更多丰富的操作,例如session超时重连、主从选举、分布式计数器、分布式锁等等适用于各种复杂的zookeeper场景的API封装。
<dependency> <groupId>org.apache.curator</groupId> <artifactId>curator-framework</artifactId> <version>2.11.0</version></dependency><dependency> <groupId>org.apache.curator</groupId> <artifactId>curator-recipes</artifactId> <version>2.11.0</version></dependency>
public class CuratorClientUtils { private static String ZK_URL = "192.168.1.45:2181,192.168.1.46:2181,192.168.1.41:2181"; private static CuratorFramework curatorFramework = null; public static CuratorFramework getCuratorFramework(){ if (curatorFramework == null){ curatorFramework = CuratorFrameworkFactory.newClient(ZK_URL, 5000,5000, new ExponentialBackoffRetry(1000,5)); } curatorFramework.start(); return curatorFramework; }}
public class CuratorApiDemo { public static void main(String[] args) throws Exception { CuratorFramework curatorFramework = CuratorClientUtils.getCuratorFramework(); //fluent模式,优雅的模式 /** * 新增,递归创建,CreateMode.PERSISTENT 创建持久化节点(默认), */ String path = curatorFramework.create().creatingParentsIfNeeded() .withMode(CreateMode.PERSISTENT).forPath("/node/node1","123".getBytes()); System.out.println(path); byte[] nodeBytes = curatorFramework.getData().forPath("/node"); System.out.println("node的值:"+new String(nodeBytes)); /** * 修改,如果第二个参数不填 会被修改为本机IP */ curatorFramework.setData().forPath("/node/node1","node1".getBytes()); /** * 获取stat信息 */ Stat stat=new Stat(); byte[] bytes = curatorFramework.getData().storingStatIn(stat).forPath("/node/node1"); System.out.println("修改后的值:"+new String(bytes)+"-->"+stat); /** * 删除 */ Void aVoid = curatorFramework.delete().deletingChildrenIfNeeded().forPath("/node"); System.out.println(aVoid); /** * 事务操作(curator独有的), 不会创建成功! */ curatorFramework.inTransaction().create().withMode(CreateMode.PERSISTENT).forPath("/node","123".getBytes()) .and().setData().forPath("/curator","123".getBytes()); ExecutorService executorService = Executors.newFixedThreadPool(1); curatorFramework.create().creatingParentsIfNeeded().withMode(CreateMode.PERSISTENT) .inBackground(new BackgroundCallback() { public void processResult(CuratorFramework curatorFramework, CuratorEvent curatorEvent) throws Exception { System.out.println("接收到watcher回调"); System.out.println(Thread.currentThread().getName()+"->resultCode:"+curatorEvent.getResultCode()+"->" +curatorEvent.getType()); } },executorService).forPath("/node/node1"); System.in.read(); }}
阅读全文
0 0
- 使用curator实现对zookeeper的增、删、改、查、回调
- Zookeeper入门之使用curator连接zookeeper并且进行节点的增删改查及ACL
- Zookeeper入门之使用curator连接zookeeper并且进行节点的增删改查及ACL
- Zookeeper入门之使用curator连接zookeeper并且进行节点的增删改查及ACL
- 使用NHibernate对数据库实现增、删、改、查操作
- DOM4J 实现对XML文档的增、删、改、查
- ZooKeeper学习笔记:使用zookeeper的API实现增删查改以及客户端的观察者模式
- 使用curator实现zookeeper锁服务的示例分享
- zookeeper集群之java程序同步方式实现对数据节点的增,删,改,查及其权限管理(二)
- zookeeper集群之java程序异步方式实现对数据节点的增,删,改,查及其权限管理(三)
- 使用JDBC实现对数据的增删改查
- java使用反射实现对数据库的增删改查
- 初次使用servlet实现对数据的增删改查
- 使用List接口实现对数据的增删改查
- 使用Hibernate实现简单的增、改、删、查操作
- 使用Hibernate实现简单的增、改、删、查操作
- 使用系统api实现数据库的增、删、改、查
- 使用Hibernate实现增、删、改、查
- KMP算法
- MySQL
- ssl1597-石子合并问题【区间dp练习】
- 个人理解小波变换及转载小波变换原理
- 圆的面积练习
- 使用curator实现对zookeeper的增、删、改、查、回调
- 第十周项目1
- 域名和ip是多对多的关系
- 使用HEXO+GitHub搭建自己的博客
- 学习型网桥中间人攻击
- maven报错
- access数据迁移到mysql出现的中文乱码问题
- openresty-redis在不同网络环境下QPS对比
- 上班好难啊