Zookeeper实例原生API--创建一个基本的Zookeeper会话


/**
 * 
* @ClassName: ZooKeeper_Constructor_Usage_Simple 
* @Description: TODO(Java API -> 创建连接 -> 创建一个最基本的ZooKeeper对象实例) 
* @author 
* @date 2017年6月11日 下午8:24:07 
*
 */
public class ZooKeeper_Constructor_Usage_Simple implements Watcher {
    private static CountDownLatch connectedSemaphore = new CountDownLatch(1);
    public static void main(String[] args) throws Exception{
        ZooKeeper zookeeper = new ZooKeeper("localhost:2181",5000,new ZooKeeper_Constructor_Usage_Simple());
        System.out.println(zookeeper.getState());
        try {
            connectedSemaphore.await();
        } catch (InterruptedException e) {}
        System.out.println("ZooKeeper session established.");
    }
    public void process(WatchedEvent event) {
        System.out.println("Receive watched event:" + event);
        if (KeeperState.SyncConnected == event.getState()) {
            connectedSemaphore.countDown();
        }
    }
}
输出:
CONNECTING
Receive watched event:WatchedEvent state:SyncConnected type:None path:null
ZooKeeper session established.


注意:

Zookeeper客户端和服务器端会话的建立是一个异步的过程,也就是说,在程序中构造方法会在处理完客户端初始化工作后立即返回,大多数情况下会话的生命周期处于CONNECTING状态,当该会话真正创建完毕后,Zookeeper服务端会向会话对应的客户端发送一个事件通知,已告知客户端,客户端之后在获取这个通知之后,才算真正建立了会话。

实现Watcher接口,重写process方法,该方法负责处理来自Zookeeper服务端的Watcher通知。 


扩展

Zookeeper实例原生API--创建一个基本的Zookeeper会话_第1张图片

Zookeeper实例原生API--创建一个基本的Zookeeper会话_第2张图片Zookeeper实例原生API--创建一个基本的Zookeeper会话_第3张图片


参考

1.《从Paxos到Zookeeper:分布式一致性原理与实践》

2. https://zookeeper.apache.org/doc/r3.5.3-beta/api/index.html


你可能感兴趣的:(Zookeeper)