From 5ae18a62d59183402c589fec1e9672d2a0b7d704 Mon Sep 17 00:00:00 2001 From: Haotian Zhang Date: Tue, 3 Jun 2025 16:00:00 +0800 Subject: [PATCH] feat:support ipv6. (#1592) --- CHANGELOG.md | 1 + .../cloud/polaris/PolarisDiscoveryProperties.java | 14 ++++++++++++++ .../polaris/discovery/PolarisDiscoveryHandler.java | 1 + .../additional-spring-configuration-metadata.json | 6 ++++++ .../polaris/PolarisDiscoveryPropertiesTest.java | 3 ++- .../tsf/TsfCoreEnvironmentPostProcessor.java | 5 +++++ 6 files changed, 29 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ab51092e5..98084aa28 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,3 +4,4 @@ - [fix: add gateway context config example.](https://github.com/Tencent/spring-cloud-tencent/pull/1562) - [feat:support config empty protection.](https://github.com/Tencent/spring-cloud-tencent/pull/1581) - [feat:support dynamic multi-discovery.](https://github.com/Tencent/spring-cloud-tencent/pull/1591) +- [feat:support ipv6.](https://github.com/Tencent/spring-cloud-tencent/pull/1592) 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-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");