From effbad11a1f89ed920656fad3fd937586a901b97 Mon Sep 17 00:00:00 2001 From: Haotian Zhang <928016560@qq.com> Date: Tue, 19 Aug 2025 15:09:26 +0800 Subject: [PATCH] refactor:optimize instance secure definition. --- .gitignore | 1 + CHANGELOG.md | 1 + .../consul/ConsulDiscoveryConfigModifier.java | 5 -- ...TsfDiscoveryRegistryAutoConfiguration.java | 8 +++ .../tsf/TsfTagsRegistrationCustomizer.java | 64 +++++++++++++++++++ .../src/main/resources/bootstrap.yml | 2 - .../config/PolarisContextProperties.java | 12 ++++ .../config/extend/tsf/TsfCoreProperties.java | 2 - 8 files changed, 86 insertions(+), 9 deletions(-) create mode 100644 spring-cloud-starter-tencent-polaris-discovery/src/main/java/com/tencent/cloud/polaris/registry/tsf/TsfTagsRegistrationCustomizer.java diff --git a/.gitignore b/.gitignore index 704fcd5cd..ed568a959 100644 --- a/.gitignore +++ b/.gitignore @@ -54,3 +54,4 @@ applog/ */backup /backup backup +*/tls diff --git a/CHANGELOG.md b/CHANGELOG.md index 831c28046..dac60cea0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -21,3 +21,4 @@ - [feat:Modify the annotations.](https://github.com/Tencent/spring-cloud-tencent/pull/1712) - [fix: polaris.discovery.heartbeat.enabled not effective.](https://github.com/Tencent/spring-cloud-tencent/pull/1713) - [feat: support config ratelimit addresses and remote task interval.](https://github.com/Tencent/spring-cloud-tencent/pull/1714) +- [refactor:optimize instance secure definition.](https://github.com/Tencent/spring-cloud-tencent/pull/1717) diff --git a/spring-cloud-starter-tencent-polaris-discovery/src/main/java/com/tencent/cloud/polaris/extend/consul/ConsulDiscoveryConfigModifier.java b/spring-cloud-starter-tencent-polaris-discovery/src/main/java/com/tencent/cloud/polaris/extend/consul/ConsulDiscoveryConfigModifier.java index 5e79f8a4b..4452b86ef 100644 --- a/spring-cloud-starter-tencent-polaris-discovery/src/main/java/com/tencent/cloud/polaris/extend/consul/ConsulDiscoveryConfigModifier.java +++ b/spring-cloud-starter-tencent-polaris-discovery/src/main/java/com/tencent/cloud/polaris/extend/consul/ConsulDiscoveryConfigModifier.java @@ -22,7 +22,6 @@ import java.util.Collections; import java.util.Map; import com.tencent.cloud.common.constant.OrderConstant; -import com.tencent.cloud.common.util.JacksonUtils; import com.tencent.cloud.polaris.PolarisDiscoveryProperties; import com.tencent.cloud.polaris.context.PolarisConfigModifier; import com.tencent.cloud.polaris.context.config.extend.consul.ConsulProperties; @@ -126,10 +125,6 @@ public class ConsulDiscoveryConfigModifier implements PolarisConfigModifier { String.valueOf(consulDiscoveryProperties.isPreferIpAddress())); metadata.put(ConsulConstant.MetadataMapKey.IP_ADDRESS_KEY, consulDiscoveryProperties.getHostname()); } - if (tsfCoreProperties != null) { - // tags - metadata.put(ConsulConstant.MetadataMapKey.TAGS_KEY, JacksonUtils.serialize2Json(tsfCoreProperties.getTsfTags())); - } configuration.getGlobal().getServerConnectors().add(serverConnectorConfig); // discovery diff --git a/spring-cloud-starter-tencent-polaris-discovery/src/main/java/com/tencent/cloud/polaris/registry/tsf/TsfDiscoveryRegistryAutoConfiguration.java b/spring-cloud-starter-tencent-polaris-discovery/src/main/java/com/tencent/cloud/polaris/registry/tsf/TsfDiscoveryRegistryAutoConfiguration.java index 051fb1d8f..546f443ae 100644 --- a/spring-cloud-starter-tencent-polaris-discovery/src/main/java/com/tencent/cloud/polaris/registry/tsf/TsfDiscoveryRegistryAutoConfiguration.java +++ b/spring-cloud-starter-tencent-polaris-discovery/src/main/java/com/tencent/cloud/polaris/registry/tsf/TsfDiscoveryRegistryAutoConfiguration.java @@ -19,6 +19,7 @@ package com.tencent.cloud.polaris.registry.tsf; import javax.servlet.ServletContext; import com.tencent.cloud.common.tsf.ConditionalOnTsfConsulEnabled; +import com.tencent.cloud.polaris.PolarisDiscoveryProperties; import com.tencent.cloud.polaris.context.PolarisSDKContextManager; import com.tencent.cloud.polaris.context.config.extend.tsf.TsfCoreProperties; import com.tencent.cloud.polaris.extend.consul.ConsulDiscoveryProperties; @@ -68,4 +69,11 @@ public class TsfDiscoveryRegistryAutoConfiguration { public TsfApiPolarisRegistrationCustomizer tsfApiPolarisRegistrationCustomizer(ApplicationContext context) { return new TsfApiPolarisRegistrationCustomizer(context); } + + @Bean + @ConditionalOnMissingBean + public TsfTagsRegistrationCustomizer tsfTagsRegistrationCustomizer(TsfCoreProperties tsfCoreProperties, + PolarisDiscoveryProperties polarisDiscoveryProperties) { + return new TsfTagsRegistrationCustomizer(tsfCoreProperties, polarisDiscoveryProperties); + } } diff --git a/spring-cloud-starter-tencent-polaris-discovery/src/main/java/com/tencent/cloud/polaris/registry/tsf/TsfTagsRegistrationCustomizer.java b/spring-cloud-starter-tencent-polaris-discovery/src/main/java/com/tencent/cloud/polaris/registry/tsf/TsfTagsRegistrationCustomizer.java new file mode 100644 index 000000000..3e6b8f402 --- /dev/null +++ b/spring-cloud-starter-tencent-polaris-discovery/src/main/java/com/tencent/cloud/polaris/registry/tsf/TsfTagsRegistrationCustomizer.java @@ -0,0 +1,64 @@ +/* + * Tencent is pleased to support the open source community by making spring-cloud-tencent available. + * + * Copyright (C) 2021 Tencent. All rights reserved. + * + * Licensed under the BSD 3-Clause License (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://opensource.org/licenses/BSD-3-Clause + * + * Unless required by applicable law or agreed to in writing, software distributed + * under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR + * CONDITIONS OF ANY KIND, either express or implied. See the License for the + * specific language governing permissions and limitations under the License. + */ + +package com.tencent.cloud.polaris.registry.tsf; + +import java.util.HashMap; +import java.util.Map; + +import com.tencent.cloud.common.util.ApplicationContextAwareUtils; +import com.tencent.cloud.polaris.PolarisDiscoveryProperties; +import com.tencent.cloud.polaris.context.config.extend.tsf.TsfCoreProperties; +import com.tencent.cloud.polaris.registry.PolarisRegistration; +import com.tencent.cloud.polaris.registry.PolarisRegistrationCustomizer; +import com.tencent.polaris.api.utils.StringUtils; + +import static com.tencent.polaris.plugins.connector.common.constant.ConsulConstant.MetadataMapKey.TAGS_KEY; + +/** + * @author Haotian Zhang + */ +public class TsfTagsRegistrationCustomizer implements PolarisRegistrationCustomizer { + + private final TsfCoreProperties tsfCoreProperties; + + private final PolarisDiscoveryProperties polarisDiscoveryProperties; + + public TsfTagsRegistrationCustomizer(TsfCoreProperties tsfCoreProperties, PolarisDiscoveryProperties polarisDiscoveryProperties) { + this.tsfCoreProperties = tsfCoreProperties; + this.polarisDiscoveryProperties = polarisDiscoveryProperties; + } + + @Override + public void customize(PolarisRegistration registration) { + if (tsfCoreProperties == null) { + return; + } + + String protocol = ApplicationContextAwareUtils.getProperties("tsf.discovery.scheme", + ApplicationContextAwareUtils.getProperties("spring.cloud.polaris.discovery.protocol", "http")); + if (StringUtils.isNotBlank(protocol)) { + tsfCoreProperties.setScheme(protocol); + polarisDiscoveryProperties.setProtocol(protocol); + } + Map metadata = registration.getExtendedMetadata() + .computeIfAbsent(TAGS_KEY, k -> new HashMap<>()); + for (String tag : tsfCoreProperties.getTsfTags()) { + metadata.put(TAGS_KEY, tag); + } + } +} diff --git a/spring-cloud-tencent-examples/tsf-example/consumer-demo/src/main/resources/bootstrap.yml b/spring-cloud-tencent-examples/tsf-example/consumer-demo/src/main/resources/bootstrap.yml index eb7a01b09..7236c2952 100644 --- a/spring-cloud-tencent-examples/tsf-example/consumer-demo/src/main/resources/bootstrap.yml +++ b/spring-cloud-tencent-examples/tsf-example/consumer-demo/src/main/resources/bootstrap.yml @@ -3,8 +3,6 @@ server: spring: application: name: consumer-demo - config: - import: optional:polaris feign: tsf: 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 25f5a891a..6c89fa366 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 @@ -89,6 +89,8 @@ public class PolarisContextProperties { @Value("${spring.cloud.polaris.service:${spring.application.name:}}") private String service; + private Long apiTimeout = 1000L; + public Configuration configuration(List modifierList, Supplier ipAddressSupplier, Supplier portSupplier) { // 1. Read user-defined polaris.yml configuration ConfigurationImpl configuration = (ConfigurationImpl) ConfigAPIFactory @@ -105,6 +107,7 @@ public class PolarisContextProperties { } configuration.getGlobal().getAPI().setBindIP(defaultHost); + configuration.getGlobal().getAPI().setTimeout(apiTimeout); Collection modifiers = modifierList; modifiers = modifiers.stream() @@ -183,6 +186,14 @@ public class PolarisContextProperties { this.service = service; } + public Long getApiTimeout() { + return apiTimeout; + } + + public void setApiTimeout(Long apiTimeout) { + this.apiTimeout = apiTimeout; + } + @Override public String toString() { return "PolarisContextProperties{" + @@ -194,6 +205,7 @@ public class PolarisContextProperties { ", enabled=" + enabled + ", namespace='" + namespace + '\'' + ((StringUtils.isBlank(this.service)) ? "" : ", service='" + service + '\'') + + ", apiTimeout=" + apiTimeout + '}'; } } diff --git a/spring-cloud-tencent-polaris-context/src/main/java/com/tencent/cloud/polaris/context/config/extend/tsf/TsfCoreProperties.java b/spring-cloud-tencent-polaris-context/src/main/java/com/tencent/cloud/polaris/context/config/extend/tsf/TsfCoreProperties.java index 8fa0afd88..705a2df1d 100644 --- a/spring-cloud-tencent-polaris-context/src/main/java/com/tencent/cloud/polaris/context/config/extend/tsf/TsfCoreProperties.java +++ b/spring-cloud-tencent-polaris-context/src/main/java/com/tencent/cloud/polaris/context/config/extend/tsf/TsfCoreProperties.java @@ -223,8 +223,6 @@ public class TsfCoreProperties { if (StringUtils.isNotBlank(getInstanceGroup())) { tags.add("group=" + getInstanceGroup()); } - //store the secure flag in the tags so that clients will be able to figure out whether to use http or https automatically - tags.add("secure=" + getScheme().equalsIgnoreCase("https")); return tags; }