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 |