From 97767a326749ef43a0018f3b88a740d9eff8092c Mon Sep 17 00:00:00 2001 From: hongqiaowei Date: Wed, 30 Mar 2022 14:37:53 +0800 Subject: [PATCH] Optimize nacos service registration --- .../nacos/FizzNacosHelper.java | 11 ++++- .../nacos/FizzNacosServiceRegistration.java | 41 +++++++++++-------- 2 files changed, 33 insertions(+), 19 deletions(-) diff --git a/fizz-core/src/main/java/we/service_registry/nacos/FizzNacosHelper.java b/fizz-core/src/main/java/we/service_registry/nacos/FizzNacosHelper.java index f0fac50..6f1633f 100644 --- a/fizz-core/src/main/java/we/service_registry/nacos/FizzNacosHelper.java +++ b/fizz-core/src/main/java/we/service_registry/nacos/FizzNacosHelper.java @@ -66,7 +66,16 @@ public abstract class FizzNacosHelper { fizzNacosProperties.setApplicationContext(applicationContext); if (fizzNacosProperties.getId() == null) { - fizzNacosProperties.setId(fizzNacosProperties.getServerAddr()); + String id = fizzNacosProperties.getServerAddr(); + String namespace = fizzNacosProperties.getNamespace(); + if (StringUtils.isNotBlank(namespace)) { + id = id + '_' + namespace; + } + String group = fizzNacosProperties.getGroup(); + if (StringUtils.isNotBlank(group)) { + id = id + '_' + group; + } + fizzNacosProperties.setId(id); } Environment env = applicationContext.getEnvironment(); if (fizzNacosProperties.getService() == null) { diff --git a/fizz-core/src/main/java/we/service_registry/nacos/FizzNacosServiceRegistration.java b/fizz-core/src/main/java/we/service_registry/nacos/FizzNacosServiceRegistration.java index 3f6ccd6..b9ff181 100644 --- a/fizz-core/src/main/java/we/service_registry/nacos/FizzNacosServiceRegistration.java +++ b/fizz-core/src/main/java/we/service_registry/nacos/FizzNacosServiceRegistration.java @@ -40,26 +40,26 @@ public class FizzNacosServiceRegistration extends FizzServiceRegistration { private NamingService namingService; - private final String groupName; + private final String group; - private List clusterNameList; + private List clusters; - private boolean useGroupName; + private boolean useGroup; - private boolean userClusterName; + private boolean userCluster; public FizzNacosServiceRegistration(String id, NacosRegistration registration, NacosServiceRegistry serviceRegistry, NamingService namingService) { super(id, Type.NACOS, registration, serviceRegistry); this.namingService = namingService; NacosDiscoveryProperties discoveryProperties = registration.getNacosDiscoveryProperties(); - groupName = discoveryProperties.getGroup(); - if (StringUtils.hasText(groupName)) { - useGroupName = true; + group = discoveryProperties.getGroup(); + if (StringUtils.hasText(group)) { + useGroup = true; } - String clusterName = discoveryProperties.getClusterName(); - if (StringUtils.hasText(clusterName)) { - userClusterName = true; - clusterNameList = Collections.singletonList(clusterName); + String cluster = discoveryProperties.getClusterName(); + if (StringUtils.hasText(cluster)) { + userCluster = true; + clusters = Collections.singletonList(cluster); } } @@ -89,7 +89,12 @@ public class FizzNacosServiceRegistration extends FizzServiceRegistration { @Override public List getServices() { try { - ListView servicesOfServer = namingService.getServicesOfServer(1, Integer.MAX_VALUE); + ListView servicesOfServer; + if (useGroup) { + servicesOfServer = namingService.getServicesOfServer(1, Integer.MAX_VALUE, group); + } else { + servicesOfServer = namingService.getServicesOfServer(1, Integer.MAX_VALUE); + } return servicesOfServer.getData(); } catch (NacosException e) { throw new RuntimeException(e); @@ -105,12 +110,12 @@ public class FizzNacosServiceRegistration extends FizzServiceRegistration { public Instance getInstanceInfo(String service) { Instance instance = null; try { - if (useGroupName && userClusterName) { - instance = namingService.selectOneHealthyInstance(service, groupName, clusterNameList); - } else if (useGroupName) { - instance = namingService.selectOneHealthyInstance(service, groupName); - } else if (userClusterName) { - instance = namingService.selectOneHealthyInstance(service, clusterNameList); + if (useGroup && userCluster) { + instance = namingService.selectOneHealthyInstance(service, group, clusters); + } else if (useGroup) { + instance = namingService.selectOneHealthyInstance(service, group); + } else if (userCluster) { + instance = namingService.selectOneHealthyInstance(service, clusters); } else { instance = namingService.selectOneHealthyInstance(service); }