diff --git a/CHANGELOG.md b/CHANGELOG.md index 577fec6e4..04e750fc9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,3 +5,4 @@ - [feat:support config empty protection.](https://github.com/Tencent/spring-cloud-tencent/pull/1585) - [feat:upgrade springframework version.](https://github.com/Tencent/spring-cloud-tencent/pull/1590) - [feat:support dynamic multi-discovery.](https://github.com/Tencent/spring-cloud-tencent/pull/1595) +- [feat:support ipv6.](https://github.com/Tencent/spring-cloud-tencent/pull/1598) diff --git a/spring-cloud-starter-tencent-polaris-discovery/src/main/java/com/tencent/cloud/polaris/PolarisDiscoveryProperties.java b/spring-cloud-starter-tencent-polaris-discovery/src/main/java/com/tencent/cloud/polaris/PolarisDiscoveryProperties.java index c127e4cbe..6e43d6829 100644 --- a/spring-cloud-starter-tencent-polaris-discovery/src/main/java/com/tencent/cloud/polaris/PolarisDiscoveryProperties.java +++ b/spring-cloud-starter-tencent-polaris-discovery/src/main/java/com/tencent/cloud/polaris/PolarisDiscoveryProperties.java @@ -112,6 +112,11 @@ public class PolarisDiscoveryProperties { @Value("${spring.cloud.polaris.discovery.zero-protection.is-need-test-connectivity:false}") private boolean zeroProtectionNeedTestConnectivity = false; + /** + * if prefer ipv6. + */ + private Boolean preferIpv6 = false; + public String getInstanceId() { return instanceId; } @@ -219,6 +224,14 @@ public class PolarisDiscoveryProperties { this.zeroProtectionNeedTestConnectivity = zeroProtectionNeedTestConnectivity; } + public Boolean getPreferIpv6() { + return preferIpv6; + } + + public void setPreferIpv6(Boolean preferIpv6) { + this.preferIpv6 = preferIpv6; + } + public Boolean getEnabled() { return enabled; } @@ -256,6 +269,7 @@ public class PolarisDiscoveryProperties { ", serviceListRefreshInterval=" + serviceListRefreshInterval + ", zeroProtectionEnabled=" + zeroProtectionEnabled + ", zeroProtectionNeedTestConnectivity=" + zeroProtectionNeedTestConnectivity + + ", preferIpv6=" + preferIpv6 + '}'; } } diff --git a/spring-cloud-starter-tencent-polaris-discovery/src/main/java/com/tencent/cloud/polaris/discovery/PolarisDiscoveryHandler.java b/spring-cloud-starter-tencent-polaris-discovery/src/main/java/com/tencent/cloud/polaris/discovery/PolarisDiscoveryHandler.java index e1c5ac361..13d94e0db 100644 --- a/spring-cloud-starter-tencent-polaris-discovery/src/main/java/com/tencent/cloud/polaris/discovery/PolarisDiscoveryHandler.java +++ b/spring-cloud-starter-tencent-polaris-discovery/src/main/java/com/tencent/cloud/polaris/discovery/PolarisDiscoveryHandler.java @@ -59,6 +59,7 @@ public class PolarisDiscoveryHandler { getHealthyInstancesRequest.setNamespace(namespace); getHealthyInstancesRequest.setService(service); getHealthyInstancesRequest.setIncludeCircuitBreakInstances(false); + getHealthyInstancesRequest.setPreferIpv6(polarisDiscoveryProperties.getPreferIpv6()); return polarisConsumer.getHealthyInstances(getHealthyInstancesRequest); } diff --git a/spring-cloud-starter-tencent-polaris-discovery/src/main/resources/META-INF/additional-spring-configuration-metadata.json b/spring-cloud-starter-tencent-polaris-discovery/src/main/resources/META-INF/additional-spring-configuration-metadata.json index aa0a4ec1a..6f56c1a08 100644 --- a/spring-cloud-starter-tencent-polaris-discovery/src/main/resources/META-INF/additional-spring-configuration-metadata.json +++ b/spring-cloud-starter-tencent-polaris-discovery/src/main/resources/META-INF/additional-spring-configuration-metadata.json @@ -78,6 +78,12 @@ "defaultValue": false, "description": "Zero protection test connectivity switch. Default: false." }, + { + "name": "spring.cloud.polaris.discovery.prefer-ipv6", + "type": "java.lang.Boolean", + "defaultValue": false, + "description": "if prefer ipv6. Default: false." + }, { "name": "spring.cloud.polaris.discovery.eager-load.enabled", "type": "java.lang.Boolean", diff --git a/spring-cloud-starter-tencent-polaris-discovery/src/test/java/com/tencent/cloud/polaris/PolarisDiscoveryPropertiesTest.java b/spring-cloud-starter-tencent-polaris-discovery/src/test/java/com/tencent/cloud/polaris/PolarisDiscoveryPropertiesTest.java index e72e8c078..7640d3a63 100644 --- a/spring-cloud-starter-tencent-polaris-discovery/src/test/java/com/tencent/cloud/polaris/PolarisDiscoveryPropertiesTest.java +++ b/spring-cloud-starter-tencent-polaris-discovery/src/test/java/com/tencent/cloud/polaris/PolarisDiscoveryPropertiesTest.java @@ -102,6 +102,7 @@ public class PolarisDiscoveryPropertiesTest { + ", healthCheckUrl='/health'" + ", serviceListRefreshInterval=1000" + ", zeroProtectionEnabled=false" - + ", zeroProtectionNeedTestConnectivity=false}"); + + ", zeroProtectionNeedTestConnectivity=false" + + ", preferIpv6=false}"); } } diff --git a/spring-cloud-tencent-plugin-starters/spring-cloud-starter-tencent-multi-discovery-plugin/pom.xml b/spring-cloud-tencent-plugin-starters/spring-cloud-starter-tencent-multi-discovery-plugin/pom.xml index f8b47e1af..c018dc90f 100644 --- a/spring-cloud-tencent-plugin-starters/spring-cloud-starter-tencent-multi-discovery-plugin/pom.xml +++ b/spring-cloud-tencent-plugin-starters/spring-cloud-starter-tencent-multi-discovery-plugin/pom.xml @@ -8,7 +8,7 @@ 4.0.0 spring-cloud-starter-tencent-multi-discovery-plugin - Spring Cloud Tencent Trace Plugin + Spring Cloud Tencent Multi Discovery Plugin diff --git a/spring-cloud-tencent-plugin-starters/spring-cloud-starter-tencent-multi-discovery-plugin/src/main/resources/META-INF/spring.factories b/spring-cloud-tencent-plugin-starters/spring-cloud-starter-tencent-multi-discovery-plugin/src/main/resources/META-INF/spring.factories deleted file mode 100644 index 74518ad07..000000000 --- a/spring-cloud-tencent-plugin-starters/spring-cloud-starter-tencent-multi-discovery-plugin/src/main/resources/META-INF/spring.factories +++ /dev/null @@ -1,2 +0,0 @@ -org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ - com.tencent.cloud.plugin.discovery.multi.config.MultiDiscoveryAutoConfiguration diff --git a/spring-cloud-tencent-plugin-starters/spring-cloud-starter-tencent-multi-discovery-plugin/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/spring-cloud-tencent-plugin-starters/spring-cloud-starter-tencent-multi-discovery-plugin/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports new file mode 100644 index 000000000..a506afbba --- /dev/null +++ b/spring-cloud-tencent-plugin-starters/spring-cloud-starter-tencent-multi-discovery-plugin/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -0,0 +1 @@ +com.tencent.cloud.plugin.discovery.multi.config.MultiDiscoveryAutoConfiguration diff --git a/spring-cloud-tencent-polaris-context/src/main/java/com/tencent/cloud/polaris/context/config/extend/tsf/TsfCoreEnvironmentPostProcessor.java b/spring-cloud-tencent-polaris-context/src/main/java/com/tencent/cloud/polaris/context/config/extend/tsf/TsfCoreEnvironmentPostProcessor.java index 323aed563..9e12a121f 100644 --- a/spring-cloud-tencent-polaris-context/src/main/java/com/tencent/cloud/polaris/context/config/extend/tsf/TsfCoreEnvironmentPostProcessor.java +++ b/spring-cloud-tencent-polaris-context/src/main/java/com/tencent/cloud/polaris/context/config/extend/tsf/TsfCoreEnvironmentPostProcessor.java @@ -74,6 +74,11 @@ public final class TsfCoreEnvironmentPostProcessor implements EnvironmentPostPro defaultProperties.put("spring.cloud.polaris.lossless.enabled", environment.getProperty("spring.cloud.polaris.lossless.enabled", "true")); } + String tsfPreferIpv6 = environment.getProperty("tsf_prefer_ipv6"); + if (StringUtils.isNotBlank(tsfPreferIpv6)) { + defaultProperties.put("spring.cloud.polaris.discovery.prefer-ipv6", tsfPreferIpv6); + } + if (TsfContextUtils.isTsfConsulEnabled(environment)) { // tsf_consul_ip String tsfConsulIp = environment.getProperty("tsf_consul_ip");