创建一个zookeeper的会话(实现watcher)
在先前的章节中,我们利用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类,可以尝试连接一下。看一下控制台打印的信息
创建一个zookeeper的会话(实现watcher)的更多相关文章
- 【转】怎样创建一个Xcode插件(Part 2)
原文:How To Create an Xcode Plugin: Part 2/3 原作者:Derek Selander 译者:@yohunl 译者注:原文使用的是xcode6.3.2,我翻译的时候 ...
- SQL Server Extended Events 进阶 2:使用UI创建基本的事件会话
第一阶中我们描述了如何在Profiler中自定义一个Trace,并且让它运行在服务器端来创建一个Trace文件.然后我们通过Jonathan Kehayias的 sp_SQLskills_Conver ...
- 開始搭建第一个zookeeper
首先须要下载zookeeper的tar包.地址为http://zookeeper.apache.org,然后再linux中解压并编译tar包. # tar-xvzf zookeeper-3.4.5.t ...
- zookeeper系列(九)zookeeper的会话详解
作者:leesf 掌控之中,才会成功:掌控之外,注定失败. 出处:http://www.cnblogs.com/leesf456/p/6103870.html尊重原创,大家共同学习: 一.前言 ...
- 利用django创建一个投票网站(五)
创建你的第一个 Django 项目, 第五部分 这一篇从第四部分(en)结尾的地方继续讲起.我们在前几章成功的构建了一个在线投票应用,在这一部分里我们将其创建一些自动化测试. 自动化测试简介 自动化测 ...
- 利用django创建一个投票网站(一)
这是教程的原始链接:http://django-intro-zh.readthedocs.io/zh_CN/latest/part1/ 创建你的第一个 Django 项目, 第一部分 来跟着实际项目学 ...
- WCF服务二:创建一个简单的WCF服务程序
在本例中,我们将实现一个简单的计算服务,提供基本的加.减.乘.除运算,通过客户端和服务端运行在同一台机器上的不同进程实现. 一.新建WCF服务 1.新建一个空白解决方案,解决方案名称为"WC ...
- Asp.Net MVC是否针对每次请求都重新创建一个控制器实例
一.Asp.Net MVC是否针对每次请求都重新创建一个控制器实例 默认情况下,答案是确定的. ControllerBuilder类 ControllerBuilder.Current用户获取默认的控 ...
- Linux如何创建一个新进程
2016-03-31 张超<Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 Linux如何创建一个新进程 ...
随机推荐
- TCP三次握手及四次挥手详解及常见面试题
https://blog.csdn.net/ZWE7616175/article/details/80432486
- POJ-1236 Network of Schools,人生第一道Tarjan....
Network of Schools 题意:若干个学校组成一个计算机网络系统,一个学校作为出发端连接着若干个学校,信息可以传送到这些学校.被链接的学校不需要再次与出发端相连,现在问你:A:最少选几个学 ...
- POJ-1696 Space Ant 凸包版花式水过!
Space Ant 明天早上最后一科毛概了,竟然毫无复习之意,沉迷刷题无法自拔~~ 题意:说实 ...
- ORACLE查询字段中含有空格的数据
SELECT * FROM T_NAME WHERE REGEXP_LIKE(COLNAME, '( )+'); SELECT * FROM T_NAME WHERE length(COLNAME) ...
- cell展开的几种方式
一.插入新的cell 原理: (1)定义是否展开,和展开的cell的下标 @property (assign, nonatomic) BOOL isExpand; //是否展开 @property ( ...
- 【bzoj2597】[Wc2007]剪刀石头布 动态加边费用流
题目描述 在一些一对一游戏的比赛(如下棋.乒乓球和羽毛球的单打)中,我们经常会遇到A胜过B,B胜过C而C又胜过A的有趣情况,不妨形象的称之为剪刀石头布情况.有的时候,无聊的人们会津津乐道于统计有多少这 ...
- 【Luogu】P3847调整队形(DP)
题目链接 DP果真是考思维啊 增加一个数的操作等价于删掉那个不和谐的数的操作. 所以1.2操作可以忽略. 剩下3.4操作,则可以设计f[i][j]是将区间[i,j]变成回文序列需要的操作数. if(a ...
- FZU 2186 小明的迷宫 【压状dp】
Problem Description 小明误入迷宫,塞翁失马焉知非福,原来在迷宫中还藏着一些财宝,小明想获得所有的财宝并离开迷宫.因为小明还是学生,还有家庭作业要做,所以他想尽快获得所有财宝并离开迷 ...
- 【二分+扫描线乱搞】B. Producing Snow
注意二分写法... http://codeforces.com/problemset/problem/923/B #include<cstdio> #include<string.h ...
- servlet对form提交的数据进行XML转换后发送
今天遇到一个项目,要求对form表单提交的数据进行以xml格式发送出去: 直接写XMLUtil工具类如下: package com.yfit.controller; import javax.serv ...