ZooKeeper(3.4.5) 开源客户端Curator的简单示例

一、创建会话

1. 创建会话

package com.huey.dream.demo;

import org.apache.curator.framework.CuratorFramework;
import org.apache.curator.framework.CuratorFrameworkFactory;
import org.apache.curator.retry.ExponentialBackoffRetry;

/**
 * 使用Curator创建会话
 * @author  huey
 * @version 1.0
 * @created 2015-3-1
 */
public class CarutorDemo {

    public static void main(String[] args) throws Exception {
        CuratorFramework client = CuratorFrameworkFactory.newClient(
                "192.168.1.109:2181",                    // 服务器列表
                5000,                                    // 会话超时时间,单位毫秒
                3000,                                    // 连接创建超时时间,单位毫秒
                new ExponentialBackoffRetry(1000, 3)    // 重试策略
        );
        client.start();

        client.close();
    }
}

2. 使用链式风格的API接口创建会话

package com.huey.dream.demo;

import org.apache.curator.framework.CuratorFramework;
import org.apache.curator.framework.CuratorFrameworkFactory;
import org.apache.curator.retry.ExponentialBackoffRetry;

/**
 * 使用链式风格的API接口创建会话
 * @author  huey
 * @version 1.0
 * @created 2015-3-1
 */
public class CarutorDemo {

    public static void main(String[] args) throws Exception {
        CuratorFramework client = CuratorFrameworkFactory.builder()
                .connectString("192.168.1.109:2181")
                .sessionTimeoutMs(5000)
                .connectionTimeoutMs(3000)
                .retryPolicy(new ExponentialBackoffRetry(1000, 3))
                .build();
        client.start();

        client.close();
    }
}

二、创建节点

package com.huey.dream.demo;

import org.apache.curator.framework.CuratorFramework;
import org.apache.curator.framework.CuratorFrameworkFactory;
import org.apache.curator.retry.ExponentialBackoffRetry;
import org.apache.zookeeper.CreateMode;

/**
 * 使用Curator创建节点
 * @author  huey
 * @version 1.0
 * @created 2015-3-1
 */
public class CarutorDemo {

    public static void main(String[] args) throws Exception {
        CuratorFramework client = CuratorFrameworkFactory.builder()
            .connectString("192.168.1.109:2181")
            .sessionTimeoutMs(5000)
            .connectionTimeoutMs(3000)
            .retryPolicy(new ExponentialBackoffRetry(1000, 3))
            .build();
        client.start();

        client.create()
            .creatingParentsIfNeeded()
            .withMode(CreateMode.PERSISTENT)
            .forPath("/zk-huey/cnode", "hello".getBytes());

        client.close();
    }
}

三、删除节点

package com.huey.dream.demo;

import org.apache.curator.framework.CuratorFramework;
import org.apache.curator.framework.CuratorFrameworkFactory;
import org.apache.curator.retry.ExponentialBackoffRetry;
import org.apache.zookeeper.CreateMode;

/**
 * 使用Curator删除节点
 * @author  huey
 * @version 1.0
 * @created 2015-3-1
 */
public class CarutorDemo {

    public static void main(String[] args) throws Exception {
        CuratorFramework client = CuratorFrameworkFactory.builder()
            .connectString("192.168.1.109:2181")
            .sessionTimeoutMs(5000)
            .connectionTimeoutMs(3000)
            .retryPolicy(new ExponentialBackoffRetry(1000, 3))
            .build();
        client.start();

        client.create()
            .creatingParentsIfNeeded()
            .withMode(CreateMode.PERSISTENT)
            .forPath("/zk-huey/cnode", "hello".getBytes());

        client.delete()
            .guaranteed()
            .deletingChildrenIfNeeded()
            .withVersion(-1)
            .forPath("/zk-huey");

        client.close();
    }
}

四、读取节点数据

package com.huey.dream.demo;

