From f32972e554352ce4ad819f106c46dd945fa5037b Mon Sep 17 00:00:00 2001 From: Haotian Zhang Date: Mon, 23 Jun 2025 11:27:37 +0800 Subject: [PATCH 1/2] feat:support polaris server nearby backup LB. --- CHANGELOG.md | 18 +++++++----- .../polaris/config/ConfigurationModifier.java | 2 ++ .../cloud/polaris/context/ModifyAddress.java | 6 +++- .../config/PolarisContextProperties.java | 29 +++++++++++++++++++ ...itional-spring-configuration-metadata.json | 16 +++++++++- 5 files changed, 61 insertions(+), 10 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 877a142298..2ef355c3f1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,11 +1,13 @@ # Change Log --- -- [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) -- [feat:support config all recover enabled.](https://github.com/Tencent/spring-cloud-tencent/pull/1593) -- [feat:support stat reporting path aggregation.](https://github.com/Tencent/spring-cloud-tencent/pull/1602) -- [feat:support instance detect.](https://github.com/Tencent/spring-cloud-tencent/pull/1616) -- [fix: fix loadbalancer metadata type.](https://github.com/Tencent/spring-cloud-tencent/pull/1624) +- [fix: add gateway context config example.](https://github.com/Tencent/spring-cloud-tencent/pull/1563) +- [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) +- [feat:support config all recover enabled.](https://github.com/Tencent/spring-cloud-tencent/pull/1604) +- [feat:support stat reporting path aggregation.](https://github.com/Tencent/spring-cloud-tencent/pull/1608) +- [feat:support instance detect.](https://github.com/Tencent/spring-cloud-tencent/pull/1617) +- [fix: fix loadbalancer metadata type.](https://github.com/Tencent/spring-cloud-tencent/pull/1625) +- [feat:support polaris server nearby backup LB.](https://github.com/Tencent/spring-cloud-tencent/pull/1629) diff --git a/spring-cloud-starter-tencent-polaris-config/src/main/java/com/tencent/cloud/polaris/config/ConfigurationModifier.java b/spring-cloud-starter-tencent-polaris-config/src/main/java/com/tencent/cloud/polaris/config/ConfigurationModifier.java index 2d3f433020..c34477fc47 100644 --- a/spring-cloud-starter-tencent-polaris-config/src/main/java/com/tencent/cloud/polaris/config/ConfigurationModifier.java +++ b/spring-cloud-starter-tencent-polaris-config/src/main/java/com/tencent/cloud/polaris/config/ConfigurationModifier.java @@ -114,6 +114,8 @@ private void initDataSource(ConfigurationImpl configuration) { } connectorConfig.setAddresses(configAddresses); + connectorConfig.setLbPolicy(polarisContextProperties.getAddressLbPolicy()); + connectorConfig.setServerSwitchInterval(polarisContextProperties.getServerSwitchInterval()); if (StringUtils.isNotEmpty(polarisConfigProperties.getToken())) { connectorConfig.setToken(polarisConfigProperties.getToken()); diff --git a/spring-cloud-tencent-polaris-context/src/main/java/com/tencent/cloud/polaris/context/ModifyAddress.java b/spring-cloud-tencent-polaris-context/src/main/java/com/tencent/cloud/polaris/context/ModifyAddress.java index a2fb63e86b..2b3a62bef2 100644 --- a/spring-cloud-tencent-polaris-context/src/main/java/com/tencent/cloud/polaris/context/ModifyAddress.java +++ b/spring-cloud-tencent-polaris-context/src/main/java/com/tencent/cloud/polaris/context/ModifyAddress.java @@ -26,6 +26,7 @@ import com.tencent.polaris.api.utils.CollectionUtils; import com.tencent.polaris.api.utils.StringUtils; import com.tencent.polaris.factory.config.ConfigurationImpl; +import com.tencent.polaris.factory.config.global.ServerConnectorConfigImpl; /** * Modify polaris server address. @@ -48,7 +49,10 @@ public void modify(ConfigurationImpl configuration) { List addresses = AddressUtils.parseAddressList(properties.getAddress()); - configuration.getGlobal().getServerConnector().setAddresses(addresses); + ServerConnectorConfigImpl serverConnectorConfig = configuration.getGlobal().getServerConnector(); + serverConnectorConfig.setAddresses(addresses); + serverConnectorConfig.setLbPolicy(properties.getAddressLbPolicy()); + serverConnectorConfig.setServerSwitchInterval(properties.getServerSwitchInterval()); if (CollectionUtils.isEmpty(configuration.getGlobal().getServerConnectors())) { configuration.getGlobal().setServerConnectors(new ArrayList<>()); } diff --git a/spring-cloud-tencent-polaris-context/src/main/java/com/tencent/cloud/polaris/context/config/PolarisContextProperties.java b/spring-cloud-tencent-polaris-context/src/main/java/com/tencent/cloud/polaris/context/config/PolarisContextProperties.java index d534c1e9b0..283bb54644 100644 --- a/spring-cloud-tencent-polaris-context/src/main/java/com/tencent/cloud/polaris/context/config/PolarisContextProperties.java +++ b/spring-cloud-tencent-polaris-context/src/main/java/com/tencent/cloud/polaris/context/config/PolarisContextProperties.java @@ -26,6 +26,7 @@ import com.tencent.cloud.polaris.context.PolarisConfigModifier; import com.tencent.polaris.api.config.ConfigProvider; import com.tencent.polaris.api.config.Configuration; +import com.tencent.polaris.api.config.consumer.LoadBalanceConfig; import com.tencent.polaris.api.utils.CollectionUtils; import com.tencent.polaris.api.utils.StringUtils; import com.tencent.polaris.factory.ConfigAPIFactory; @@ -48,6 +49,16 @@ public class PolarisContextProperties { @Value("${spring.cloud.polaris.address:}") private String address; + /** + * polaris server address load balance policy. + */ + private String addressLbPolicy = LoadBalanceConfig.LOAD_BALANCE_ROUND_ROBIN; + + /** + * polaris server switch interval. + */ + private long serverSwitchInterval = 600000; + /** * current server local ip address. */ @@ -116,6 +127,22 @@ public void setAddress(String address) { this.address = address; } + public String getAddressLbPolicy() { + return addressLbPolicy; + } + + public void setAddressLbPolicy(String addressLbPolicy) { + this.addressLbPolicy = addressLbPolicy; + } + + public long getServerSwitchInterval() { + return serverSwitchInterval; + } + + public void setServerSwitchInterval(long serverSwitchInterval) { + this.serverSwitchInterval = serverSwitchInterval; + } + public String getLocalIpAddress() { return localIpAddress; } @@ -160,6 +187,8 @@ public void setService(String service) { public String toString() { return "PolarisContextProperties{" + "address='" + address + '\'' + + ", addressLbPolicy='" + addressLbPolicy + '\'' + + ", serverSwitchInterval=" + serverSwitchInterval + ", localIpAddress='" + localIpAddress + '\'' + ((this.localPort == null || this.localPort <= 0) ? "" : ", localPort=" + localPort) + ", enabled=" + enabled + diff --git a/spring-cloud-tencent-polaris-context/src/main/resources/META-INF/additional-spring-configuration-metadata.json b/spring-cloud-tencent-polaris-context/src/main/resources/META-INF/additional-spring-configuration-metadata.json index 370f5b4c5c..6b3c64a63c 100644 --- a/spring-cloud-tencent-polaris-context/src/main/resources/META-INF/additional-spring-configuration-metadata.json +++ b/spring-cloud-tencent-polaris-context/src/main/resources/META-INF/additional-spring-configuration-metadata.json @@ -88,5 +88,19 @@ "defaultValue": "polaris.pushgateway" } ], - "hints": [] + "hints": [ + { + "name": "spring.cloud.polaris.address-lb-policy", + "values": [ + { + "value": "roundRobin", + "description": "Round robin policy." + }, + { + "value": "nearbyBackup", + "description": "Nearby backup policy." + } + ] + } + ] } From fec5083cdc39b71e1fd417e6afdc30b404bb3b19 Mon Sep 17 00:00:00 2001 From: fishtailfu Date: Mon, 23 Jun 2025 14:29:04 +0800 Subject: [PATCH 2/2] feat:support polaris server nearby backup LB. --- CHANGELOG.md | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2ef355c3f1..f62d989910 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,13 +1,12 @@ # Change Log --- -- [fix: add gateway context config example.](https://github.com/Tencent/spring-cloud-tencent/pull/1563) -- [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) -- [feat:support config all recover enabled.](https://github.com/Tencent/spring-cloud-tencent/pull/1604) -- [feat:support stat reporting path aggregation.](https://github.com/Tencent/spring-cloud-tencent/pull/1608) -- [feat:support instance detect.](https://github.com/Tencent/spring-cloud-tencent/pull/1617) -- [fix: fix loadbalancer metadata type.](https://github.com/Tencent/spring-cloud-tencent/pull/1625) +- [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) +- [feat:support config all recover enabled.](https://github.com/Tencent/spring-cloud-tencent/pull/1593) +- [feat:support stat reporting path aggregation.](https://github.com/Tencent/spring-cloud-tencent/pull/1602) +- [feat:support instance detect.](https://github.com/Tencent/spring-cloud-tencent/pull/1616) +- [fix: fix loadbalancer metadata type.](https://github.com/Tencent/spring-cloud-tencent/pull/1624) - [feat:support polaris server nearby backup LB.](https://github.com/Tencent/spring-cloud-tencent/pull/1629)