From 3b6ba1f4a77c266983689e7be81adaa35920a9e2 Mon Sep 17 00:00:00 2001 From: SkyeBeFreeman <928016560@qq.com> Date: Mon, 16 Aug 2021 16:04:16 +0800 Subject: [PATCH] feat:Support the individual use of spring-cloud-starter-tencent-polaris-router --- pom.xml | 15 ++++++- spring-cloud-tencent-dependencies/pom.xml | 5 ++- .../pom.xml | 5 --- .../cloud/polaris/PolarisProperties.java | 2 +- .../router/PolarisRoutingLoadBalancer.java | 42 +++++++++++++++---- .../context/MetadataContextHolder.java | 2 +- .../context/PolarisContextProperties.java | 2 +- 7 files changed, 55 insertions(+), 18 deletions(-) diff --git a/pom.xml b/pom.xml index 013fdcb5..d01dac22 100644 --- a/pom.xml +++ b/pom.xml @@ -71,7 +71,7 @@ - 1.0.2.Hoxton.SR9 + 1.1.0.Hoxton.SR9-SNAPSHOT Hoxton.SR9 @@ -231,4 +231,17 @@ + + + + nexus-snapshots + https://oss.sonatype.org/content/repositories/snapshots/ + + false + + + true + + + \ No newline at end of file diff --git a/spring-cloud-tencent-dependencies/pom.xml b/spring-cloud-tencent-dependencies/pom.xml index dc926cdc..468c9e36 100644 --- a/spring-cloud-tencent-dependencies/pom.xml +++ b/spring-cloud-tencent-dependencies/pom.xml @@ -62,8 +62,8 @@ - 1.0.2.Hoxton.SR9 - 1.0.0 + 1.1.0.Hoxton.SR9-SNAPSHOT + 1.1.0-SNAPSHOT 10.0.0-M6 2.0.0 @@ -83,6 +83,7 @@ pom import + org.apache.tomcat.embed tomcat-embed-websocket diff --git a/spring-cloud-tencent-starters/spring-cloud-starter-tencent-polaris-discovery/pom.xml b/spring-cloud-tencent-starters/spring-cloud-starter-tencent-polaris-discovery/pom.xml index 56f6d849..bb58b906 100644 --- a/spring-cloud-tencent-starters/spring-cloud-starter-tencent-polaris-discovery/pom.xml +++ b/spring-cloud-tencent-starters/spring-cloud-starter-tencent-polaris-discovery/pom.xml @@ -28,11 +28,6 @@ com.tencent.cloud spring-cloud-tencent-polaris-context - - - com.tencent.cloud - spring-cloud-starter-tencent-polaris-router - diff --git a/spring-cloud-tencent-starters/spring-cloud-starter-tencent-polaris-discovery/src/main/java/com/tencent/cloud/polaris/PolarisProperties.java b/spring-cloud-tencent-starters/spring-cloud-starter-tencent-polaris-discovery/src/main/java/com/tencent/cloud/polaris/PolarisProperties.java index 8ff171ab..be31339d 100644 --- a/spring-cloud-tencent-starters/spring-cloud-starter-tencent-polaris-discovery/src/main/java/com/tencent/cloud/polaris/PolarisProperties.java +++ b/spring-cloud-tencent-starters/spring-cloud-starter-tencent-polaris-discovery/src/main/java/com/tencent/cloud/polaris/PolarisProperties.java @@ -40,7 +40,7 @@ public class PolarisProperties { /** * namespace, separation registry of different environments. */ - @Value("${spring.cloud.polaris.discovery.namespace:#{'Production'}}") + @Value("${spring.cloud.polaris.discovery.namespace:#{'default'}}") private String namespace; /** diff --git a/spring-cloud-tencent-starters/spring-cloud-starter-tencent-polaris-router/src/main/java/com/tencent/cloud/polaris/router/PolarisRoutingLoadBalancer.java b/spring-cloud-tencent-starters/spring-cloud-starter-tencent-polaris-router/src/main/java/com/tencent/cloud/polaris/router/PolarisRoutingLoadBalancer.java index 82c1c55e..5c2258ef 100644 --- a/spring-cloud-tencent-starters/spring-cloud-starter-tencent-polaris-router/src/main/java/com/tencent/cloud/polaris/router/PolarisRoutingLoadBalancer.java +++ b/spring-cloud-tencent-starters/spring-cloud-starter-tencent-polaris-router/src/main/java/com/tencent/cloud/polaris/router/PolarisRoutingLoadBalancer.java @@ -27,9 +27,12 @@ import com.netflix.loadbalancer.ServerList; import com.tencent.cloud.metadata.constant.MetadataConstant.SystemMetadataKey; import com.tencent.cloud.metadata.context.MetadataContextHolder; import com.tencent.cloud.polaris.pojo.PolarisServer; +import com.tencent.polaris.api.pojo.DefaultInstance; +import com.tencent.polaris.api.pojo.DefaultServiceInstances; import com.tencent.polaris.api.pojo.Instance; import com.tencent.polaris.api.pojo.ServiceInfo; import com.tencent.polaris.api.pojo.ServiceInstances; +import com.tencent.polaris.api.pojo.ServiceKey; import com.tencent.polaris.router.api.core.RouterAPI; import com.tencent.polaris.router.api.rpc.ProcessRoutersRequest; import com.tencent.polaris.router.api.rpc.ProcessRoutersResponse; @@ -63,8 +66,33 @@ public class PolarisRoutingLoadBalancer extends DynamicServerListLoadBalancer instances = new ArrayList<>(8); + for (Server server : allServers) { + DefaultInstance instance = new DefaultInstance(); + instance.setNamespace(MetadataContextHolder.LOCAL_NAMESPACE); + instance.setService(serviceName); + instance.setHealthy(server.isAlive()); + instance.setProtocol(server.getScheme()); + instance.setId(server.getId()); + instance.setHost(server.getHost()); + instance.setPort(server.getPort()); + instance.setZone(server.getZone()); + instance.setWeight(100); + instances.add(instance); + } + serviceInstances = new DefaultServiceInstances(serviceKey, instances); } ProcessRoutersRequest processRoutersRequest = new ProcessRoutersRequest(); processRoutersRequest.setDstInstances(serviceInstances); @@ -81,12 +109,12 @@ public class PolarisRoutingLoadBalancer extends DynamicServerListLoadBalancer instances = new ArrayList<>(); - for (Instance instance : filteredInstances.getInstances()) { - instances.add(new PolarisServer(serviceInstances, instance)); + ServiceInstances filteredServiceInstances = processRoutersResponse.getServiceInstances(); + List filteredInstances = new ArrayList<>(); + for (Instance instance : filteredServiceInstances.getInstances()) { + filteredInstances.add(new PolarisServer(serviceInstances, instance)); } - return instances; + return filteredInstances; } @Override diff --git a/spring-cloud-tencent-starters/spring-cloud-tencent-metadata/src/main/java/com/tencent/cloud/metadata/context/MetadataContextHolder.java b/spring-cloud-tencent-starters/spring-cloud-tencent-metadata/src/main/java/com/tencent/cloud/metadata/context/MetadataContextHolder.java index 50f85d12..3235c89d 100644 --- a/spring-cloud-tencent-starters/spring-cloud-tencent-metadata/src/main/java/com/tencent/cloud/metadata/context/MetadataContextHolder.java +++ b/spring-cloud-tencent-starters/spring-cloud-tencent-metadata/src/main/java/com/tencent/cloud/metadata/context/MetadataContextHolder.java @@ -38,7 +38,7 @@ public class MetadataContextHolder { private static MetadataLocalProperties metadataLocalProperties; public static final String LOCAL_NAMESPACE = ApplicationContextAwareUtils.getProperties("spring.cloud" - + ".polaris.discovery.namespace", "Production"); + + ".polaris.discovery.namespace", "default"); private static final String LOCAL_SPRING_APPLICATION_NAME = ApplicationContextAwareUtils.getProperties("spring.application.name", null); diff --git a/spring-cloud-tencent-starters/spring-cloud-tencent-polaris-context/src/main/java/com/tencent/cloud/polaris/context/PolarisContextProperties.java b/spring-cloud-tencent-starters/spring-cloud-tencent-polaris-context/src/main/java/com/tencent/cloud/polaris/context/PolarisContextProperties.java index e4aa2fb1..b935ec2a 100644 --- a/spring-cloud-tencent-starters/spring-cloud-tencent-polaris-context/src/main/java/com/tencent/cloud/polaris/context/PolarisContextProperties.java +++ b/spring-cloud-tencent-starters/spring-cloud-tencent-polaris-context/src/main/java/com/tencent/cloud/polaris/context/PolarisContextProperties.java @@ -61,7 +61,7 @@ public class PolarisContextProperties { protected Configuration configuration() { ConfigurationImpl configuration = (ConfigurationImpl) ConfigAPIFactory - .defaultConfig(Configuration.DEFAULT_CONFIG_OPENSOURCE); + .defaultConfig(Configuration.DEFAULT_CONFIG); String defaultHost = getHost(); configuration.getGlobal().getAPI().setBindIP(defaultHost); Collection modifiers = modifierList;