From fefad2c64ca331f274445f69d83ddca1065b1ec2 Mon Sep 17 00:00:00 2001 From: lepdou Date: Mon, 9 May 2022 18:58:51 +0800 Subject: [PATCH 1/2] optimize config server address --- CHANGELOG.md | 1 + .../polaris/config/ConfigurationModifier.java | 58 ++++++++++++++++--- ...larisConfigBootstrapAutoConfiguration.java | 5 +- .../config/PolarisConfigProperties.java | 13 +++++ ...itional-spring-configuration-metadata.json | 7 +++ .../src/main/resources/bootstrap.yml | 2 +- 6 files changed, 74 insertions(+), 12 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 27c131e8..1cf12904 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,3 +9,4 @@ - [Bugfix: fix circuitbreaker http code greater than 400 as fail response bug](https://github.com/Tencent/spring-cloud-tencent/pull/118) - [Feat: optimize router dependency](https://github.com/Tencent/spring-cloud-tencent/pull/115) - [feat:add switch of polaris, discovery and register.](https://github.com/Tencent/spring-cloud-tencent/pull/129) +- [feat:optimize config server address.](https://github.com/Tencent/spring-cloud-tencent/pull/149) 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 17b7ebb5..495d6ec3 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 @@ -18,16 +18,19 @@ package com.tencent.cloud.polaris.config; +import java.util.ArrayList; import java.util.List; import com.tencent.cloud.common.constant.ContextConstant; import com.tencent.cloud.common.util.AddressUtils; import com.tencent.cloud.polaris.config.config.PolarisConfigProperties; import com.tencent.cloud.polaris.context.PolarisConfigModifier; +import com.tencent.cloud.polaris.context.PolarisContextProperties; import com.tencent.polaris.factory.config.ConfigurationImpl; +import org.apache.commons.lang.StringUtils; + +import org.springframework.util.CollectionUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.util.StringUtils; /** * Read configuration from spring cloud's configuration file and override polaris.yaml. @@ -36,21 +39,38 @@ import org.springframework.util.StringUtils; */ public class ConfigurationModifier implements PolarisConfigModifier { - @Autowired - private PolarisConfigProperties polarisConfigProperties; + private final PolarisConfigProperties polarisConfigProperties; + + private final PolarisContextProperties polarisContextProperties; + + public ConfigurationModifier(PolarisConfigProperties polarisConfigProperties, + PolarisContextProperties polarisContextProperties) { + this.polarisConfigProperties = polarisConfigProperties; + this.polarisContextProperties = polarisContextProperties; + } @Override public void modify(ConfigurationImpl configuration) { + // set connector type configuration.getConfigFile().getServerConnector().setConnectorType("polaris"); - if (StringUtils.isEmpty(polarisConfigProperties.getAddress())) { - return; + // set config server address + List configAddresses; + String configAddressesStr = polarisConfigProperties.getAddress(); + + if (StringUtils.isNotEmpty(configAddressesStr)) { + configAddresses = AddressUtils.parseAddressList(polarisConfigProperties.getAddress()); + } + else { + configAddresses = resolveConfigAddressFromPolarisAddress(polarisContextProperties.getAddress()); } - // override polaris config server address - List addresses = AddressUtils.parseAddressList(polarisConfigProperties.getAddress()); + if (CollectionUtils.isEmpty(configAddresses)) { + throw new RuntimeException("Config server address is blank. Please check your config in bootstrap.yml" + + " with spring.cloud.polaris.address or spring.cloud.polaris.config.address"); + } - configuration.getConfigFile().getServerConnector().setAddresses(addresses); + configuration.getConfigFile().getServerConnector().setAddresses(configAddresses); } @Override @@ -58,4 +78,24 @@ public class ConfigurationModifier implements PolarisConfigModifier { return ContextConstant.ModifierOrder.CONFIG_ORDER; } + /** + * In most cases, the address of the configuration center is the same as that of Polaris, but the port is different. + * Therefore, the address of the configuration center can be deduced directly from the Polaris address. + * + */ + private List resolveConfigAddressFromPolarisAddress(String polarisAddress) { + if (StringUtils.isEmpty(polarisAddress)) { + return null; + } + + List polarisAddresses = AddressUtils.parseAddressList(polarisAddress); + List configAddresses = new ArrayList<>(polarisAddresses.size()); + + for (String address : polarisAddresses) { + String ip = StringUtils.substringBeforeLast(address, ":"); + configAddresses.add(ip + ":" + polarisConfigProperties.getPort()); + } + + return configAddresses; + } } diff --git a/spring-cloud-starter-tencent-polaris-config/src/main/java/com/tencent/cloud/polaris/config/PolarisConfigBootstrapAutoConfiguration.java b/spring-cloud-starter-tencent-polaris-config/src/main/java/com/tencent/cloud/polaris/config/PolarisConfigBootstrapAutoConfiguration.java index 2d089b22..506022e5 100644 --- a/spring-cloud-starter-tencent-polaris-config/src/main/java/com/tencent/cloud/polaris/config/PolarisConfigBootstrapAutoConfiguration.java +++ b/spring-cloud-starter-tencent-polaris-config/src/main/java/com/tencent/cloud/polaris/config/PolarisConfigBootstrapAutoConfiguration.java @@ -67,8 +67,9 @@ public class PolarisConfigBootstrapAutoConfiguration { } @Bean - public ConfigurationModifier configurationModifier() { - return new ConfigurationModifier(); + public ConfigurationModifier configurationModifier(PolarisConfigProperties polarisConfigProperties, + PolarisContextProperties polarisContextProperties) { + return new ConfigurationModifier(polarisConfigProperties, polarisContextProperties); } } diff --git a/spring-cloud-starter-tencent-polaris-config/src/main/java/com/tencent/cloud/polaris/config/config/PolarisConfigProperties.java b/spring-cloud-starter-tencent-polaris-config/src/main/java/com/tencent/cloud/polaris/config/config/PolarisConfigProperties.java index 6ddc49f5..a2c9032f 100644 --- a/spring-cloud-starter-tencent-polaris-config/src/main/java/com/tencent/cloud/polaris/config/config/PolarisConfigProperties.java +++ b/spring-cloud-starter-tencent-polaris-config/src/main/java/com/tencent/cloud/polaris/config/config/PolarisConfigProperties.java @@ -39,6 +39,11 @@ public class PolarisConfigProperties { */ private String address; + /** + * Polaris config grpc port. + */ + private int port = 8093; + /** * Whether to automatically update to the spring context when the configuration file. * is updated @@ -66,6 +71,14 @@ public class PolarisConfigProperties { this.address = address; } + public int getPort() { + return port; + } + + public void setPort(int port) { + this.port = port; + } + public boolean isAutoRefresh() { return autoRefresh; } diff --git a/spring-cloud-starter-tencent-polaris-config/src/main/resources/META-INF/additional-spring-configuration-metadata.json b/spring-cloud-starter-tencent-polaris-config/src/main/resources/META-INF/additional-spring-configuration-metadata.json index 152d24d6..ee84cbd4 100644 --- a/spring-cloud-starter-tencent-polaris-config/src/main/resources/META-INF/additional-spring-configuration-metadata.json +++ b/spring-cloud-starter-tencent-polaris-config/src/main/resources/META-INF/additional-spring-configuration-metadata.json @@ -14,6 +14,13 @@ "description": "The polaris configuration server address.", "sourceType": "com.tencent.cloud.polaris.config.config.PolarisConfigProperties" }, + { + "name": "spring.cloud.polaris.config.port", + "type": "java.lang.Integer", + "defaultValue": "8093", + "description": "The polaris configuration server port.", + "sourceType": "com.tencent.cloud.polaris.config.config.PolarisConfigProperties" + }, { "name": "spring.cloud.polaris.config.auto-refresh", "type": "java.lang.Boolean", diff --git a/spring-cloud-tencent-examples/polaris-config-example/src/main/resources/bootstrap.yml b/spring-cloud-tencent-examples/polaris-config-example/src/main/resources/bootstrap.yml index b8ab4e08..bdbd643f 100644 --- a/spring-cloud-tencent-examples/polaris-config-example/src/main/resources/bootstrap.yml +++ b/spring-cloud-tencent-examples/polaris-config-example/src/main/resources/bootstrap.yml @@ -5,9 +5,9 @@ spring: name: polaris-config-example cloud: polaris: + address: grpc://127.0.0.1:8091 namespace: default config: - address: grpc://127.0.0.1:8093 auto-refresh: true # auto refresh when config file changed groups: - name: ${spring.application.name} # group name From 1a9ea1a0a3b7d050015ef974c1691a7aa68115f7 Mon Sep 17 00:00:00 2001 From: lepdou Date: Wed, 20 Apr 2022 19:52:17 +0800 Subject: [PATCH 2/2] remove maven format plugin --- CHANGELOG.md | 1 + pom.xml | 4 ---- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 27c131e8..c8836ece 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,3 +9,4 @@ - [Bugfix: fix circuitbreaker http code greater than 400 as fail response bug](https://github.com/Tencent/spring-cloud-tencent/pull/118) - [Feat: optimize router dependency](https://github.com/Tencent/spring-cloud-tencent/pull/115) - [feat:add switch of polaris, discovery and register.](https://github.com/Tencent/spring-cloud-tencent/pull/129) +- [Feature: Remove spring-javaformat-maven-plugin](https://github.com/Tencent/spring-cloud-tencent/pull/151) diff --git a/pom.xml b/pom.xml index c6e8bd4c..1afc0f7f 100644 --- a/pom.xml +++ b/pom.xml @@ -137,10 +137,6 @@ - - io.spring.javaformat - spring-javaformat-maven-plugin - org.apache.maven.plugins maven-checkstyle-plugin