import org.apache.curator.framework.CuratorFramework;
import org.apache.curator.framework.CuratorFrameworkFactory;
import org.apache.curator.retry.ExponentialBackoffRetry;
import org.apache.zookeeper.CreateMode;
import org.apache.zookeeper.data.Stat;

/**
 * 使用Curator读取节点数据
 * @author  huey
 * @version 1.0
 * @created 2015-3-1
 */
public class CarutorDemo {

    public static void main(String[] args) throws Exception {
        CuratorFramework client = CuratorFrameworkFactory.builder()
            .connectString("192.168.1.109:2181")
            .sessionTimeoutMs(5000)
            .connectionTimeoutMs(3000)
            .retryPolicy(new ExponentialBackoffRetry(1000, 3))
            .build();
        client.start();

        client.create()
            .creatingParentsIfNeeded()
            .withMode(CreateMode.PERSISTENT)
            .forPath("/zk-huey/cnode", "hello".getBytes());

        Stat stat = new Stat();
        byte[] nodeData = client.getData()
            .storingStatIn(stat)
            .forPath("/zk-huey/cnode");
        System.out.println("NodeData: " + new String(nodeData));
        System.out.println("Stat: " + stat);

        client.close();
    }
}

五、更新节点数据

package com.huey.dream.demo;

import org.apache.curator.framework.CuratorFramework;
import org.apache.curator.framework.CuratorFrameworkFactory;
import org.apache.curator.retry.ExponentialBackoffRetry;
import org.apache.zookeeper.CreateMode;
import org.apache.zookeeper.data.Stat;

/**
 * 使用Curator更新节点数据
 * @author  huey
 * @version 1.0
 * @created 2015-3-1
 */
public class CarutorDemo {

    public static void main(String[] args) throws Exception {
        CuratorFramework client = CuratorFrameworkFactory.builder()
            .connectString("192.168.1.109:2181")
            .sessionTimeoutMs(5000)
            .connectionTimeoutMs(3000)
            .retryPolicy(new ExponentialBackoffRetry(1000, 3))
            .build();
        client.start();

        client.create()
            .creatingParentsIfNeeded()
            .withMode(CreateMode.PERSISTENT)
            .forPath("/zk-huey/cnode", "hello".getBytes());

        client.setData()
            .withVersion(-1)
            .forPath("/zk-huey/cnode", "world".getBytes());

        client.close();
    }
}

六、 获取子节点列表

package com.huey.dream.demo;

import java.util.List;

import org.apache.curator.framework.CuratorFramework;
import org.apache.curator.framework.CuratorFrameworkFactory;
import org.apache.curator.retry.ExponentialBackoffRetry;
import org.apache.zookeeper.CreateMode;

/**
 * 使用Curator
 * @author  huey
 * @version 1.0
 * @created 2015-3-1
 */
public class CarutorDemo {

    public static void main(String[] args) throws Exception {
        CuratorFramework client = CuratorFrameworkFactory.builder()
            .connectString("192.168.1.109:2181")
            .sessionTimeoutMs(5000)
            .connectionTimeoutMs(3000)
            .retryPolicy(new ExponentialBackoffRetry(1000, 3))
            .build();
        client.start();

        client.create()
            .creatingParentsIfNeeded()
            .withMode(CreateMode.PERSISTENT)
            .forPath("/zk-huey/cnode", "hello".getBytes());

        List<String> children = client.getChildren().forPath("/zk-huey");
        System.out.println("Children: " + children);

        client.close();
    }
}
时间: 2024-12-15 06:58:54

ZooKeeper(3.4.5) 开源客户端Curator的简单示例的相关文章

zookeeper开源客户端curator

