Skip to content

Commit

Permalink
update ikasoa zk
Browse files Browse the repository at this point in the history
  • Loading branch information
venwyhk committed Apr 17, 2017
1 parent 881d3e6 commit 1e0d667
Show file tree
Hide file tree
Showing 7 changed files with 97 additions and 40 deletions.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@

- example : *示例代码*

- ikasoa-admin : *利用Zookeeper注册和管理服务*
- ikasoa-zk : *利用Zookeeper注册和管理服务*

- ikasoa-core : *基础核心包*

Expand Down
17 changes: 9 additions & 8 deletions ikasoa-admin/pom.xml → ikasoa-zk/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,10 @@
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.ikasoa</groupId>
<artifactId>ikasoa-admin</artifactId>
<version>0.1-SNAPSHOTS</version>
<artifactId>ikasoa-zk</artifactId>
<version>0.1-ALPHA</version>
<packaging>jar</packaging>
<name>Ikasoa Admin</name>
<name>Ikasoa ZK</name>
<description>ikasoa is a java distributed service framework.</description>
<url>http://ikasoa.com/</url>

Expand All @@ -20,8 +20,8 @@
<developer>
<name>Larry</name>
<email>[email protected]</email>
<organization>ikamobile</organization>
<organizationUrl>http://www.ikamobile.com/</organizationUrl>
<organization>ikasoa</organization>
<organizationUrl>http://ikasoa.com/</organizationUrl>
</developer>
</developers>

Expand All @@ -37,11 +37,12 @@
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.5.1</version>
<version>3.6.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
<optimize>true</optimize>
</configuration>
</plugin>
<plugin>
Expand Down Expand Up @@ -104,7 +105,7 @@
<dependency>
<groupId>com.ikasoa</groupId>
<artifactId>ikasoa-core</artifactId>
<version>0.4.6</version>
<version>0.5</version>
</dependency>
<dependency>
<groupId>com.101tec</groupId>
Expand All @@ -114,7 +115,7 @@
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.21</version>
<version>1.7.25</version>
</dependency>
</dependencies>
</project>
Original file line number Diff line number Diff line change
@@ -1,14 +1,18 @@
package com.ikamobile.ikasoa.admin.zookeeper;
package com.ikasoa.zk;

import java.util.ArrayList;
import java.util.List;

import org.I0Itec.zkclient.IZkChildListener;
import org.I0Itec.zkclient.IZkDataListener;
import org.I0Itec.zkclient.IZkStateListener;
import org.I0Itec.zkclient.ZkClient;
import org.apache.zookeeper.Watcher.Event.KeeperState;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.ikamobile.ikasoa.core.loadbalance.ServerInfo;
import com.ikamobile.ikasoa.core.utils.StringUtil;
import com.ikasoa.core.loadbalance.ServerInfo;
import com.ikasoa.core.utils.StringUtil;

