ZK基础类及服务的注册与发现:
package top.letsgogo.util;
import org.I0Itec.zkclient.ZkClient;
import org.I0Itec.zkclient.serialize.SerializableSerializer;
import org.apache.zookeeper.CreateMode;
import java.util.List;
import java.util.Map;
/**
* @author panteng
* @description
* @date 17-6-9.
*/
public class ZkManager {
private static String ZKServers = "10.38.164.80:2181,10.38.164.80:2182,10.38.164.80:2183";
private static ZkClient zkClient = new ZkClient(ZKServers, 10000, 10000, new SerializableSerializer());
/\*\*
\* 遍历所有节点
\*
\* @param currentPath
\* @param nodes
\*/
public static void getAllNodesAndVlue(String currentPath, Map<String, Object> nodes) {
try {
List<String> stringList = zkClient.getChildren(currentPath);
for (String childPath : stringList) {
if ("/".equals(currentPath)) {
childPath = currentPath + childPath;
} else {
childPath = currentPath + "/" + childPath;
}
try {
if (childPath.indexOf("zookeeper") > -1) {
continue;
}
Object nodeVlue = zkClient.readData(childPath);
nodes.put(childPath, nodeVlue);
} catch (Exception e) {
System.out.println("node路径:" + childPath);
e.printStackTrace();
}
getAllNodesAndVlue(childPath, nodes);
}
} catch (Exception e) {
if (e.getMessage().indexOf("KeeperErrorCode = NoNode for") > -1) {
return;
}
}
}
/\*\*
\* 增加不存在的节点,如果节点已经存在,返回""
\*
\* @param path
\* @param value
\* @param mode
\* @return 返回"" 表示增加失败
\*/
public static String addNode(String path, Object value, CreateMode mode) {
try {
if (zkClient.exists(path)) {
return "";
}
return zkClient.create(path, value, mode);
} catch (Exception e) {
e.printStackTrace();
}
return "";
}
public static void main2(String\[\] arges) {
ZkManager.addNode("/dao", "data operation", CreateMode.PERSISTENT);
ZkManager.addNode("/service", "service provider", CreateMode.PERSISTENT);
ZkManager.addNode("/controller", "work control", CreateMode.PERSISTENT);
ZkManager.addNode("/dao/pool", "machine list", CreateMode.PERSISTENT);
ZkManager.addNode("/service/pool", "machine list", CreateMode.PERSISTENT);
ZkManager.addNode("/controller/pool", "machine list", CreateMode.PERSISTENT);
ZkManager.addNode("/dao/configration", "machine list", CreateMode.PERSISTENT);
ZkManager.addNode("/service/configration", "machine list", CreateMode.PERSISTENT);
ZkManager.addNode("/controller/configration", "machine list", CreateMode.PERSISTENT);
/\*ZkManager.addNode("/controller/api1", "api1", CreateMode.EPHEMERAL);
Map<String, Object> map = new HashMap<>();
ZkManager.getAllNodesAndVlue("/", map);
for (Map.Entry entry : map.entrySet()) {
System.out.println("path=" + entry.getKey() + " value=" + entry.getValue());
}
try {
Thread.sleep(10000);
} catch (Exception e) {
e.printStackTrace();
}\*/
}
}
ZkManager
package top.letsgogo.auto;
import com.google.common.base.Strings;
import org.apache.zookeeper.CreateMode;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.CommandLineRunner;
import org.springframework.stereotype.Component;
import top.letsgogo.util.ZkManager;
import java.net.Inet4Address;
import java.net.InetAddress;
import java.net.NetworkInterface;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* @author panteng
* @description
* @date 17-6-9.
*/
@Component
public class ServiceRegisterDiscover implements CommandLineRunner {
@Value("${server.port}")
private String serverPort;
private static String serviceNamePrefix = "dao-api-";
private static String path = "/dao/pool/" + serviceNamePrefix;
private static Map<String, List<String>> nextServiceInfo = new HashMap<String, List<String>>();
@Override
public void run(String... strings) throws Exception {
try {
//首先注册向管理中心注册自己的服务
String getPath = ZkManager.addNode(path + getIpAddress() + ":" + serverPort, "config", CreateMode.EPHEMERAL);
if (!Strings.isNullOrEmpty(getPath)) {
System.out.println(getPath + "服务注册成功");
}
//去管理中心发现需要调用的服务
} catch (Exception e) {
e.printStackTrace();
}
}
/\*\*
\* 获取本机IP
\*
\* @return
\*/
public static String getIpAddress() {
try {
Enumeration<NetworkInterface> allNetInterfaces = NetworkInterface.getNetworkInterfaces();
InetAddress ip = null;
while (allNetInterfaces.hasMoreElements()) {
NetworkInterface netInterface = (NetworkInterface) allNetInterfaces.nextElement();
if (netInterface.isLoopback() || netInterface.isVirtual() || !netInterface.isUp()) {
continue;
} else {
Enumeration<InetAddress> addresses = netInterface.getInetAddresses();
while (addresses.hasMoreElements()) {
ip = addresses.nextElement();
if (ip != null && ip instanceof Inet4Address) {
return ip.getHostAddress();
}
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
return "";
}
}
ServiceRegisterDiscover
/dao/pool/dao-api-10.38.164.80:8080服务注册成功
[zk: localhost:(CONNECTED) ] ls /dao/pool
[dao-api-10.38.164.80:]
服务查看:
aaarticlea/png;base64,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" alt="" />
[zk: localhost:(CONNECTED) ] ls /dao/pool
[dao-api-10.38.164.80:, dao-api-10.38.164.80:, dao-api-10.38.164.80:]
[zk: localhost:(CONNECTED) ] ls /
[service, controller, dao, zookeeper]
aaarticlea/png;base64,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" alt="" />
Service
package top.letsgogo.auto;
import com.google.common.base.Strings;
import org.apache.zookeeper.CreateMode;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.CommandLineRunner;
import org.springframework.stereotype.Component;
import top.letsgogo.util.ZkManager;
import java.net.Inet4Address;
import java.net.InetAddress;
import java.net.NetworkInterface;
import java.util.*;
/**
* @author panteng
* @description
* @date 17-6-9.
*/
@Component
public class ServiceRegisterDiscover implements CommandLineRunner {
@Value("${server.port}")
private String serverPort;
private final static String serviceNamePrefix = "service-api-";
private final static String path = "/service/pool/" + serviceNamePrefix;
/\*\*
\* 被调用的服务名
\*/
private final static String\[\] nextServiceName = new String\[\]{"dao-api-"};
/\*\*
\* 被调用的服务所在根路径,应该与nextServiceName中的一一对应
\*/
private final static String\[\] nextServiceRootPath = new String\[\]{"/dao/pool"};
private static Map<String, List<String>> nextServiceInfo = new HashMap<String, List<String>>();
@Override
public void run(String... strings) throws Exception {
try {
//首先注册向管理中心注册自己的服务
String getPath = ZkManager.addNode(path + getIpAddress() + ":" + serverPort, "config", CreateMode.EPHEMERAL);
if (!Strings.isNullOrEmpty(getPath)) {
System.out.println(getPath + "服务注册成功");
}
discoverNextServiceInfo();
} catch (Exception e) {
e.printStackTrace();
}
}
/\*\*
\* 发现服务,并监听变化
\*/
public static void discoverNextServiceInfo() {
//去管理中心发现需要调用的服务
Map<String, Object> map = new HashMap<>();
ZkManager.getAllNodesAndVlue("/", map);
for (Map.Entry entry : map.entrySet()) {//遍历所有服务
for (int i = 0; i < nextServiceName.length; i++) {
String servicePath = entry.getKey().toString();
if (servicePath.indexOf(nextServiceName\[i\]) > -1) {
List<String> serviceList = nextServiceInfo.get(nextServiceName\[i\]);
if (serviceList == null) {
serviceList = new ArrayList<String>();
}
serviceList.add(servicePath);
nextServiceInfo.put(nextServiceName\[i\], serviceList);
}
}
}
printNextServiceInfo();
//监听节点变化
for (int i = 0; i < nextServiceRootPath.length; i++) {
ZkManager.subscribeChildChanges(nextServiceRootPath\[i\], new ServiceListener(nextServiceName\[i\]));
}
}
public static void printNextServiceInfo() {
for (Map.Entry entry : nextServiceInfo.entrySet()) {
System.out.print("发现服务名称:" + entry.getKey() + " 服务实例:");
for (String str : (List<String>) entry.getValue()) {
System.out.print(str + ", ");
}
System.out.println();
}
}
/\*\*
\* 获取本机IP
\*
\* @return
\*/
public static String getIpAddress() {
try {
Enumeration<NetworkInterface> allNetInterfaces = NetworkInterface.getNetworkInterfaces();
InetAddress ip = null;
while (allNetInterfaces.hasMoreElements()) {
NetworkInterface netInterface = (NetworkInterface) allNetInterfaces.nextElement();
if (netInterface.isLoopback() || netInterface.isVirtual() || !netInterface.isUp()) {
continue;
} else {
Enumeration<InetAddress> addresses = netInterface.getInetAddresses();
while (addresses.hasMoreElements()) {
ip = addresses.nextElement();
if (ip != null && ip instanceof Inet4Address) {
return ip.getHostAddress();
}
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
return "";
}
public static Map<String, List<String>> getNextServiceInfo() {
return nextServiceInfo;
}
public static void setNextServiceInfo(Map<String, List<String>> nextServiceInfo) {
ServiceRegisterDiscover.nextServiceInfo = nextServiceInfo;
}
}
ServiceRegisterDiscover
package top.letsgogo.auto;
import org.I0Itec.zkclient.IZkChildListener;
import java.util.List;
/**
* @author panteng
* @description
* @date 17-6-10.
*/
public class ServiceListener implements IZkChildListener {
String serviceName;
public ServiceListener(String serviceName) {
this.serviceName = serviceName;
}
@Override
public void handleChildChange(String s, List<String> list) throws Exception {
System.out.println("服务" + serviceName + "发生了变化");
ServiceRegisterDiscover.getNextServiceInfo().put(serviceName, list);
ServiceRegisterDiscover.printNextServiceInfo();
}
public String getServiceName() {
return serviceName;
}
public void setServiceName(String serviceName) {
this.serviceName = serviceName;
}
}
ServiceListener
package top.letsgogo.util;
import org.I0Itec.zkclient.IZkChildListener;
import org.I0Itec.zkclient.ZkClient;
import org.I0Itec.zkclient.serialize.SerializableSerializer;
import org.apache.zookeeper.CreateMode;
import java.util.List;
import java.util.Map;
/**
* @author panteng
* @description
* @date 17-6-9.
*/
public class ZkManager {
private static String ZKServers = "10.38.164.80:2181,10.38.164.80:2182,10.38.164.80:2183";
private static ZkClient zkClient = new ZkClient(ZKServers, 10000, 10000, new SerializableSerializer());
/\*\*
\* 遍历所有节点
\*
\* @param currentPath
\* @param nodes
\*/
public static void getAllNodesAndVlue(String currentPath, Map<String, Object> nodes) {
try {
List<String> stringList = zkClient.getChildren(currentPath);
for (String childPath : stringList) {
if ("/".equals(currentPath)) {
childPath = currentPath + childPath;
} else {
childPath = currentPath + "/" + childPath;
}
try {
if (childPath.indexOf("zookeeper") > -1) {
continue;
}
Object nodeVlue = zkClient.readData(childPath);
nodes.put(childPath, nodeVlue);
} catch (Exception e) {
System.out.println("node路径:" + childPath);
e.printStackTrace();
}
getAllNodesAndVlue(childPath, nodes);
}
} catch (Exception e) {
if (e.getMessage().indexOf("KeeperErrorCode = NoNode for") > -1) {
return;
}
}
}
/\*\*
\* 增加不存在的节点,如果节点已经存在,返回""
\*
\* @param path
\* @param value
\* @param mode
\* @return 返回"" 表示增加失败
\*/
public static String addNode(String path, Object value, CreateMode mode) {
try {
if (zkClient.exists(path)) {
return "";
}
return zkClient.create(path, value, mode);
} catch (Exception e) {
e.printStackTrace();
}
return "";
}
public static void subscribeChildChanges(String nodePath, IZkChildListener listener) {
if (zkClient.exists(nodePath)) {
zkClient.subscribeChildChanges(nodePath, listener);
}
}
public static void main2(String\[\] arges) {
ZkManager.addNode("/dao", "data operation", CreateMode.PERSISTENT);
ZkManager.addNode("/service", "service provider", CreateMode.PERSISTENT);
ZkManager.addNode("/controller", "work control", CreateMode.PERSISTENT);
ZkManager.addNode("/dao/pool", "machine list", CreateMode.PERSISTENT);
ZkManager.addNode("/service/pool", "machine list", CreateMode.PERSISTENT);
ZkManager.addNode("/controller/pool", "machine list", CreateMode.PERSISTENT);
ZkManager.addNode("/dao/configration", "machine list", CreateMode.PERSISTENT);
ZkManager.addNode("/service/configration", "machine list", CreateMode.PERSISTENT);
ZkManager.addNode("/controller/configration", "machine list", CreateMode.PERSISTENT);
/\*ZkManager.addNode("/controller/api1", "api1", CreateMode.EPHEMERAL);
Map<String, Object> map = new HashMap<>();
ZkManager.getAllNodesAndVlue("/", map);
for (Map.Entry entry : map.entrySet()) {
System.out.println("path=" + entry.getKey() + " value=" + entry.getValue());
}
try {
Thread.sleep(10000);
} catch (Exception e) {
e.printStackTrace();
}\*/
}
}
ZkManager
aaarticlea/png;base64,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" alt="" />
/service/pool/service-api-10.232.36.21:8083服务注册成功
发现服务名称:dao-api- 服务实例:/dao/pool/dao-api-10.38.164.80:8081, /dao/pool/dao-api-10.38.164.80:8080, /dao/pool/dao-api-10.38.164.80:8082,
服务dao-api-发生了变化
发现服务名称:dao-api- 服务实例:dao-api-10.38.164.80:8081, dao-api-10.38.164.80:8082,
aaarticlea/png;base64,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" alt="" />
手机扫一扫
移动阅读更方便
你可能感兴趣的文章