zookeeper的原生api相对来说比较繁琐,比如:对节点添加监听事件,当监听触发后,我们需要再次手动添加监听,否则监听只生效一次:再比如,断线重连也需要我们手动代码来判断处理等等.对于curator的介绍,从网上百度了一段:Curator是Netflix开源的一套zookeeper客户端框架,用它来操作zookeeper更加方便,按Curator官方所比喻的,guava to JAVA,curator to zookeeper,Curator采用了fluent风格的代码,非常简洁. ----

八:Zookeeper开源客户端Curator的api测试

curator是Netflix公司开源的一套ZooKeeper客户端,Curator解决了很多ZooKeeper客户端非常底层的细节开发工作.包括连接重连,反复注册Watcher等.实现了Fluent风格的API接口,目前已经为Apache的顶级项目,是全世界使用最广泛的ZooKeeper客户端之一 第一:maven依赖 1 <dependency> 2 <groupId>org.apache.curator</groupId> 3 <artifactId>

Zookeeper开源客户端Curator之基本功能讲解

简介 Curator是Netflix公司开源的一套Zookeeper客户端框架.了解过Zookeeper原生API都会清楚其复杂度.Curator帮助我们在其基础上进行封装.实现一些开发细节,包括接连重连.反复注册Watcher和NodeExistsException等.目前已经作为Apache的顶级项目出现,是最流行的Zookeeper客户端之一.从编码风格上来讲,它提供了基于Fluent的编程风格支持. 除此之外,Curator还提供了Zookeeper的各种应用场景:Recipe.共享锁服

C/C++ TCP客户端、服务器简单示例

使用VS2010新建2个项目,一个叫 "tcpserver" ,另一个叫 "tcpclient". 右击 "项目" --> "属性" --> "配置属性" --> "链接器" --> "输入" --> "附加依赖项" ,在右侧下拉框中点击 "编辑" 按钮,添加 "WS2_32.lib&qu

Zookeeper之开源客户端ZkClient

ZkClient是由Datameer的工程师开发的开源客户端,对Zookeeper的原生API进行了包装,实现了超时重连.Watcher反复注册等功能. ZKClient版本及源码 maven依赖 ZkClient目前有两个不同artifactId的系列. 其中最早的0.1版本maven依赖如下: <dependency> <groupId>org.apache.zookeeper</groupId> <artifactId>zookeeper</ar

Android Voip开源客户端比较

Android Voip开源客户端比较

zookeeper源码分析之一客户端发送请求流程

znode 可以被监控,包括这个目录节点中存储的数据的修改,子节点目录的变化等,一旦变化可以通知设置监控的客户端,这个功能是zookeeper对于应用最重要的特性,通过这个特性可以实现的功能包括配置的集中管理,集群管理,分布式锁等等. 知识准备: zookeeper定义的状态有: Unknown (-1),Disconnected (0),NoSyncConnected (1),SyncConnected (3),AuthFailed (4),ConnectedReadOnly (5),Sasl

Socket在iOS客户端上的简单实现 - 利用GCAsyncSocket框架

GCAsyncSocket 这是一个2003的开发出来的一个开源框架 首先把GCDAsyncSocket的.h和.m文件拖入到工程中 试图控制器遵守GCDAsyncSocketDelegate协议 实例:在页面上有一个简单的textView和textField 在textField中输入文字后,点击发送即可把文字发送到服务器 ,服务器端返回的文字数据会显示到textView上 //  服务器主机ip地址#define kHost @"172.16.3.101"//  服务器主机通信端口

基于zookeeper的MySQL主主负载均衡的简单实现

1.先上原理图 2.说明 两个mysql采用主主同步的方式进行部署. 在安装mysql的服务器上安装客户端(目前是这么做,以后想在zookeeper扩展集成),客户端实时监控mysql应用的可用性,可用时想zookeepercreateNode,当网络不可用或者mysql应用不可用时,建立的znode消失. 在客户端,通过改造proxool数据库连接池的方式,在建立连接之前,从zookeeper中去取真实的数据库URL,如果有多个URL,即有多个服务时,采用随机算法去拿连接(以后准备扩展权重).