/**
* Zookeeper基础操作类
Expand All @@ -17,42 +21,72 @@
* @version 0.1
*/
public class ZkBase {

private static final Logger LOG = LoggerFactory.getLogger(ZkBase.class);

private ZkClient zkClient;

private String zkNode;

private List<String> nodeList;

public final String ZK_ROOT_NODE = "/";

public ZkBase(String zkServerString, String zkNode) {
if (StringUtil.isEmpty(zkServerString)) {
throw new RuntimeException("zkServerString is null !");
} else {
this.zkClient = new ZkClient(zkServerString);
zkClient = new ZkClient(zkServerString);
}
if (StringUtil.isEmpty(zkNode)) {
this.zkNode = ZK_ROOT_NODE;
} else {
this.zkNode = zkNode;
}
}
zkClient.subscribeDataChanges(zkNode, new IZkDataListener() {

public boolean isExistNode(String serverName, String serverHost, int serverPort) {
if (zkClient == null) {
throw new RuntimeException("zkClient is null !");
}
List<String> nodeList = zkClient.getChildren(zkNode);
for (String n : nodeList) {
if (n.contains(new StringBuilder(serverName).append("-").append(serverHost).append("-").append(serverPort)
.toString())) {
return true;
@Override
public void handleDataChange(String nodePath, Object nodeObj) throws Exception {
nodeList = getChildren();
}
}
return false;

@Override
public void handleDataDeleted(String nodePath) throws Exception {
nodeList = getChildren();
}

});

zkClient.subscribeStateChanges(new IZkStateListener() {

@Override
public void handleNewSession() throws Exception {
nodeList = getChildren();
}

@Override
public void handleSessionEstablishmentError(Throwable arg0) throws Exception {
nodeList = getChildren();
}

@Override
public void handleStateChanged(KeeperState arg0) throws Exception {
nodeList = getChildren();
}

});

zkClient.subscribeChildChanges(this.zkNode, new IZkChildListener() {

@Override
public void handleChildChange(String parentPath, List<String> currentChildList) throws Exception {
nodeList = currentChildList;
}

});

}

public List<ServerInfo> getServerInfoList() {
List<ServerInfo> serverInfoList = new ArrayList<>();
List<String> nList = zkClient.getChildren(zkNode);
Expand All @@ -65,6 +99,23 @@ public List<ServerInfo> getServerInfoList() {
return serverInfoList;
}

public boolean isExistNode(String serverName, String serverHost, int serverPort) {
if (nodeList == null || nodeList.isEmpty()) {
nodeList = getChildren();
}
for (String n : nodeList) {
if (n.contains(new StringBuilder(serverName).append("-").append(serverHost).append("-").append(serverPort)
.toString())) {
return true;
}
}
return false;
}

public List<String> getChildren() {
return zkClient.getChildren(zkNode);
}

public ZkClient getZkClient() {
return zkClient;
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.ikamobile.ikasoa.admin.zookeeper;
package com.ikasoa.zk;

import java.net.InetAddress;
import java.net.SocketException;
Expand All @@ -9,12 +9,12 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.ikamobile.ikasoa.admin.utils.LocalUtil;
import com.ikamobile.ikasoa.core.thrift.server.ServerAspect;
import com.ikamobile.ikasoa.core.thrift.server.ThriftServer;
import com.ikamobile.ikasoa.core.thrift.server.ThriftServerConfiguration;
import com.ikamobile.ikasoa.core.utils.ServerUtil;
import com.ikamobile.ikasoa.core.utils.StringUtil;
import com.ikasoa.zk.utils.LocalUtil;
import com.ikasoa.core.thrift.server.ServerAspect;
import com.ikasoa.core.thrift.server.ThriftServer;
import com.ikasoa.core.thrift.server.ThriftServerConfiguration;
import com.ikasoa.core.utils.ServerUtil;
import com.ikasoa.core.utils.StringUtil;

/**
* 服务注册
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package com.ikamobile.ikasoa.admin.zookeeper;
package com.ikasoa.zk;

import com.ikamobile.ikasoa.core.ServerCheck;
import com.ikasoa.core.ServerCheck;

/**
* 服务可用性验证实现
Expand All @@ -13,12 +13,11 @@ public class ZkServerCheck implements ServerCheck {
private ZkBase zkBase;

public ZkServerCheck(String zkServerString, String zkNode) {
this.zkBase = new ZkBase(zkServerString, zkNode);
zkBase = new ZkBase(zkServerString, zkNode);
}

@Override
public boolean check(String serverHost, int serverPort) {
// TODO: Larry
return zkBase.isExistNode("", serverHost, serverPort);
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.ikamobile.ikasoa.admin.zookeeper;
package com.ikasoa.zk;

import java.io.Serializable;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,17 @@
package com.ikamobile.ikasoa.admin.utils;
package com.ikasoa.zk.utils;

import java.net.InetAddress;
import java.net.NetworkInterface;
import java.net.SocketException;
import java.net.UnknownHostException;
import java.util.Enumeration;

/**
* 本地地址工具类
*
* @author <a href="mailto:[email protected]">Larry</a>
* @version 0.1
*/
public class LocalUtil {

public static String getLocalIP() throws UnknownHostException, SocketException {
Expand Down

0 comments on commit 1e0d667

Please sign in to comment.