创建一个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" />

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

时间: 2024-10-10 21:37:50

创建一个zookeeper的会话(实现watcher)的相关文章

创建一个简单的守护进程

1.概念 守护进程也称精灵进程,是在后台运行的一种特殊进程,它脱离控制终端并且周期性的执行某种任务或者等待某种事件的发生,脱离终端是为了避免进程在执行过程中的信息在任何终端上显示,并且进程也不会被任何终端产生的中断信息所终止:linux下的大多 服务器都是用守护进程实现的.比如internet 的inted 和wed 服务器httpd 2.创建守护进程的一般步骤 (1)调用umask重设文件权限掩码 文件权限掩码:指屏蔽掉文件权限中的对应位.例如,有个文件权限掩码为050,它就屏蔽掉了文件组拥有

创建一个守护进程

一.概述:守护进程也称精灵进程(Daemon),是运行在后台的一种特殊进程.它独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件.守护进程是随系统启动而存在,随系统关闭而消失的进程(也就是开机之后就会存在,关机才消失).守护进程是一种很有用的进程,Linux的大多数服务器就是用守护进程实现的. 在终端运行命令:ps axj | head 参数a表示不仅列出当前用户进程,也列出所有其它用户进程. 参数x表示不仅列出有控制终端的进程,也列出所有无控制终端的进程. 参数j表示列出与作业控制

怎样创建一个xcode插件 第2部分/3部分

本文翻译自 https://www.raywenderlich.com/97756/creating-an-xcode-plugin-part-2 原作者:Derek Selander 译者:@yohunl 译者注:原文使用的是xcode6.3.2,我翻译的时候,使用的是xcode7.2.1,经过验证,本部分中说的依然是有效的.在文中你可以学习到一系列的技能,非常值得一看.这些技能不单单只是用来创建插件,对你平时的调试等,也有非常大的帮助. 欢迎你来到创建xcode插件教程的第二部分.在第一部分

【转】怎样创建一个Xcode插件(Part 2)

原文:How To Create an Xcode Plugin: Part 2/3 原作者:Derek Selander 译者:@yohunl 译者注:原文使用的是xcode6.3.2,我翻译的时候,使用的是xcode7.2.1,经过验证,本部分中说的依然是有效的.在文中你可以学习到一系列的技能,非常值得一看.这些技能不单单只是用来创建插件,对你平时的调试等,也有非常大的帮助. 欢迎你来到创建xcode插件教程的第二部分.在第一部分中, 你已经了解了怎么通过NSNotification来窥探x

SQL Server Extended Events 进阶 2:使用UI创建基本的事件会话

第一阶中我们描述了如何在Profiler中自定义一个Trace,并且让它运行在服务器端来创建一个Trace文件.然后我们通过Jonathan Kehayias的 sp_SQLskills_ConvertTraceToExtendedEvents存储过程,将Trace定义转换为创建Extended Events 会话的脚本.希望它为你建立起了一座由SQL Trace 通向Extended Events开始的桥梁.当然,它也提供了一个将已有SQL Trace库转换为Extend Events的有效途

ZooKeeper的“会话终止”是这么出现的

转载请注明出处: jiq?钦's technical Blog 经过我的测试,得出关于会话终止的下列结论: 客户端创建ZooKeeper实例连接到ZooKeeper服务端,设置会话超时时间为10s. (1)若强制关闭ZooKeeper服务端(模拟其崩溃),客户端立马收到Disconnected连接断开事件,等待半个小时,再次启动ZooKeeper服务端,客户端收到SyncConnected连接建立事件,在这之前注册的watcher仍然有效,推测临时节点也一样有效. (2)若断开客户端与服务端的网

Java中通过方法创建一个http连接并请求

1.Java代码创建一个连接并请求该连接返回的数据 doGet()方法,execute()方法中调用 package demo2.x.com; import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; import javax.print.attribute.

你可以在 Python 中轻易创建一个后缀数组

我想告诉你一个关于后缀数组的故事.在一段时间里,我正在西雅图的一家公司面试,当时好奇的是如何最有效地创建一个用于可执行二进制文件的diff.我的研究给我带来了后缀数组和后缀树.后缀数组只是,将字符串的所有后缀排序,储存到有序列表中.后缀树是类似的,但是比列表更像BSTree.这些算法相当简单,一旦你进行了排序操作,它们就具有很快的性能.他们解决的问题是,找到两个字符串之间最长的公共子串(或者在这种情况下是字节列表). 你可以在 Python 中轻易创建一个后缀数组: >>> magic

WCF服务二:创建一个简单的WCF服务程序

在本例中,我们将实现一个简单的计算服务,提供基本的加.减.乘.除运算,通过客户端和服务端运行在同一台机器上的不同进程实现. 一.新建WCF服务 1.新建一个空白解决方案,解决方案名称为"WCFSolution". 2.解决方案右键->添加->类库项目,类库名称为CalculateWcfService. 3.创建服务契约 WCF采用基于契约的交互方式实现了服务的自制.服务契约:是相关操作的集合.契约就是双方或多方就某个关注点达成的一种共识,是一方向另一方的一种承诺.签署了某个