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

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

创建一个zookeeper的会话

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

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />

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类,可以尝试连接一下。看一下控制台打印的信息

最新文章

  1. 获取exr图片上像素点的颜色通道
  2. xp_sendmail: 由于邮件错误 0x80004005 而失败
  3. Oracle Redhat5.5
  4. EF生成实体模板改良
  5. andorid 远程存储中JDK和Volley的GET和POST方法
  6. [百度空间] [原] 全局operator delete重载到DLL
  7. ubuntu 彻底删除软件包
  8. 《WPF程序设计指南》读书笔记——第1章 应用程序与窗口
  9. Android--应用开发1(应用程序框架)
  10. CleanMyMac 1.10.8
  11. LINQ更新用户
  12. Python网络编程——编写一个简单的回显客户端/服务器应用
  13. Python用Pillow(PIL)进行简单的图像操作
  14. Hello,World!!----来自半个新OIer的问候
  15. AI - TensorFlow - 示例03:基本回归
  16. 痞子衡嵌入式:第一本Git命令教程(4)- 转移(add/rm/mv)
  17. SignalR 行实时通信遇到的
  18. 魔力Python--斐波那契数列(全)
  19. Android 框架 Afinal使用
  20. 《你不知道的javascript》读书笔记1

热门文章

  1. js对文字进行编码
  2. hdu 2177 威佐夫博弈变形
  3. 九度oj题目1009:二叉搜索树
  4. jenkins之Tomcat7+jdk1.7+jenkins
  5. 自定义Title
  6. VB6 post图片
  7. Hubtown
  8. 带你学Node系列之express-CRUD
  9. Golang 入门 : 等待 goroutine 完成任务
  10. htmlcxx取指定字段实例