diff --git a/version2/src/main/java/part2/Client/cache/serviceCache.java b/version2/src/main/java/part2/Client/cache/serviceCache.java index 716d504..4da39df 100644 --- a/version2/src/main/java/part2/Client/cache/serviceCache.java +++ b/version2/src/main/java/part2/Client/cache/serviceCache.java @@ -27,6 +27,16 @@ public class serviceCache { cache.put(serviceName,addressList); } } + //修改服务地址 + public void replaceServiceAddress(String serviceName,String oldAddress,String newAddress){ + if(cache.containsKey(serviceName)){ + List addressList=cache.get(serviceName); + addressList.remove(oldAddress); + addressList.add(newAddress); + }else { + System.out.println("修改失败,服务不存在"); + } + } //从缓存中取服务地址 public List getServcieFromCache(String serviceName){ if(!cache.containsKey(serviceName)) { diff --git a/version2/src/main/java/part2/Client/serviceCenter/ZkWatcher/watchZK.java b/version2/src/main/java/part2/Client/serviceCenter/ZkWatcher/watchZK.java index 61d6a9c..6d90bfe 100644 --- a/version2/src/main/java/part2/Client/serviceCenter/ZkWatcher/watchZK.java +++ b/version2/src/main/java/part2/Client/serviceCenter/ZkWatcher/watchZK.java @@ -39,10 +39,7 @@ public class watchZK { // 节点创建时没有赋予值 create /curator/app1 只创建节点,在这种情况下,更新前节点的 data 为 null,获取不到更新前节点的数据 switch (type.name()) { case "NODE_CREATED": // 监听器第一次执行时节点存在也会触发次事件 - //获取更新的节点的路径 - String path=new String(childData1.getPath()); - //按照格式 ,读取 - String[] pathList= path.split("/"); + String[] pathList= pasrePath(childData1); if(pathList.length<=2) break; else { String serviceName=pathList[1]; @@ -57,12 +54,13 @@ public class watchZK { } else { System.out.println("节点第一次赋值!"); } + String[] oldPathList=pasrePath(childData); + String[] newPathList=pasrePath(childData1); + cache.replaceServiceAddress(oldPathList[1],oldPathList[2],newPathList[2]); System.out.println("修改后的数据: " + new String(childData1.getData())); break; case "NODE_DELETED": // 节点删除 - String path_d=new String(childData.getPath()); - //按照格式 ,读取 - String[] pathList_d= path_d.split("/"); + String[] pathList_d= pasrePath(childData); if(pathList_d.length<=2) break; else { String serviceName=pathList_d[1]; @@ -79,4 +77,11 @@ public class watchZK { //开启监听 curatorCache.start(); } + //解析节点对应地址 + public String[] pasrePath(ChildData childData){ + //获取更新的节点的路径 + String path=new String(childData.getPath()); + //按照格式 ,读取 + return path.split("/"); + } } \ No newline at end of file diff --git a/version3/src/main/java/part1/Client/cache/serviceCache.java b/version3/src/main/java/part1/Client/cache/serviceCache.java index 22b49ac..dee03ce 100644 --- a/version3/src/main/java/part1/Client/cache/serviceCache.java +++ b/version3/src/main/java/part1/Client/cache/serviceCache.java @@ -30,6 +30,16 @@ public class serviceCache { cache.put(serviceName,addressList); } } + //修改服务地址 + public void replaceServiceAddress(String serviceName,String oldAddress,String newAddress){ + if(cache.containsKey(serviceName)){ + List addressList=cache.get(serviceName); + addressList.remove(oldAddress); + addressList.add(newAddress); + }else { + System.out.println("修改失败,服务不存在"); + } + } //从缓存中取服务地址列表 public List getServiceListFromCache(String serviceName){ if(!cache.containsKey(serviceName)) { diff --git a/version3/src/main/java/part1/Client/serviceCenter/ZkWatcher/watchZK.java b/version3/src/main/java/part1/Client/serviceCenter/ZkWatcher/watchZK.java index 7861c1b..c8ef382 100644 --- a/version3/src/main/java/part1/Client/serviceCenter/ZkWatcher/watchZK.java +++ b/version3/src/main/java/part1/Client/serviceCenter/ZkWatcher/watchZK.java @@ -17,7 +17,7 @@ public class watchZK { //本地缓存 serviceCache cache; - public watchZK(CuratorFramework client,serviceCache cache){ + public watchZK(CuratorFramework client, serviceCache cache){ this.client=client; this.cache=cache; } @@ -39,10 +39,7 @@ public class watchZK { // 节点创建时没有赋予值 create /curator/app1 只创建节点,在这种情况下,更新前节点的 data 为 null,获取不到更新前节点的数据 switch (type.name()) { case "NODE_CREATED": // 监听器第一次执行时节点存在也会触发次事件 - //获取更新的节点的路径 - String path=new String(childData1.getPath()); - //按照格式 ,读取 - String[] pathList= path.split("/"); + String[] pathList= pasrePath(childData1); if(pathList.length<=2) break; else { String serviceName=pathList[1]; @@ -57,12 +54,13 @@ public class watchZK { } else { System.out.println("节点第一次赋值!"); } + String[] oldPathList=pasrePath(childData); + String[] newPathList=pasrePath(childData1); + cache.replaceServiceAddress(oldPathList[1],oldPathList[2],newPathList[2]); System.out.println("修改后的数据: " + new String(childData1.getData())); break; case "NODE_DELETED": // 节点删除 - String path_d=new String(childData.getPath()); - //按照格式 ,读取 - String[] pathList_d= path_d.split("/"); + String[] pathList_d= pasrePath(childData); if(pathList_d.length<=2) break; else { String serviceName=pathList_d[1]; @@ -79,4 +77,11 @@ public class watchZK { //开启监听 curatorCache.start(); } + //解析节点对应地址 + public String[] pasrePath(ChildData childData){ + //获取更新的节点的路径 + String path=new String(childData.getPath()); + //按照格式 ,读取 + return path.split("/"); + } } \ No newline at end of file diff --git a/version3/src/main/java/part2/Client/cache/serviceCache.java b/version3/src/main/java/part2/Client/cache/serviceCache.java index 4d42097..f6c7106 100644 --- a/version3/src/main/java/part2/Client/cache/serviceCache.java +++ b/version3/src/main/java/part2/Client/cache/serviceCache.java @@ -27,6 +27,16 @@ public class serviceCache { cache.put(serviceName,addressList); } } + //修改服务地址 + public void replaceServiceAddress(String serviceName,String oldAddress,String newAddress){ + if(cache.containsKey(serviceName)){ + List addressList=cache.get(serviceName); + addressList.remove(oldAddress); + addressList.add(newAddress); + }else { + System.out.println("修改失败,服务不存在"); + } + } //从缓存中取服务地址列表 public List getServiceListFromCache(String serviceName){ if(!cache.containsKey(serviceName)) { diff --git a/version3/src/main/java/part2/Client/serviceCenter/ZkWatcher/watchZK.java b/version3/src/main/java/part2/Client/serviceCenter/ZkWatcher/watchZK.java index 61d6a9c..14e9d58 100644 --- a/version3/src/main/java/part2/Client/serviceCenter/ZkWatcher/watchZK.java +++ b/version3/src/main/java/part2/Client/serviceCenter/ZkWatcher/watchZK.java @@ -17,6 +17,7 @@ public class watchZK { //本地缓存 serviceCache cache; + public watchZK(CuratorFramework client,serviceCache cache){ this.client=client; this.cache=cache; @@ -39,10 +40,7 @@ public class watchZK { // 节点创建时没有赋予值 create /curator/app1 只创建节点,在这种情况下,更新前节点的 data 为 null,获取不到更新前节点的数据 switch (type.name()) { case "NODE_CREATED": // 监听器第一次执行时节点存在也会触发次事件 - //获取更新的节点的路径 - String path=new String(childData1.getPath()); - //按照格式 ,读取 - String[] pathList= path.split("/"); + String[] pathList= pasrePath(childData1); if(pathList.length<=2) break; else { String serviceName=pathList[1]; @@ -57,12 +55,13 @@ public class watchZK { } else { System.out.println("节点第一次赋值!"); } + String[] oldPathList=pasrePath(childData); + String[] newPathList=pasrePath(childData1); + cache.replaceServiceAddress(oldPathList[1],oldPathList[2],newPathList[2]); System.out.println("修改后的数据: " + new String(childData1.getData())); break; case "NODE_DELETED": // 节点删除 - String path_d=new String(childData.getPath()); - //按照格式 ,读取 - String[] pathList_d= path_d.split("/"); + String[] pathList_d= pasrePath(childData); if(pathList_d.length<=2) break; else { String serviceName=pathList_d[1]; @@ -79,4 +78,11 @@ public class watchZK { //开启监听 curatorCache.start(); } + //解析节点对应地址 + public String[] pasrePath(ChildData childData){ + //获取更新的节点的路径 + String path=new String(childData.getPath()); + //按照格式 ,读取 + return path.split("/"); + } } \ No newline at end of file diff --git a/version4/src/main/java/part1/Client/cache/serviceCache.java b/version4/src/main/java/part1/Client/cache/serviceCache.java index 807d818..6b29acb 100644 --- a/version4/src/main/java/part1/Client/cache/serviceCache.java +++ b/version4/src/main/java/part1/Client/cache/serviceCache.java @@ -27,6 +27,16 @@ public class serviceCache { cache.put(serviceName,addressList); } } + //修改服务地址 + public void replaceServiceAddress(String serviceName,String oldAddress,String newAddress){ + if(cache.containsKey(serviceName)){ + List addressList=cache.get(serviceName); + addressList.remove(oldAddress); + addressList.add(newAddress); + }else { + System.out.println("修改失败,服务不存在"); + } + } //从缓存中取服务地址列表 public List getServiceListFromCache(String serviceName){ if(!cache.containsKey(serviceName)) { diff --git a/version4/src/main/java/part1/Client/serviceCenter/ZkWatcher/watchZK.java b/version4/src/main/java/part1/Client/serviceCenter/ZkWatcher/watchZK.java index 7861c1b..e23df29 100644 --- a/version4/src/main/java/part1/Client/serviceCenter/ZkWatcher/watchZK.java +++ b/version4/src/main/java/part1/Client/serviceCenter/ZkWatcher/watchZK.java @@ -17,6 +17,7 @@ public class watchZK { //本地缓存 serviceCache cache; + public watchZK(CuratorFramework client,serviceCache cache){ this.client=client; this.cache=cache; @@ -39,10 +40,7 @@ public class watchZK { // 节点创建时没有赋予值 create /curator/app1 只创建节点,在这种情况下,更新前节点的 data 为 null,获取不到更新前节点的数据 switch (type.name()) { case "NODE_CREATED": // 监听器第一次执行时节点存在也会触发次事件 - //获取更新的节点的路径 - String path=new String(childData1.getPath()); - //按照格式 ,读取 - String[] pathList= path.split("/"); + String[] pathList= pasrePath(childData1); if(pathList.length<=2) break; else { String serviceName=pathList[1]; @@ -57,12 +55,13 @@ public class watchZK { } else { System.out.println("节点第一次赋值!"); } + String[] oldPathList=pasrePath(childData); + String[] newPathList=pasrePath(childData1); + cache.replaceServiceAddress(oldPathList[1],oldPathList[2],newPathList[2]); System.out.println("修改后的数据: " + new String(childData1.getData())); break; case "NODE_DELETED": // 节点删除 - String path_d=new String(childData.getPath()); - //按照格式 ,读取 - String[] pathList_d= path_d.split("/"); + String[] pathList_d= pasrePath(childData); if(pathList_d.length<=2) break; else { String serviceName=pathList_d[1]; @@ -79,4 +78,11 @@ public class watchZK { //开启监听 curatorCache.start(); } + //解析节点对应地址 + public String[] pasrePath(ChildData childData){ + //获取更新的节点的路径 + String path=new String(childData.getPath()); + //按照格式 ,读取 + return path.split("/"); + } } \ No newline at end of file