JAVA 连接 ZooKeeper之初体验
Java连接Zookeeper
一、配置zk环境
本人使用的是虚拟机,创建了两台linux服务器(安装过程百度上很多)
准备zk的安装包,zookeeper-3.4.10.tar.gz,可在Apache官网下载,这里我提供了一个百度云的https://pan.baidu.com/s/15icVROSKpgwUzqzpHW6Rbg 密码dgnp
安装过程
环境准备:安装JDK,配置Hosts,配置Hostname、关闭防火墙
$ZOOKEEPER = /home/zookeeper_application/zookeeper-3.4.10
tar -xvzf zookeeper-3.4.10.tar.gz目录为/home/zookeeper_application/zookeeper-3.4.10
cd 到zookeeper-3.4.10,mkdir data 创建data文件夹,cd 到data,touch myid 创建myid文件,vi myid myid存server的id,可以是1,2,3…,必须唯一
创建$ZOOKEEPER/conf/zoo.cfg
修改zoo.cfg,增加如下:dataDir=/home/zookeeper_application/zookeeper-3.4.10/data
clientPort=2181
initLimit=10
syncLimit=5
tickTime=2000
server.1=master:2888:3888
server.2=slave1:2888:3888
其中server.X代表组成整个服务的机器,当服务启动时,会在数据目录下查找这个文件myid,这个文件中存有服务器的号码。
配置/etc/profile:
- export ZOOKEEPER_HOME=/home/zookeeper_application/zookeeper-3.4.10
- export PATH=$PATH:/usr/local/jdk1.7/bin:$ZOOKEEPER_HOME/bin
同样配置另外一台服务器,myid为2
启动/状态/停止 在bin目录下 zkServer.sh start|status|stop
java部分
创建zk.properties
zk.server=192.168.2.111:2181
zk.authentication_type=digest
zk.correct_authentication=rightKey
zk.bad_authentication=worngKey
ZkConfig.java
package org.seckill.zk.util;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
/**
* @author mxn
* @create 2018-07-16 17:22
*/
public class ZkConfig {
public static final Logger logger = LoggerFactory.getLogger(ZkConfig.class);
public static final String FILE_NAME = "zk.properties";
private String server;
private String authenticationType;
private String correctAuthentication;
private String badAuthentication;
/**
* 配置文件中的常量.
*/
public static final String zk_server = "zk.server";
public static final String zk_authentication_type = "zk.authentication_type";
public static final String zk_correct_authentication = "zk.correct_authentication";
public static final String zk_bad_authentication = "zk.bad_authentication";
/**
* 操作对象.
*/
private static ZkConfig config = new ZkConfig();
private ZkConfig() {
super();
}
private Properties properties;
/**
* 获取config对象.
*
* @return
*/
public static ZkConfig getConfig() {
return config;
}
public static void main(String[] args) {
System.out.println(1);
}
static {
config.loadPropertiesFromSrc();
}
public void loadPropertiesFromSrc() {
InputStream in = null;
try {
in = ZkConfig.class.getClassLoader().getResourceAsStream(FILE_NAME);
if (null != in) {
properties = new Properties();
try {
properties.load(in);
loadProperties(properties);
} catch (IOException e) {
throw e;
}
} else {
logger.error(FILE_NAME + "属性文件未能在classpath指定的目录下 " + ZkConfig.class.getClassLoader().getResource("").getPath() + " 找到!");
}
} catch (Exception e) {
logger.error("ZkConfig.getZkConfig error:", e);
} finally {
if (null != in) {
try {
in.close();
} catch (IOException e) {
logger.error(e.getMessage(), e);
}
}
}
}
/**
* 根据传入的 {@link # load(Properties)}对象设置配置参数
*
* @param pro
*/
public void loadProperties(Properties pro) {
logger.info("开始从属性文件中加载配置项");
String value = null;
value = pro.getProperty(zk_server);
if (!ZkUtil.isEmpty(value)) {
this.server = value.trim();
logger.info("配置项:服务器ip==>" + zk_server + "==>" + value + " 已加载");
}
value = pro.getProperty(zk_authentication_type);
if (!ZkUtil.isEmpty(value)) {
this.authenticationType = value.trim();
logger.info("配置项:验证类型==>" + zk_authentication_type + " 已加载");
}
value = pro.getProperty(zk_correct_authentication);
if (!ZkUtil.isEmpty(value)) {
this.correctAuthentication = value.trim();
logger.info("配置项:正确的密码==>" + zk_correct_authentication + " 已加载");
}
value = pro.getProperty(zk_bad_authentication);
if (!ZkUtil.isEmpty(value)) {
this.badAuthentication = value.trim();
logger.info("配置项:错误的密码==>" + zk_bad_authentication + " 已加载");
}
}
public static Logger getLogger() {
return logger;
}
public static String getFileName() {
return FILE_NAME;
}
public String getServer() {
return server;
}
public void setServer(String server) {
this.server = server;
}
public String getAuthenticationType() {
return authenticationType;
}
public void setAuthenticationType(String authenticationType) {
this.authenticationType = authenticationType;
}
public String getCorrectAuthentication() {
return correctAuthentication;
}
public void setCorrectAuthentication(String correctAuthentication) {
this.correctAuthentication = correctAuthentication;
}
public String getBadAuthentication() {
return badAuthentication;
}
public void setBadAuthentication(String badAuthentication) {
this.badAuthentication = badAuthentication;
}
public static String getZk_server() {
return zk_server;
}
public static String getZk_authentication_type() {
return zk_authentication_type;
}
public static String getZk_correct_authentication() {
return zk_correct_authentication;
}
public static String getZk_bad_authentication() {
return zk_bad_authentication;
}
public static void setConfig(ZkConfig config) {
ZkConfig.config = config;
}
}
ZkUtil.java 一个工具类
package org.seckill.zk.util; /**
* @author 12084
* @create 2018-07-17 9:09
*/ public class ZkUtil {
/**
* 判断字符串是否为NULL或空
*
* @param s
* 待判断的字符串数据
* @return 判断结果 true-是 false-否
*/
public static boolean isEmpty(String s) {
return null == s || "".equals(s.trim());
} }
ZkAuth.java
package org.seckill.zk;import org.apache.zookeeper.*;
import org.apache.zookeeper.data.Stat;
import org.seckill.zk.util.ZkConfig;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import java.util.concurrent.atomic.AtomicInteger; /**
* @author 12084
* @create 2018-07-16 15:59
*/ public class ZkAuth implements Watcher { public static final Logger logger = LoggerFactory.getLogger(ZkAuth.class); final static String PATH = "/auth_test"; final static String PATH_DEL = "/auth_test/del_node"; static ZooKeeper zk = null; AtomicInteger seq = new AtomicInteger(); public void process(WatchedEvent event) {
try {
Thread.sleep(200);
} catch (InterruptedException e) {
e.printStackTrace();
}
if (event == null) {
return;
}
//连接状态
Event.KeeperState keeperState = event.getState();
//事件类型
Event.EventType eventType = event.getType(); String logPrefix = "【Watcher-" + seq.incrementAndGet() + "】"; logger.info(logPrefix + "收到Watcher通知");
logger.info(logPrefix + "连接状态:\t" + keeperState.toString());
logger.info(logPrefix + "事件类型:\t" + eventType.toString()); if (Event.KeeperState.SyncConnected == keeperState) {
//成功连接上ZK服务器
if (Event.EventType.None == eventType) {
logger.info(logPrefix + "成功连接上ZK服务器");
}
} else if (Event.KeeperState.Disconnected == keeperState) {
logger.info(logPrefix + "与ZK服务器断开连接");
} else if (Event.KeeperState.AuthFailed == keeperState) {
logger.info(logPrefix + "权限检查失败");
} else if (Event.KeeperState.Expired == keeperState) {
logger.info(logPrefix + "会话失效");
}
logger.info("--------------------------------------------");
} /**
* 创建ZK连接
*
* @param connectString ZK服务器地址列表
* @param sessionTimeout Session超时时间
*/
public void createConnection(String connectString, int sessionTimeout) {
releaseConnection(); try {
zk = new ZooKeeper(connectString, sessionTimeout, this);
//授权
zk.addAuthInfo(ZkConfig.getConfig().getAuthenticationType(), ZkConfig.getConfig().getCorrectAuthentication().getBytes()); logger.info("开始连接ZK服务器....");
while (zk.getState() != ZooKeeper.States.CONNECTED) {
Thread.sleep(3000);
} } catch (Exception e) {
e.printStackTrace();
} } /**
* 关闭ZK连接
*/
public void releaseConnection() {
if (zk != null) {
try {
zk.close();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
} /**
* 获取数据:不采用密码
*/
static void getDataByNoAuthentication() {
String prefix = "[不使用任何授权信息]";
logger.info(prefix + "获取数据:" + PATH);
try {
ZooKeeper noZk = new ZooKeeper(ZkConfig.getConfig().getServer(), 2000, null);
Thread.sleep(4000);
logger.info(prefix + "成功获取数据:" + noZk.getData(PATH, false, null));
} catch (Exception e) {
logger.error(prefix + "获取数据失败,原因:" + e.getMessage());
}
} /**
* 获取数据:采用错误的密码
*/
static void getDataByBadAuthentication() {
String prefix = "[使用错误的授权信息]"; try {
ZooKeeper badzk = new ZooKeeper(ZkConfig.getConfig().getServer(), 2000, null);
//授权
Thread.sleep(4000);
badzk.addAuthInfo(ZkConfig.getConfig().getAuthenticationType(), ZkConfig.getConfig().getBadAuthentication().getBytes());
logger.info(prefix + "获取数据:" + PATH);
logger.info(prefix + "成功获取数据:" + badzk.getData(PATH, false, null));
} catch (Exception e) {
logger.error(prefix + "获取数据失败,原因:" + e.getMessage());
}
} /**
* 采用正确的密码
*/
static void getDataByCorrectAuthentication() {
String prefix = "[使用正确的授权信息]";
try {
logger.info(prefix + "获取数据:" + PATH);
logger.warn(prefix + "成功获取数据:" + new String(zk.getData(PATH, false, null)));
} catch (Exception e) {
logger.error(prefix + "获取数据失败,原因:" + e.getMessage());
}
} /**
* 更新数据:不采用密码
*/
static void updateDataByNoAuthentication() {
String prefix = "[不使用任何授权信息]";
logger.info(prefix + "更新数据:" + PATH);
try {
ZooKeeper nozk = new ZooKeeper(ZkConfig.getConfig().getServer(), 2000, null);
Thread.sleep(4000);
Stat stat = nozk.exists(PATH, false);
if (stat != null) {
nozk.setData(PATH, prefix.getBytes(), -1);
logger.info(prefix + "更新成功");
}
} catch (Exception e) {
logger.error(prefix + "更新失败,原因是:" + e.getMessage());
}
} /**
* 更新数据:采用错误的密码
*/
static void updateDataByBadAuthentication() {
String prefix = "[使用错误的授权信息]";
logger.info(prefix + "更新数据:" + PATH);
try {
ZooKeeper badzk = new ZooKeeper(ZkConfig.getConfig().getServer(), 2000, null);
//授权
badzk.addAuthInfo(ZkConfig.getConfig().getAuthenticationType(), ZkConfig.getConfig().getCorrectAuthentication().getBytes()); Stat exists = badzk.exists(PATH, false);
if (exists != null) {
badzk.setData(PATH, prefix.getBytes(), -1);
logger.info(prefix + "更新成功");
}
} catch (Exception e) {
logger.error(prefix + "更新失败,原因是:" + e.getMessage());
} } /**
* 更新数据:采用正确的密码
*/
static void updateDataByCorrectAuthentication() {
String prefix = "[使用正确的授权信息]"; logger.info(prefix + "更新数据:" + PATH);
try {
Stat stat = zk.exists(PATH, false);
if (stat != null) {
zk.setData(PATH, prefix.getBytes(), -1);
logger.info(prefix + "更新成功");
}
} catch (Exception e) {
logger.error(prefix + "更新失败,原因是:" + e.getMessage());
}
} static void deleteParent() throws Exception {
Stat stat = zk.exists(PATH_DEL, false);
if (stat != null) {
zk.delete(PATH_DEL, -1);
zk.delete(PATH, -1);
return;
}
Stat stat2 = zk.exists(PATH, false);
if (stat2 != null) {
zk.delete(PATH, -1);
}
} public static void main(String[] args) { ZkAuth zkAuth = null;
try {
zkAuth = new ZkAuth();
zkAuth.createConnection(ZkConfig.getConfig().getServer(), 5000); deleteParent(); zk.create(PATH, "init content".getBytes(), ZooDefs.Ids.CREATOR_ALL_ACL, CreateMode.PERSISTENT); // zk.create(PATH_DEL, "will be deleted!".getBytes(), ZooDefs.Ids.CREATOR_ALL_ACL, CreateMode.PERSISTENT); logger.info("客户端开始访问-----------------------------------------------");
//获取数据
getDataByNoAuthentication();
getDataByBadAuthentication();
getDataByCorrectAuthentication(); } catch (Exception e) {
e.printStackTrace();
} finally {
//释放连接
zkAuth.releaseConnection();
}
}
}
- 运行结果
- 启动两台linux服务器
启动zk
- 另外一台服务器同样操作
运行java代码
运行日志:
Connected to the target VM, address: '127.0.0.1:52280', transport: 'socket'
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/D:/Maven/repo/ch/qos/logback/logback-classic/1.1.1/logback-classic-1.1.1.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/D:/Maven/repo/org/slf4j/slf4j-log4j12/1.6.1/slf4j-log4j12-1.6.1.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
13:56:20,355 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback.groovy]
13:56:20,356 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback-test.xml]
13:56:20,370 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Found resource [logback.xml] at [file:/D:/workspace/maven/seckill/target/classes/logback.xml]
13:56:20,527 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - About to instantiate appender of type [ch.qos.logback.core.ConsoleAppender]
13:56:20,531 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - Naming appender as [STDOUT]
13:56:20,559 |-INFO in ch.qos.logback.core.joran.action.NestedComplexPropertyIA - Assuming default type [ch.qos.logback.classic.encoder.PatternLayoutEncoder] for [encoder] property
13:56:20,617 |-INFO in ch.qos.logback.classic.joran.action.RootLoggerAction - Setting level of ROOT logger to DEBUG
13:56:20,617 |-INFO in ch.qos.logback.core.joran.action.AppenderRefAction - Attaching appender named [STDOUT] to Logger[ROOT]
13:56:20,618 |-INFO in ch.qos.logback.classic.joran.action.ConfigurationAction - End of configuration.
SLF4J: Actual binding is of type [ch.qos.logback.classic.util.ContextSelectorStaticBinder]
13:56:20,620 |-INFO in ch.qos.logback.classic.joran.JoranConfigurator@17c386de - Registering current configuration as safe fallback point
13:56:20.626 [main] INFO org.seckill.zk.util.ZkConfig - 开始从属性文件中加载配置项
13:56:20.634 [main] INFO org.seckill.zk.util.ZkConfig - 配置项:服务器ip>zk.server>192.168.2.111:2181 已加载
13:56:20.634 [main] INFO org.seckill.zk.util.ZkConfig - 配置项:验证类型>zk.authentication_type 已加载
13:56:20.634 [main] INFO org.seckill.zk.util.ZkConfig - 配置项:正确的密码>zk.correct_authentication 已加载
13:56:20.634 [main] INFO org.seckill.zk.util.ZkConfig - 配置项:错误的密码==>zk.bad_authentication 已加载
13:56:20.645 [main] INFO org.apache.zookeeper.ZooKeeper - Client environment:zookeeper.version=3.4.6-1569965, built on 02/20/2014 09:09 GMT
13:56:20.645 [main] INFO org.apache.zookeeper.ZooKeeper - Client environment:host.name=windows10.microdone.cn
13:56:20.645 [main] INFO org.apache.zookeeper.ZooKeeper - Client environment:java.version=1.8.0_11
13:56:20.646 [main] INFO org.apache.zookeeper.ZooKeeper - Client environment:java.vendor=Oracle Corporation
13:56:20.646 [main] INFO org.apache.zookeeper.ZooKeeper - Client environment:java.home=C:\Program Files\Java\jdk1.8.0_11\jre
ar;D:\Maven\repo\org\slf4j\slf4j-api\1.7.12\slf4j-api-1.7.12.jar;D:\Maven\repo\ch\qos\logback\logback-core\1.1.1\logback-core-1.1.1.jar;D:\Maven\repo\ch\qos\logback\logback-classic\1.1.1\logback-classic-1.1.1.jar;D:\Maven\repo\mysql\mysql-connector-java\5.1.35\mysql-connector-java-5.1.35.jar;D:\Maven\repo\c3p0\c3p0\0.9.1.2\c3p0-0.9.1.2.jar;D:\Maven\repo\org\mybatis\mybatis\3.3.0\mybatis-3.3.0.jar;D:\Maven\repo\org\mybatis\mybatis-spring\1.2.3\mybatis-spring-1.2.3.jar;D:\Maven\repo\taglibs\standard\1.1.2\standard-1.1.2.jar;D:\Maven\repo\jstl\jstl\1.2\jstl-1.2.jar;D:\Maven\repo\com\fasterxml\jackson\core\jackson-databind\2.5.4\jackson-databind-2.5.4.jar;D:\Maven\repo\com\fasterxml\jackson\core\jackson-annotations\2.5.0\jackson-annotations-2.5.0.jar;D:\Maven\repo\com\fasterxml\jackson\core\jackson-core\2.5.4\jackson-core-2.5.4.jar;D:\Maven\repo\javax\servlet\javax.servlet-api\3.1.0\javax.servlet-api-3.1.0.jar;D:\Maven\repo\org\springframework\spring-core\4.1.7.RELEASE\spring-core-4.1.7.RELEASE.jar;D:\Maven\repo\commons-logging\commons-logging\1.2\commons-logging-1.2.jar;D:\Maven\repo\org\springframework\spring-beans\4.1.7.RELEASE\spring-beans-4.1.7.RELEASE.jar;D:\Maven\repo\org\springframework\spring-context\4.1.7.RELEASE\spring-context-4.1.7.RELEASE.jar;D:\Maven\repo\org\springframework\spring-aop\4.1.7.RELEASE\spring-aop-4.1.7.RELEASE.jar;D:\Maven\repo\aopalliance\aopalliance\1.0\aopalliance-1.0.jar;D:\Maven\repo\org\springframework\spring-expression\4.1.7.RELEASE\spring-expression-4.1.7.RELEASE.jar;D:\Maven\repo\org\springframework\spring-jdbc\4.1.7.RELEASE\spring-jdbc-4.1.7.RELEASE.jar;D:\Maven\repo\org\springframework\spring-tx\4.1.7.RELEASE\spring-tx-4.1.7.RELEASE.jar;D:\Maven\repo\org\springframework\spring-web\4.1.7.RELEASE\spring-web-4.1.7.RELEASE.jar;D:\Maven\repo\org\springframework\spring-webmvc\4.1.7.RELEASE\spring-webmvc-4.1.7.RELEASE.jar;D:\Maven\repo\org\springframework\spring-test\4.1.7.RELEASE\spring-test-4.1.7.RELEASE.jar;D:\Maven\repo\redis\clients\jedis\2.7.3\jedis-2.7.3.jar;D:\Maven\repo\org\apache\commons\commons-pool2\2.3\commons-pool2-2.3.jar;D:\Maven\repo\com\dyuproject\protostuff\protostuff-core\1.0.8\protostuff-core-1.0.8.jar;D:\Maven\repo\com\dyuproject\protostuff\protostuff-api\1.0.8\protostuff-api-1.0.8.jar;D:\Maven\repo\com\dyuproject\protostuff\protostuff-runtime\1.0.8\protostuff-runtime-1.0.8.jar;D:\Maven\repo\com\dyuproject\protostuff\protostuff-collectionschema\1.0.8\protostuff-collectionschema-1.0.8.jar;D:\Maven\repo\commons-collections\commons-collections\3.2\commons-collections-3.2.jar;D:\Maven\repo\org\apache\zookeeper\zookeeper\3.4.6\zookeeper-3.4.6.jar;D:\Maven\repo\org\slf4j\slf4j-log4j12\1.6.1\slf4j-log4j12-1.6.1.jar;D:\Maven\repo\log4j\log4j\1.2.16\log4j-1.2.16.jar;D:\Maven\repo\io\netty\netty\3.7.0.Final\netty-3.7.0.Final.jar;D:\Maven\repo\jline\jline\0.9.94\jline-0.9.94.jar;D:\install\Idea\IntelliJ IDEA 2018.1.1\lib\idea_rt.jar;C:\Users\12084\AppData\Local\Temp\capture1jars\debugger-agent.jar
13:56:20.648 [main] INFO org.apache.zookeeper.ZooKeeper - Client environment:java.library.path=C:\Program Files\Java\jdk1.8.0_11\bin;C:\WINDOWS\Sun\Java\bin;C:\WINDOWS\system32;C:\WINDOWS;C:\ProgramData\Oracle\Java\javapath;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0;C:\Program Files\TortoiseSVN\bin;C:\Program Files\SlikSvn\bin;D:\Maven\apache-maven-3.3.9\bin;D:\install\MySQL\MySQL Server 5.1\bin;C:\Program Files\Java\jdk1.8.0_11\bin;D:\Git\Git\cmd;C:\WINDOWS\System32\OpenSSH;C:\Users\12084\AppData\Local\Microsoft\WindowsApps;%USERPROFILE%\AppData\Local\Microsoft\WindowsApps;;.
13:56:20.648 [main] INFO org.apache.zookeeper.ZooKeeper - Client environment:java.io.tmpdir=C:\Users\12084\AppData\Local\Temp
13:56:20.648 [main] INFO org.apache.zookeeper.ZooKeeper - Client environment:java.compiler=
13:56:20.648 [main] INFO org.apache.zookeeper.ZooKeeper - Client environment:os.name=Windows 8.1
13:56:20.648 [main] INFO org.apache.zookeeper.ZooKeeper - Client environment:os.arch=amd64
13:56:20.648 [main] INFO org.apache.zookeeper.ZooKeeper - Client environment:os.version=6.3
13:56:20.648 [main] INFO org.apache.zookeeper.ZooKeeper - Client environment:user.name=12084
13:56:20.648 [main] INFO org.apache.zookeeper.ZooKeeper - Client environment:user.home=C:\Users\12084
13:56:20.648 [main] INFO org.apache.zookeeper.ZooKeeper - Client environment:user.dir=D:\workspace\maven\seckill
13:56:20.649 [main] INFO org.apache.zookeeper.ZooKeeper - Initiating client connection, connectString=192.168.2.111:2181 sessionTimeout=5000 watcher=org.seckill.zk.ZkAuth@65d6b83b
13:56:20.653 [main] DEBUG org.apache.zookeeper.ClientCnxn - zookeeper.disableAutoWatchReset is false
13:56:20.680 [main] INFO org.seckill.zk.ZkAuth - 开始连接ZK服务器....
13:56:20.687 [main-SendThread(192.168.2.111:2181)] INFO org.apache.zookeeper.ClientCnxn - Opening socket connection to server 192.168.2.111/192.168.2.111:2181. Will not attempt to authenticate using SASL (unknown error)
13:56:20.688 [main-SendThread(192.168.2.111:2181)] INFO org.apache.zookeeper.ClientCnxn - Socket connection established to 192.168.2.111/192.168.2.111:2181, initiating session
13:56:20.689 [main-SendThread(192.168.2.111:2181)] DEBUG org.apache.zookeeper.ClientCnxn - Session establishment request sent on 192.168.2.111/192.168.2.111:2181
13:56:20.701 [main-SendThread(192.168.2.111:2181)] INFO org.apache.zookeeper.ClientCnxn - Session establishment complete on server 192.168.2.111/192.168.2.111:2181, sessionid = 0x164a88267680000, negotiated timeout = 5000
13:56:20.732 [main-SendThread(192.168.2.111:2181)] DEBUG org.apache.zookeeper.ClientCnxn - Got auth sessionid:0x164a88267680000
13:56:20.732 [main-SendThread(192.168.2.111:2181)] DEBUG org.apache.zookeeper.ClientCnxn - Got auth sessionid:0x164a88267680000
13:56:20.910 [main-EventThread] INFO org.seckill.zk.ZkAuth - 【Watcher-1】收到Watcher通知
13:56:20.911 [main-EventThread] INFO org.seckill.zk.ZkAuth - 【Watcher-1】连接状态: SyncConnected
13:56:20.911 [main-EventThread] INFO org.seckill.zk.ZkAuth - 【Watcher-1】事件类型: None
13:56:20.911 [main-EventThread] INFO org.seckill.zk.ZkAuth - 【Watcher-1】成功连接上ZK服务器
13:56:20.911 [main-EventThread] INFO org.seckill.zk.ZkAuth - --------------------------------------------
13:56:22.372 [main-SendThread(192.168.2.111:2181)] DEBUG org.apache.zookeeper.ClientCnxn - Got ping response for sessionid: 0x164a88267680000 after 0ms
13:56:23.690 [main-SendThread(192.168.2.111:2181)] DEBUG org.apache.zookeeper.ClientCnxn - Reading reply sessionid:0x164a88267680000, packet:: clientPath:null serverPath:null finished:false header:: 1,3 replyHeader:: 1,12884901891,-101 request:: '/auth_test/del_node,F response::
13:56:23.690 [main-SendThread(192.168.2.111:2181)] DEBUG org.apache.zookeeper.ClientCnxn - Got ping response for sessionid: 0x164a88267680000 after 7ms
13:56:23.693 [main-SendThread(192.168.2.111:2181)] DEBUG org.apache.zookeeper.ClientCnxn - Reading reply sessionid:0x164a88267680000, packet:: clientPath:null serverPath:null finished:false header:: 2,3 replyHeader:: 2,12884901891,0 request:: '/auth_test,F response:: s{8589934652,8589934652,1531821556532,1531821556532,0,0,0,0,12,0,8589934652}
13:56:23.701 [main-SendThread(192.168.2.111:2181)] DEBUG org.apache.zookeeper.ClientCnxn - Reading reply sessionid:0x164a88267680000, packet:: clientPath:null serverPath:null finished:false header:: 3,2 replyHeader:: 3,12884901892,0 request:: '/auth_test,-1 response:: null
13:56:23.714 [main-SendThread(192.168.2.111:2181)] DEBUG org.apache.zookeeper.ClientCnxn - Reading reply sessionid:0x164a88267680000, packet:: clientPath:null serverPath:null finished:false header:: 4,1 replyHeader:: 4,12884901893,0 request:: '/auth_test,#696e697420636f6e74656e74,v{s{31,s{'auth,'}}},0 response:: '/auth_test
13:56:23.714 [main] INFO org.seckill.zk.ZkAuth - 客户端开始访问-----------------------------------------------
13:56:23.715 [main] INFO org.seckill.zk.ZkAuth - [不使用任何授权信息]获取数据:/auth_test
13:56:23.715 [main] INFO org.apache.zookeeper.ZooKeeper - Initiating client connection, connectString=192.168.2.111:2181 sessionTimeout=2000 watcher=null
13:56:23.716 [main-SendThread(192.168.2.111:2181)] INFO org.apache.zookeeper.ClientCnxn - Opening socket connection to server 192.168.2.111/192.168.2.111:2181. Will not attempt to authenticate using SASL (unknown error)
13:56:23.717 [main-SendThread(192.168.2.111:2181)] INFO org.apache.zookeeper.ClientCnxn - Socket connection established to 192.168.2.111/192.168.2.111:2181, initiating session
13:56:23.717 [main-SendThread(192.168.2.111:2181)] DEBUG org.apache.zookeeper.ClientCnxn - Session establishment request sent on 192.168.2.111/192.168.2.111:2181
13:56:23.721 [main-SendThread(192.168.2.111:2181)] INFO org.apache.zookeeper.ClientCnxn - Session establishment complete on server 192.168.2.111/192.168.2.111:2181, sessionid = 0x164a88267680001, negotiated timeout = 4000
13:56:23.730 [main-EventThread] ERROR org.apache.zookeeper.ClientCnxn - Error while calling watcher
java.lang.NullPointerException: null
at org.apache.zookeeper.ClientCnxn$EventThread.processEvent(ClientCnxn.java:522) [zookeeper-3.4.6.jar:3.4.6-1569965]
at org.apache.zookeeper.ClientCnxn$EventThread.run(ClientCnxn.java:498) [zookeeper-3.4.6.jar:3.4.6-1569965]
13:56:25.051 [main-SendThread(192.168.2.111:2181)] DEBUG org.apache.zookeeper.ClientCnxn - Got ping response for sessionid: 0x164a88267680001 after 0ms
13:56:25.372 [main-SendThread(192.168.2.111:2181)] DEBUG org.apache.zookeeper.ClientCnxn - Got ping response for sessionid: 0x164a88267680000 after 0ms
13:56:26.385 [main-SendThread(192.168.2.111:2181)] DEBUG org.apache.zookeeper.ClientCnxn - Got ping response for sessionid: 0x164a88267680001 after 1ms
13:56:27.040 [main-SendThread(192.168.2.111:2181)] DEBUG org.apache.zookeeper.ClientCnxn - Got ping response for sessionid: 0x164a88267680000 after 0ms
13:56:27.718 [main-SendThread(192.168.2.111:2181)] DEBUG org.apache.zookeeper.ClientCnxn - Got ping response for sessionid: 0x164a88267680001 after 1ms
13:56:27.723 [main-SendThread(192.168.2.111:2181)] DEBUG org.apache.zookeeper.ClientCnxn - Reading reply sessionid:0x164a88267680001, packet:: clientPath:null serverPath:null finished:false header:: 1,4 replyHeader:: 1,12884901894,-102 request:: '/auth_test,F response::
13:56:27.734 [main] ERROR org.seckill.zk.ZkAuth - [不使用任何授权信息]获取数据失败,原因:KeeperErrorCode = NoAuth for /auth_test
13:56:27.735 [main] INFO org.apache.zookeeper.ZooKeeper - Initiating client connection, connectString=192.168.2.111:2181 sessionTimeout=2000 watcher=null
13:56:27.736 [main-SendThread(192.168.2.111:2181)] INFO org.apache.zookeeper.ClientCnxn - Opening socket connection to server 192.168.2.111/192.168.2.111:2181. Will not attempt to authenticate using SASL (unknown error)
13:56:27.737 [main-SendThread(192.168.2.111:2181)] INFO org.apache.zookeeper.ClientCnxn - Socket connection established to 192.168.2.111/192.168.2.111:2181, initiating session
13:56:27.737 [main-SendThread(192.168.2.111:2181)] DEBUG org.apache.zookeeper.ClientCnxn - Session establishment request sent on 192.168.2.111/192.168.2.111:2181
13:56:27.753 [main-SendThread(192.168.2.111:2181)] INFO org.apache.zookeeper.ClientCnxn - Session establishment complete on server 192.168.2.111/192.168.2.111:2181, sessionid = 0x164a88267680002, negotiated timeout = 4000
13:56:27.754 [main-EventThread] ERROR org.apache.zookeeper.ClientCnxn - Error while calling watcher
java.lang.NullPointerException: null
at org.apache.zookeeper.ClientCnxn$EventThread.processEvent(ClientCnxn.java:522) [zookeeper-3.4.6.jar:3.4.6-1569965]
at org.apache.zookeeper.ClientCnxn$EventThread.run(ClientCnxn.java:498) [zookeeper-3.4.6.jar:3.4.6-1569965]
13:56:28.708 [main-SendThread(192.168.2.111:2181)] DEBUG org.apache.zookeeper.ClientCnxn - Got ping response for sessionid: 0x164a88267680000 after 0ms
13:56:29.052 [main-SendThread(192.168.2.111:2181)] DEBUG org.apache.zookeeper.ClientCnxn - Got ping response for sessionid: 0x164a88267680001 after 0ms
13:56:29.071 [main-SendThread(192.168.2.111:2181)] DEBUG org.apache.zookeeper.ClientCnxn - Got ping response for sessionid: 0x164a88267680002 after 1ms
13:56:30.375 [main-SendThread(192.168.2.111:2181)] DEBUG org.apache.zookeeper.ClientCnxn - Got ping response for sessionid: 0x164a88267680000 after 0ms
13:56:30.385 [main-SendThread(192.168.2.111:2181)] DEBUG org.apache.zookeeper.ClientCnxn - Got ping response for sessionid: 0x164a88267680001 after 0ms
13:56:30.403 [main-SendThread(192.168.2.111:2181)] DEBUG org.apache.zookeeper.ClientCnxn - Got ping response for sessionid: 0x164a88267680002 after 0ms
13:56:31.719 [main-SendThread(192.168.2.111:2181)] DEBUG org.apache.zookeeper.ClientCnxn - Got ping response for sessionid: 0x164a88267680001 after 0ms
13:56:31.736 [main] INFO org.seckill.zk.ZkAuth - [使用错误的授权信息]获取数据:/auth_test
13:56:31.737 [main-SendThread(192.168.2.111:2181)] DEBUG org.apache.zookeeper.ClientCnxn - Got auth sessionid:0x164a88267680002
13:56:31.737 [main-SendThread(192.168.2.111:2181)] DEBUG org.apache.zookeeper.ClientCnxn - Got ping response for sessionid: 0x164a88267680002 after 1ms
13:56:31.738 [main-SendThread(192.168.2.111:2181)] DEBUG org.apache.zookeeper.ClientCnxn - Reading reply sessionid:0x164a88267680002, packet:: clientPath:null serverPath:null finished:false header:: 1,4 replyHeader:: 1,12884901895,-102 request:: '/auth_test,F response::
13:56:31.738 [main] ERROR org.seckill.zk.ZkAuth - [使用错误的授权信息]获取数据失败,原因:KeeperErrorCode = NoAuth for /auth_test
13:56:31.738 [main] INFO org.seckill.zk.ZkAuth - [使用正确的授权信息]获取数据:/auth_test
13:56:31.754 [main-SendThread(192.168.2.111:2181)] DEBUG org.apache.zookeeper.ClientCnxn - Reading reply sessionid:0x164a88267680000, packet:: clientPath:null serverPath:null finished:false header:: 5,4 replyHeader:: 5,12884901895,0 request:: '/auth_test,F response:: #696e697420636f6e74656e74,s{12884901893,12884901893,1531835724052,1531835724052,0,0,0,0,12,0,12884901893}
13:56:31.754 [main] WARN org.seckill.zk.ZkAuth - [使用正确的授权信息]成功获取数据:init content
13:56:31.754 [main-SendThread(192.168.2.111:2181)] DEBUG org.apache.zookeeper.ClientCnxn - Got ping response for sessionid: 0x164a88267680000 after 15ms
13:56:31.754 [main] DEBUG org.apache.zookeeper.ZooKeeper - Closing session: 0x164a88267680000
13:56:31.755 [main] DEBUG org.apache.zookeeper.ClientCnxn - Closing client for session: 0x164a88267680000
Disconnected from the target VM, address: '127.0.0.1:52280', transport: 'socket'
13:56:31.835 [main-SendThread(192.168.2.111:2181)] DEBUG org.apache.zookeeper.ClientCnxn - Reading reply sessionid:0x164a88267680000, packet:: clientPath:null serverPath:null finished:false header:: 6,-11 replyHeader:: 6,12884901896,0 request:: null response:: null
13:56:31.836 [main] DEBUG org.apache.zookeeper.ClientCnxn - Disconnecting client for session: 0x164a88267680000
13:56:31.836 [main] INFO org.apache.zookeeper.ZooKeeper - Session: 0x164a88267680000 closed
13:56:31.836 [main-EventThread] INFO org.apache.zookeeper.ClientCnxn - EventThread shut downProcess finished with exit code 0
- 详情
13:56:20.626 [main] INFO org.seckill.zk.util.ZkConfig - 开始从属性文件中加载配置项
13:56:20.634 [main] INFO org.seckill.zk.util.ZkConfig - 配置项:服务器ip>zk.server>192.168.2.111:2181 已加载
13:56:20.634 [main] INFO org.seckill.zk.util.ZkConfig - 配置项:验证类型==>zk.authentication_type 已加载
13:56:20.634 [main] INFO org.seckill.zk.util.ZkConfig - 配置项:正确的密码==>zk.correct_authentication 已加载
13:56:20.634 [main] INFO org.seckill.zk.util.ZkConfig - 配置项:错误的密码==>zk.bad_authentication 已加载
13:56:20.680 [main] INFO org.seckill.zk.ZkAuth - 开始连接ZK服务器....
13:56:20.910 [main-EventThread] INFO org.seckill.zk.ZkAuth - 【Watcher-1】收到Watcher通知
13:56:20.911 [main-EventThread] INFO org.seckill.zk.ZkAuth - 【Watcher-1】连接状态: SyncConnected
13:56:20.911 [main-EventThread] INFO org.seckill.zk.ZkAuth - 【Watcher-1】事件类型: None
13:56:20.911 [main-EventThread] INFO org.seckill.zk.ZkAuth - 【Watcher-1】成功连接上ZK服务器
13:56:23.714 [main] INFO org.seckill.zk.ZkAuth - 客户端开始访问-----------------------------------------------
13:56:23.715 [main] INFO org.seckill.zk.ZkAuth - [不使用任何授权信息]获取数据:/auth_test
13:56:27.734 [main] ERROR org.seckill.zk.ZkAuth - [不使用任何授权信息]获取数据失败,原因:KeeperErrorCode = NoAuth for /auth_test
13:56:31.738 [main] ERROR org.seckill.zk.ZkAuth - [使用错误的授权信息]获取数据失败,原因:KeeperErrorCode = NoAuth for /auth_test
13:56:31.754 [main] WARN org.seckill.zk.ZkAuth - [使用正确的授权信息]成功获取数据:init content
JAVA 连接 ZooKeeper之初体验的更多相关文章
- 【阿里云产品公测】消息队列服务MQS java SDK 机器人应用初体验
[阿里云产品公测]消息队列服务MQS java SDK 机器人应用初体验 作者:阿里云用户啊里新人 初体验 之 测评环境 由于MQS支持外网访问,因此我在本地做了一些简单测试(可能有些业余),之后 ...
- java连接zookeeper服务器出现“KeeperErrorCode = ConnectionLoss for /test”
昨天调试java连接zookeeper服务器,zookeeper搭建过程在这里不做赘述,在创建连接后,然后操作节点一直报异常 错误信息如下: Exception in thread "mai ...
- java连接zookeeper实现zookeeper的基本操作
Java服务端连接Zookeeper,进行节点信息的获取,管理…,整理成一个基本工具, 添加依赖: <dependency> <groupId>org.apache.zooke ...
- Zookeeper入门(七)之Java连接Zookeeper
Java操作Zookeeper很简单,但是前提要把包导对. 关于Zookeeper的Linux环境搭建可以参考我的这篇博客:Linux环境下Zookeeper安装 下面进入正题: 一.导入依赖 < ...
- java连接zookeeper服务器出现“KeeperErrorCode = ConnectionLoss for ...”
错误信息如下: Exception in thread "main" org.apache.zookeeper.KeeperException$ConnectionLossExce ...
- java新手的session初体验
众所周知,session作为保存我们用户对话所需要的信息的对象,在我们的项目中必不可少.作为菜鸟学习java的第一课就是了解它的思想和用法,在以后的学习中,逐渐学习和总结,从基础到高级,慢慢学会应用. ...
- java 学习笔记(四) java连接ZooKeeper
public class Demo2 { public static void main(String[] args) { String connectString = "192.168.1 ...
- 【JDBC】Java程序的数据库初体验
JDBC是什么 JDBC是一种能够用来执行SQL语句的Java API[接口]. 它是Java提供的一种规范,让各大数据库厂商遵循此规范完成自己的数据库连接驱动[实现接口]. JDBC的入门程序(这里 ...
- Java消息队列--ActiveMq 初体验
1.下载安装ActiveMQ ActiveMQ官网下载地址:http://activemq.apache.org/download.html ActiveMQ 提供了Windows 和Linux.Un ...
随机推荐
- day60 django入门
目录 一.静态文件配置 1 引子 2 如何配置 1 在settins.py中的具体配置 2 静态文件的动态解析(html页面中) 二.request对象方法初识 三.pycharm链接数据库(mysq ...
- hacknos靶机实战
工具: kali 192.168.1.6 nmap 打开使用nmap -sP 192.168.1.0/24 扫描活跃的主机 发现目标ip 使用nmap 查看开启了什么服务Nmap -v -A -PN ...
- python 面向对象专题(十):特殊方法 (三)__get__、__set__、__delete__ 描述符(三)方法是描述符
在类中定义的函数属于绑定方法(bound method),因为用户定义的函数都有 __get__ 方法,所以依附到类上时,就相当于描述符.示例 20-13 演示了从 面向对象专题(九)示例 20-8 ...
- InnoDB表存储结构及keyring加密
ibdata是InnoDB最重要的系统表空间文件,它记录了InnoDB的核心信息,包括事务系统信息.元数据信息,记录InnoDB change buffer的btree,防止数据损坏的double w ...
- 从零开始学Electron笔记(六)
在之前的文章我们介绍了一下Electron如何通过链接打开浏览器和嵌入网页,接下来我们继续说一下Electron中的对话框 Dialog和消息通知 Notification. 在之前的文章中其实我们是 ...
- Ethical Hacking - NETWORK PENETRATION TESTING(21)
MITM - Code Injection Inject javascript or HTML code into pages. Code gets executed on target machin ...
- 痞子衡嵌入式:SNVS Master Key仅在i.MXRT10xx Hab关闭时才能用于DCP加解密
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是i.MXRT系列中数据协处理器DCP使用SNVS Master Key加解密的注意事项. i.MXRT不仅仅是处理性能超强的MCU,也是 ...
- Oracle RMAN 异机恢复一例
背景介绍:本例需求是将NBU备份的oracle数据库恢复到另一主机上. NBU环境配置.异机上的Oracle软件安装配置忽略,下面只介绍OracleDB恢复的过程. ----------------- ...
- Python数据分析——numpy基础简介
前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者:基因学苑 NumPy(Numerical Python的简称)是高性 ...
- 一个有趣的问题, 你知道SqlDataAdapter中的Fill是怎么实现的吗
一:背景 1. 讲故事 最近因为各方面原因换了一份工作,去了一家主营物联柜的公司,有意思的是物联柜上的终端是用 wpf 写的,代码也算是年久失修,感觉技术债还是蛮重的,前几天在调试一个bug的时候,看 ...