zoukankan      html  css  js  c++  java
  • 创建一个zookeeper的会话(实现watcher)

    在先前的章节中,我们利用zkCli去了解了一下主要的zookeeper的操作。在接下来的章节中,我们将会学习一下在应用中是怎样利用zookeeper的api的。接下来我们将利用一个程序展示一下,怎样来创建一个回话和监视。

    那么以下我们将開始一个主从模式的结构样例。


    创建一个zookeeper的会话


    如以下所看到的,每个建立的会话一旦它的连接被破坏,将会转移到其它的zookeeper服务。仅仅要会话保持通畅。那么句柄将会有效。那么zookeeperclient类库将会经历的保持连接。假设句柄关闭了。那么zookeeperclient的类库会告诉zookeeper服务端终止会话。假设zookeeper了解到client已经死掉了,它将会验证会话。假设以后client向再次恢复这个会话,将会通过这个句柄来验证一个会话的有效性。



    Zookeeper的构造函数例如以下所看到的

    ZooKeeper(

        String connectString,

        int sessionTimeout,

    Watcher watcher)

    connectString:包括了zookeeper服务端的主机名和端口号,

    sessionTimeOut:会话的超时时间。是以毫秒为单位的

    watcher:当我们收到一个会话事件的时候,须要去创建一个对象。

    由于watch是一个接口,因此我们须要去实现该接口,从而完毕zookeeper构造函数的初始化。client须要用监视去观察zookeeper的会话状态。当client建立连接或者失去连接的时候,就会创建该事件。该事件也可以利用来监视zookeeper数据的改变。最后假设会话过期后。该事件也可以监听到,终于通过client。

    实现一个监视

    为了可以通知client,我们须要实现一个监视。

    该接口信息例如以下所看到的

    public interface Watcher {

        void process(WatchedEventevent);

    }

     

    实现一个watcher

    /**     
     * @FileName: master.java   
     * @Package:com.test   
     * @Description: TODO  
     * @author: LUCKY    
     * @date:2016年1月15日 下午7:54:58   
     * @version V1.0     
     */
    package com.test;
    
    import java.io.IOException;
    
    import org.apache.zookeeper.WatchedEvent;
    import org.apache.zookeeper.Watcher;
    import org.apache.zookeeper.ZooKeeper;
    
    /**
     * @ClassName: master
     * @Description: 实现一个maste的watcher
     * @author: LUCKY
     * @date:2016年1月15日 下午7:54:58
     */
    public class master implements Watcher {
    
    	ZooKeeper zk;
    	String hostPort;
    
    	/**  
    	 *    
    	 */
    	public master(String hostPort) {
    		this.hostPort = hostPort;
    	}
    
    	void startZk() throws IOException {
    		zk = new ZooKeeper(hostPort, 15000, this);
    	}
    
    	public void process(WatchedEvent event) {
    		System.out.println(event);
    	}
    
    	void stopZk() throws Exception {
    		zk.close();
    	}
    
    	public static void main(String[] args) throws Exception {
    		master m = new master("100.66.162.90:2180");
    		m.startZk();
    
    		Thread.sleep(60000);
    		m.stopZk();
    	}
    }
    


    上面的样例就是一个简单的实现water的master类,可以尝试连接一下。看一下控制台打印的信息


  • 相关阅读:
    iOS开发UI篇—UIScrollView控件介绍
    iOS开发UI篇—iOS开发中三种简单的动画设置
    iOS开发UI篇—iOS开发中Xcode的一些使用技巧
    iOS开发UI篇—在ImageView中添加按钮以及Tag的参数说明
    iOS开发UI篇—KVC简单介绍
    iOS开发UI篇—从代码的逐步优化看MVC
    iOS开发UI篇—xib的简单使用
    iOS开发UI篇—字典转模型
    iOS开发UI篇—九宫格坐标计算
    A1005. Spell It Right
  • 原文地址:https://www.cnblogs.com/yangykaifa/p/7197393.html
Copyright © 2011-2022 走看看