From 7c0a390b193c006ca1abf7a72c34100bdf5e612b Mon Sep 17 00:00:00 2001 From: SkyeBeFreeman <928016560@qq.com> Date: Wed, 16 Mar 2022 18:59:37 +0800 Subject: [PATCH 1/2] feat:support customize registered ip address. --- .../cloud/polaris/PolarisProperties.java | 21 +++++++++++++++++++ .../PolarisDiscoveryAutoConfiguration.java | 5 +++-- .../polaris/registry/PolarisRegistration.java | 3 +++ ...itional-spring-configuration-metadata.json | 8 ++++++- .../cloud/polaris/PolarisPropertiesTest.java | 4 +++- .../pom.xml | 2 +- 6 files changed, 38 insertions(+), 5 deletions(-) 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 e71be74d..7140a5d1 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 @@ -22,6 +22,7 @@ import org.apache.commons.lang.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.cloud.commons.util.InetUtils; import org.springframework.core.env.Environment; /** @@ -72,6 +73,11 @@ public class PolarisProperties { @Value("${server.port:}") private int port; + /** + * Ip address to be registered. + */ + private String ipAddress; + /** * 是否开启负载均衡 */ @@ -107,6 +113,12 @@ public class PolarisProperties { @Autowired private Environment environment; + public PolarisProperties(InetUtils inetUtils) { + if (inetUtils != null) { + this.ipAddress = inetUtils.findFirstNonLoopbackHostInfo().getIpAddress(); + } + } + /** * init properties * @@ -218,6 +230,14 @@ public class PolarisProperties { this.port = port; } + public String getIpAddress() { + return ipAddress; + } + + public void setIpAddress(String ipAddress) { + this.ipAddress = ipAddress; + } + public String getHealthCheckUrl() { return healthCheckUrl; } @@ -237,6 +257,7 @@ public class PolarisProperties { ", version='" + version + '\'' + ", protocol='" + protocol + '\'' + ", port=" + port + + ", ipAddress='" + ipAddress + '\'' + ", loadbalancerEnabled=" + loadbalancerEnabled + ", policy='" + policy + '\'' + ", registerEnabled=" + registerEnabled + diff --git a/spring-cloud-tencent-starters/spring-cloud-starter-tencent-polaris-discovery/src/main/java/com/tencent/cloud/polaris/discovery/PolarisDiscoveryAutoConfiguration.java b/spring-cloud-tencent-starters/spring-cloud-starter-tencent-polaris-discovery/src/main/java/com/tencent/cloud/polaris/discovery/PolarisDiscoveryAutoConfiguration.java index 38d0cb10..863db32b 100644 --- a/spring-cloud-tencent-starters/spring-cloud-starter-tencent-polaris-discovery/src/main/java/com/tencent/cloud/polaris/discovery/PolarisDiscoveryAutoConfiguration.java +++ b/spring-cloud-tencent-starters/spring-cloud-starter-tencent-polaris-discovery/src/main/java/com/tencent/cloud/polaris/discovery/PolarisDiscoveryAutoConfiguration.java @@ -25,6 +25,7 @@ import com.tencent.polaris.api.exception.PolarisException; import com.tencent.polaris.client.api.SDKContext; import com.tencent.polaris.factory.api.DiscoveryAPIFactory; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; +import org.springframework.cloud.commons.util.InetUtils; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Import; @@ -41,8 +42,8 @@ public class PolarisDiscoveryAutoConfiguration { @Bean @ConditionalOnMissingBean - public PolarisProperties polarisDiscoveryProperties() { - return new PolarisProperties(); + public PolarisProperties polarisDiscoveryProperties(InetUtils inetUtils) { + return new PolarisProperties(inetUtils); } @Bean(name = "polarisProvider") diff --git a/spring-cloud-tencent-starters/spring-cloud-starter-tencent-polaris-discovery/src/main/java/com/tencent/cloud/polaris/registry/PolarisRegistration.java b/spring-cloud-tencent-starters/spring-cloud-starter-tencent-polaris-discovery/src/main/java/com/tencent/cloud/polaris/registry/PolarisRegistration.java index b76b1235..57bc3ceb 100644 --- a/spring-cloud-tencent-starters/spring-cloud-starter-tencent-polaris-discovery/src/main/java/com/tencent/cloud/polaris/registry/PolarisRegistration.java +++ b/spring-cloud-tencent-starters/spring-cloud-starter-tencent-polaris-discovery/src/main/java/com/tencent/cloud/polaris/registry/PolarisRegistration.java @@ -48,6 +48,9 @@ public class PolarisRegistration implements Registration, ServiceInstance { @Override public String getHost() { + if (StringUtils.isNotBlank(polarisProperties.getIpAddress())) { + return polarisProperties.getIpAddress(); + } return polarisContext.getConfig().getGlobal().getAPI().getBindIP(); } diff --git a/spring-cloud-tencent-starters/spring-cloud-starter-tencent-polaris-discovery/src/main/resources/META-INF/additional-spring-configuration-metadata.json b/spring-cloud-tencent-starters/spring-cloud-starter-tencent-polaris-discovery/src/main/resources/META-INF/additional-spring-configuration-metadata.json index f7f5d0e5..3755cd6e 100644 --- a/spring-cloud-tencent-starters/spring-cloud-starter-tencent-polaris-discovery/src/main/resources/META-INF/additional-spring-configuration-metadata.json +++ b/spring-cloud-tencent-starters/spring-cloud-starter-tencent-polaris-discovery/src/main/resources/META-INF/additional-spring-configuration-metadata.json @@ -42,6 +42,12 @@ "defaultValue": "${spring.cloud.polaris.version}", "description": "polaris discovery service's username to authenticate." }, + { + "name": "spring.cloud.polaris.discovery.ip-address", + "type": "java.lang.String", + "defaultValue": "", + "description": "ip address to be registered to polaris discovery server." + }, { "name": "spring.cloud.polaris.protocol", "type": "java.lang.String", @@ -52,7 +58,7 @@ "name": "spring.cloud.polaris.weight", "type": "java.lang.String", "defaultValue": 100, - "description": "the weight of polaris instance , use to loadbalance." + "description": "the weight of polaris instance , use to load-balance." } ] } diff --git a/spring-cloud-tencent-starters/spring-cloud-starter-tencent-polaris-discovery/src/test/java/com/tencent/cloud/polaris/PolarisPropertiesTest.java b/spring-cloud-tencent-starters/spring-cloud-starter-tencent-polaris-discovery/src/test/java/com/tencent/cloud/polaris/PolarisPropertiesTest.java index 0d8b8772..38c40454 100644 --- a/spring-cloud-tencent-starters/spring-cloud-starter-tencent-polaris-discovery/src/test/java/com/tencent/cloud/polaris/PolarisPropertiesTest.java +++ b/spring-cloud-tencent-starters/spring-cloud-starter-tencent-polaris-discovery/src/test/java/com/tencent/cloud/polaris/PolarisPropertiesTest.java @@ -24,12 +24,14 @@ import static org.assertj.core.api.Assertions.assertThat; import static org.junit.Assert.fail; import org.junit.Test; +import org.springframework.cloud.commons.util.InetUtils; +import org.springframework.cloud.commons.util.InetUtilsProperties; public class PolarisPropertiesTest { @Test public void testInitAndGetSet() { - PolarisProperties temp = new PolarisProperties(); + PolarisProperties temp = new PolarisProperties(new InetUtils(new InetUtilsProperties())); try { temp.setNamespace(NAMESPACE_TEST); temp.getNamespace(); diff --git a/spring-cloud-tencent-starters/spring-cloud-tencent-polaris-context/pom.xml b/spring-cloud-tencent-starters/spring-cloud-tencent-polaris-context/pom.xml index c4ecedb8..9a506d4b 100644 --- a/spring-cloud-tencent-starters/spring-cloud-tencent-polaris-context/pom.xml +++ b/spring-cloud-tencent-starters/spring-cloud-tencent-polaris-context/pom.xml @@ -11,7 +11,7 @@ 4.0.0 spring-cloud-tencent-polaris-context - Spring Cloud Tencent Polaris SDKContext + Spring Cloud Tencent Polaris SDK Context From 2f6083eb7e573389ed4ba7a3ca3affcea1112d52 Mon Sep 17 00:00:00 2001 From: SkyeBeFreeman <928016560@qq.com> Date: Wed, 16 Mar 2022 19:34:08 +0800 Subject: [PATCH 2/2] docs:update docs of discovery. --- .../src/main/doc-zh/spring-cloud-tencent-polaris-discovery.md | 1 + .../src/main/doc/spring-cloud-tencent-polaris-discovery.md | 1 + 2 files changed, 2 insertions(+) diff --git a/spring-cloud-tencent-docs/src/main/doc-zh/spring-cloud-tencent-polaris-discovery.md b/spring-cloud-tencent-docs/src/main/doc-zh/spring-cloud-tencent-polaris-discovery.md index 91a935ac..67bb3ead 100644 --- a/spring-cloud-tencent-docs/src/main/doc-zh/spring-cloud-tencent-polaris-discovery.md +++ b/spring-cloud-tencent-docs/src/main/doc-zh/spring-cloud-tencent-polaris-discovery.md @@ -91,6 +91,7 @@ spring: | spring.cloud.polaris.discovery.instance-enabled | true | 否 | 当前微服务实例是否可以被访问 | | spring.cloud.polaris.discovery.token | 无 | 否 | 鉴权Token | | spring.cloud.polaris.discovery.version | null | 否 | 微服务版本 | +| spring.cloud.polaris.discovery.ip-address | null | 否 | 注册的IP地址 | | spring.cloud.polaris.protocol | null | 否 | 微服务协议类型 | | spring.cloud.polaris.weight | 100 | 否 | 微服务权重 | | spring.cloud.loadbalancer.polaris.enabled | true | 否 | 是否开启负载均衡 | diff --git a/spring-cloud-tencent-docs/src/main/doc/spring-cloud-tencent-polaris-discovery.md b/spring-cloud-tencent-docs/src/main/doc/spring-cloud-tencent-polaris-discovery.md index a692c1f0..2e8f747b 100644 --- a/spring-cloud-tencent-docs/src/main/doc/spring-cloud-tencent-polaris-discovery.md +++ b/spring-cloud-tencent-docs/src/main/doc/spring-cloud-tencent-polaris-discovery.md @@ -88,6 +88,7 @@ Taking examples like random weight policy, you can add weight at Polaris control | spring.cloud.polaris.discovery.instance-enabled | true | false | can current Microservice be visited | | spring.cloud.polaris.discovery.token | false | false | Authentication Token | | spring.cloud.polaris.discovery.version | null | false | Microservice Version | +| spring.cloud.polaris.discovery.ip-address | null | false | Ip address to be registered | | spring.cloud.polaris.protocol | null | false | Microservice agreement type | | spring.cloud.polaris.weight | 100 | false | Microservice weight | | spring.cloud.loadbalancer.polaris.enabled | true | false | whether to open CLB |