feat:upgrade nearby router and add namespace nearby router. (#1371)

pull/1373/head
Haotian Zhang 3 months ago committed by GitHub
parent 337dd48d1b
commit e3333c8432
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

@ -27,4 +27,5 @@
- [fix: move ConditionalOnTsfEnabled to spring-cloud-tencent-commons and fix PolarisInetUtilsAutoConfiguration.](https://github.com/Tencent/spring-cloud-tencent/pull/1354) - [fix: move ConditionalOnTsfEnabled to spring-cloud-tencent-commons and fix PolarisInetUtilsAutoConfiguration.](https://github.com/Tencent/spring-cloud-tencent/pull/1354)
- [fix: memory cost too many when using wildcard feign calls](https://github.com/Tencent/spring-cloud-tencent/pull/1356) - [fix: memory cost too many when using wildcard feign calls](https://github.com/Tencent/spring-cloud-tencent/pull/1356)
- [feat: support otel trace](https://github.com/Tencent/spring-cloud-tencent/pull/1363) - [feat: support otel trace](https://github.com/Tencent/spring-cloud-tencent/pull/1363)
- [feat:support TSF router.](https://github.com/Tencent/spring-cloud-tencent/pull/1368) - [feat:support TSF router.](https://github.com/Tencent/spring-cloud-tencent/pull/1368)
- [feat:upgrade nearby router and add namespace nearby router.](https://github.com/Tencent/spring-cloud-tencent/pull/1371)

@ -57,6 +57,10 @@
<groupId>com.tencent.polaris</groupId> <groupId>com.tencent.polaris</groupId>
<artifactId>router-nearby</artifactId> <artifactId>router-nearby</artifactId>
</exclusion> </exclusion>
<exclusion>
<groupId>com.tencent.polaris</groupId>
<artifactId>router-namespace</artifactId>
</exclusion>
<exclusion> <exclusion>
<groupId>com.tencent.polaris</groupId> <groupId>com.tencent.polaris</groupId>
<artifactId>router-metadata</artifactId> <artifactId>router-metadata</artifactId>

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" <project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent> <parent>
<artifactId>spring-cloud-tencent</artifactId> <artifactId>spring-cloud-tencent</artifactId>
@ -34,6 +34,10 @@
<groupId>com.tencent.polaris</groupId> <groupId>com.tencent.polaris</groupId>
<artifactId>router-nearby</artifactId> <artifactId>router-nearby</artifactId>
</exclusion> </exclusion>
<exclusion>
<groupId>com.tencent.polaris</groupId>
<artifactId>router-namespace</artifactId>
</exclusion>
<exclusion> <exclusion>
<groupId>com.tencent.polaris</groupId> <groupId>com.tencent.polaris</groupId>
<artifactId>router-metadata</artifactId> <artifactId>router-metadata</artifactId>

@ -146,8 +146,9 @@ public class PolarisServiceRegistry implements ServiceRegistry<PolarisRegistrati
heartbeat(heartbeatRequest); heartbeat(heartbeatRequest);
} }
registration.setInstanceId(instanceRegisterResponse.getInstanceId()); registration.setInstanceId(instanceRegisterResponse.getInstanceId());
LOGGER.info("polaris registry, {} {} {} {}:{} {} register finished", polarisDiscoveryProperties.getNamespace(), LOGGER.info("polaris registry, {} {} {} {}:{} {} {} {} {} register finished", polarisDiscoveryProperties.getNamespace(),
registration.getServiceId(), registration.getInstanceId(), registration.getHost(), registration.getPort(), registration.getServiceId(), registration.getInstanceId(), registration.getHost(), registration.getPort(),
staticMetadataManager.getRegion(), staticMetadataManager.getZone(), staticMetadataManager.getCampus(),
staticMetadataManager.getMergedStaticMetadata()); staticMetadataManager.getMergedStaticMetadata());
if (Objects.nonNull(polarisStatProperties) && polarisStatProperties.isEnabled()) { if (Objects.nonNull(polarisStatProperties) && polarisStatProperties.isEnabled()) {
try { try {

@ -39,6 +39,10 @@
<groupId>com.tencent.polaris</groupId> <groupId>com.tencent.polaris</groupId>
<artifactId>router-nearby</artifactId> <artifactId>router-nearby</artifactId>
</exclusion> </exclusion>
<exclusion>
<groupId>com.tencent.polaris</groupId>
<artifactId>router-namespace</artifactId>
</exclusion>
<exclusion> <exclusion>
<groupId>com.tencent.polaris</groupId> <groupId>com.tencent.polaris</groupId>
<artifactId>router-canary</artifactId> <artifactId>router-canary</artifactId>

@ -44,6 +44,10 @@
<groupId>com.tencent.polaris</groupId> <groupId>com.tencent.polaris</groupId>
<artifactId>router-nearby</artifactId> <artifactId>router-nearby</artifactId>
</dependency> </dependency>
<dependency>
<groupId>com.tencent.polaris</groupId>
<artifactId>router-namespace</artifactId>
</dependency>
<!-- Polaris dependencies end --> <!-- Polaris dependencies end -->
<dependency> <dependency>

@ -22,10 +22,10 @@ import com.tencent.cloud.common.constant.OrderConstant;
import com.tencent.cloud.polaris.context.PolarisConfigModifier; import com.tencent.cloud.polaris.context.PolarisConfigModifier;
import com.tencent.cloud.polaris.router.config.properties.PolarisNearByRouterProperties; import com.tencent.cloud.polaris.router.config.properties.PolarisNearByRouterProperties;
import com.tencent.polaris.api.config.consumer.ServiceRouterConfig; import com.tencent.polaris.api.config.consumer.ServiceRouterConfig;
import com.tencent.polaris.api.plugin.route.LocationLevel;
import com.tencent.polaris.factory.config.ConfigurationImpl; import com.tencent.polaris.factory.config.ConfigurationImpl;
import com.tencent.polaris.plugins.router.healthy.RecoverRouterConfig; import com.tencent.polaris.plugins.router.healthy.RecoverRouterConfig;
import com.tencent.polaris.plugins.router.nearby.NearbyRouterConfig; import com.tencent.polaris.plugins.router.nearby.NearbyRouterConfig;
import com.tencent.polaris.specification.api.v1.traffic.manage.RoutingProto;
import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.StringUtils;
/** /**
@ -53,7 +53,8 @@ public class RouterConfigModifier implements PolarisConfigModifier {
.setPluginConfig(ServiceRouterConfig.DEFAULT_ROUTER_RECOVER, recoverRouterConfig); .setPluginConfig(ServiceRouterConfig.DEFAULT_ROUTER_RECOVER, recoverRouterConfig);
if (StringUtils.isNotBlank(polarisNearByRouterProperties.getMatchLevel())) { if (StringUtils.isNotBlank(polarisNearByRouterProperties.getMatchLevel())) {
LocationLevel locationLevel = LocationLevel.valueOf(polarisNearByRouterProperties.getMatchLevel()); RoutingProto.NearbyRoutingConfig.LocationLevel locationLevel =
RoutingProto.NearbyRoutingConfig.LocationLevel.valueOf(StringUtils.upperCase(polarisNearByRouterProperties.getMatchLevel()));
NearbyRouterConfig nearbyRouterConfig = configuration.getConsumer().getServiceRouter().getPluginConfig( NearbyRouterConfig nearbyRouterConfig = configuration.getConsumer().getServiceRouter().getPluginConfig(
ServiceRouterConfig.DEFAULT_ROUTER_NEARBY, NearbyRouterConfig.class); ServiceRouterConfig.DEFAULT_ROUTER_NEARBY, NearbyRouterConfig.class);
nearbyRouterConfig.setMatchLevel(locationLevel); nearbyRouterConfig.setMatchLevel(locationLevel);

@ -23,9 +23,11 @@ import java.util.Collections;
import java.util.List; import java.util.List;
import com.tencent.cloud.polaris.router.config.properties.PolarisMetadataRouterProperties; import com.tencent.cloud.polaris.router.config.properties.PolarisMetadataRouterProperties;
import com.tencent.cloud.polaris.router.config.properties.PolarisNamespaceRouterProperties;
import com.tencent.cloud.polaris.router.config.properties.PolarisNearByRouterProperties; import com.tencent.cloud.polaris.router.config.properties.PolarisNearByRouterProperties;
import com.tencent.cloud.polaris.router.config.properties.PolarisRuleBasedRouterProperties; import com.tencent.cloud.polaris.router.config.properties.PolarisRuleBasedRouterProperties;
import com.tencent.cloud.polaris.router.interceptor.MetadataRouterRequestInterceptor; import com.tencent.cloud.polaris.router.interceptor.MetadataRouterRequestInterceptor;
import com.tencent.cloud.polaris.router.interceptor.NamespaceRouterRequestInterceptor;
import com.tencent.cloud.polaris.router.interceptor.NearbyRouterRequestInterceptor; import com.tencent.cloud.polaris.router.interceptor.NearbyRouterRequestInterceptor;
import com.tencent.cloud.polaris.router.interceptor.RuleBasedRouterRequestInterceptor; import com.tencent.cloud.polaris.router.interceptor.RuleBasedRouterRequestInterceptor;
import com.tencent.cloud.polaris.router.resttemplate.RouterLabelRestTemplateInterceptor; import com.tencent.cloud.polaris.router.resttemplate.RouterLabelRestTemplateInterceptor;
@ -70,6 +72,11 @@ public class RouterAutoConfiguration {
return new RuleBasedRouterRequestInterceptor(polarisRuleBasedRouterProperties); return new RuleBasedRouterRequestInterceptor(polarisRuleBasedRouterProperties);
} }
@Bean
@ConditionalOnProperty(value = "spring.cloud.polaris.router.namespace-router.enabled", matchIfMissing = true)
public NamespaceRouterRequestInterceptor namespaceRouterRequestInterceptor(PolarisNamespaceRouterProperties polarisNamespaceRouterProperties) {
return new NamespaceRouterRequestInterceptor(polarisNamespaceRouterProperties);
}
/** /**
* Create when gateway application is SCG. * Create when gateway application is SCG.

@ -20,6 +20,7 @@ package com.tencent.cloud.polaris.router.config;
import com.tencent.cloud.polaris.router.RouterConfigModifier; import com.tencent.cloud.polaris.router.RouterConfigModifier;
import com.tencent.cloud.polaris.router.config.properties.PolarisMetadataRouterProperties; import com.tencent.cloud.polaris.router.config.properties.PolarisMetadataRouterProperties;
import com.tencent.cloud.polaris.router.config.properties.PolarisNamespaceRouterProperties;
import com.tencent.cloud.polaris.router.config.properties.PolarisNearByRouterProperties; import com.tencent.cloud.polaris.router.config.properties.PolarisNearByRouterProperties;
import com.tencent.cloud.polaris.router.config.properties.PolarisRuleBasedRouterProperties; import com.tencent.cloud.polaris.router.config.properties.PolarisRuleBasedRouterProperties;
@ -35,7 +36,8 @@ import org.springframework.context.annotation.Import;
*/ */
@Configuration(proxyBeanMethods = false) @Configuration(proxyBeanMethods = false)
@ConditionalOnPolarisRouterEnabled @ConditionalOnPolarisRouterEnabled
@Import({PolarisNearByRouterProperties.class, PolarisMetadataRouterProperties.class, PolarisRuleBasedRouterProperties.class}) @Import({PolarisNearByRouterProperties.class, PolarisMetadataRouterProperties.class, PolarisRuleBasedRouterProperties.class,
PolarisNamespaceRouterProperties.class})
public class RouterConfigModifierAutoConfiguration { public class RouterConfigModifierAutoConfiguration {
@Bean @Bean

@ -0,0 +1,59 @@
/*
* Tencent is pleased to support the open source community by making Spring Cloud Tencent available.
*
* Copyright (C) 2019 THL A29 Limited, a Tencent company. 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.router.config.properties;
import com.tencent.polaris.api.rpc.NamespaceRouterFailoverType;
import org.springframework.boot.context.properties.ConfigurationProperties;
/**
* the configuration for namespace router.
*
* @author lepdou 2022-05-23
*/
@ConfigurationProperties(prefix = "spring.cloud.polaris.router.namespace-router")
public class PolarisNamespaceRouterProperties {
private boolean enabled = false;
private NamespaceRouterFailoverType failOver = NamespaceRouterFailoverType.all;
public boolean isEnabled() {
return enabled;
}
public void setEnabled(boolean enabled) {
this.enabled = enabled;
}
public NamespaceRouterFailoverType getFailOver() {
return failOver;
}
public void setFailOver(NamespaceRouterFailoverType failOver) {
this.failOver = failOver;
}
@Override
public String toString() {
return "PolarisNamespaceRouterProperties{" +
"enabled=" + enabled +
", failOver=" + failOver +
'}';
}
}

@ -27,7 +27,7 @@ import org.springframework.boot.context.properties.ConfigurationProperties;
@ConfigurationProperties(prefix = "spring.cloud.polaris.router.nearby-router") @ConfigurationProperties(prefix = "spring.cloud.polaris.router.nearby-router")
public class PolarisNearByRouterProperties { public class PolarisNearByRouterProperties {
private boolean enabled = true; private boolean enabled = false;
private String matchLevel; private String matchLevel;

@ -0,0 +1,55 @@
/*
* Tencent is pleased to support the open source community by making Spring Cloud Tencent available.
*
* Copyright (C) 2019 THL A29 Limited, a Tencent company. 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.router.interceptor;
import com.tencent.cloud.common.metadata.MetadataContextHolder;
import com.tencent.cloud.polaris.router.PolarisRouterContext;
import com.tencent.cloud.polaris.router.config.properties.PolarisNamespaceRouterProperties;
import com.tencent.cloud.polaris.router.spi.RouterRequestInterceptor;
import com.tencent.polaris.metadata.core.MetadataContainer;
import com.tencent.polaris.metadata.core.MetadataType;
import com.tencent.polaris.metadata.core.TransitiveType;
import com.tencent.polaris.plugins.router.namespace.NamespaceRouter;
import com.tencent.polaris.router.api.rpc.ProcessRoutersRequest;
/**
* Router request interceptor for namespace router.
*
* @author Hoatian Zhang
*/
public class NamespaceRouterRequestInterceptor implements RouterRequestInterceptor {
private final PolarisNamespaceRouterProperties polarisNamespaceRouterProperties;
public NamespaceRouterRequestInterceptor(PolarisNamespaceRouterProperties polarisNamespaceRouterProperties) {
this.polarisNamespaceRouterProperties = polarisNamespaceRouterProperties;
}
@Override
public void apply(ProcessRoutersRequest request, PolarisRouterContext routerContext) {
// set namespace router enable
MetadataContainer metadataContainer = MetadataContextHolder.get()
.getMetadataContainer(MetadataType.CUSTOM, false);
metadataContainer.putMetadataMapValue(NamespaceRouter.ROUTER_TYPE_NAMESPACE, NamespaceRouter.ROUTER_ENABLED,
String.valueOf(polarisNamespaceRouterProperties.isEnabled()), TransitiveType.NONE);
// set namespace router fail over type.
request.setNamespaceRouterFailoverType(polarisNamespaceRouterProperties.getFailOver());
}
}

@ -9,14 +9,14 @@
{ {
"name": "spring.cloud.polaris.router.nearby-router.enabled", "name": "spring.cloud.polaris.router.nearby-router.enabled",
"type": "java.lang.Boolean", "type": "java.lang.Boolean",
"defaultValue": true, "defaultValue": false,
"description": "the switch for nearby router." "description": "the switch for nearby router."
}, },
{ {
"name": "spring.cloud.polaris.router.nearby-router.matchLevel", "name": "spring.cloud.polaris.router.nearby-router.matchLevel",
"type": "java.lang.String", "type": "java.lang.String",
"defaultValue": "zone", "defaultValue": "ZONE",
"description": "the match level for nearby router, options can be region/zone/campus." "description": "the match level for nearby router, options can be REGION/ZONE/CAMPUS."
}, },
{ {
"name": "spring.cloud.polaris.router.rule-router.enabled", "name": "spring.cloud.polaris.router.rule-router.enabled",
@ -30,11 +30,42 @@
"defaultValue": "all", "defaultValue": "all",
"description": "the fail over type for rule based router." "description": "the fail over type for rule based router."
}, },
{
"name": "spring.cloud.polaris.router.namespace-router.enabled",
"type": "java.lang.Boolean",
"defaultValue": false,
"description": "the switch for namespace router."
},
{
"name": "spring.cloud.polaris.router.namespace-router.failOver",
"type": "java.lang.String",
"defaultValue": "all",
"description": "the fail over type for namespace router."
},
{ {
"name": "spring.cloud.polaris.router.enabled", "name": "spring.cloud.polaris.router.enabled",
"type": "java.lang.Boolean", "type": "java.lang.Boolean",
"defaultValue": true, "defaultValue": true,
"description": "the switch for router module." "description": "the switch for router module."
} }
],
"hints": [
{
"name": "spring.cloud.polaris.router.nearby-router.matchLevel",
"values": [
{
"value": "CAMPUS"
},
{
"value": "ZONE"
},
{
"value": "REGION"
},
{
"value": "ALL"
}
]
}
] ]
} }

@ -49,7 +49,7 @@ public class RouterBootstrapAutoConfigurationTest {
RpcEnhancementAutoConfiguration.class, RpcEnhancementAutoConfiguration.class,
RouterBootstrapAutoConfiguration.class)) RouterBootstrapAutoConfiguration.class))
.withPropertyValues("spring.cloud.polaris.enabled=true") .withPropertyValues("spring.cloud.polaris.enabled=true")
.withPropertyValues("spring.cloud.polaris.router.nearby-router.matchLevel=campus") .withPropertyValues("spring.cloud.polaris.router.nearby-router.matchLevel=CAMPUS")
.withPropertyValues("spring.cloud.polaris.circuitbreaker.enabled=true"); .withPropertyValues("spring.cloud.polaris.circuitbreaker.enabled=true");
@Test @Test
@ -61,7 +61,7 @@ public class RouterBootstrapAutoConfigurationTest {
routerConfigModifier.modify((ConfigurationImpl) configuration); routerConfigModifier.modify((ConfigurationImpl) configuration);
NearbyRouterConfig nearbyRouterConfig = configuration.getConsumer().getServiceRouter().getPluginConfig( NearbyRouterConfig nearbyRouterConfig = configuration.getConsumer().getServiceRouter().getPluginConfig(
ServiceRouterConfig.DEFAULT_ROUTER_NEARBY, NearbyRouterConfig.class); ServiceRouterConfig.DEFAULT_ROUTER_NEARBY, NearbyRouterConfig.class);
Assertions.assertEquals("campus", nearbyRouterConfig.getMatchLevel().name()); Assertions.assertEquals("CAMPUS", nearbyRouterConfig.getMatchLevel().name());
}); });
} }
} }

@ -37,7 +37,7 @@ public class PolarisNearByRouterPropertiesTest {
@Test @Test
public void isEnabled() { public void isEnabled() {
assertThat(properties.isEnabled()).isEqualTo(true); assertThat(properties.isEnabled()).isEqualTo(false);
} }
@Test @Test
@ -49,6 +49,6 @@ public class PolarisNearByRouterPropertiesTest {
@Test @Test
public void testToString() { public void testToString() {
assertThat(properties.toString()) assertThat(properties.toString())
.isEqualTo("PolarisNearByRouterProperties{enabled=true, matchLevel='null'}"); .isEqualTo("PolarisNearByRouterProperties{enabled=false, matchLevel='null'}");
} }
} }

@ -39,8 +39,8 @@ public class CustomMetadata implements InstanceMetadataProvider {
return metadata; return metadata;
} }
@Override // @Override
public String getZone() { // public String getZone() {
return "shenzhen-zone-1"; // return "shenzhen-zone-1";
} // }
} }

@ -37,7 +37,7 @@ spring:
metadata: metadata:
content: content:
label1: value1 label1: value1
region: huanan # region: huanan
management: management:
endpoints: endpoints:
web: web:

@ -39,8 +39,8 @@ public class CustomMetadata implements InstanceMetadataProvider {
return metadata; return metadata;
} }
@Override // @Override
public String getZone() { // public String getZone() {
return "shenzhen-zone-2"; // return "shenzhen-zone-2";
} // }
} }

@ -36,7 +36,7 @@ spring:
metadata: metadata:
content: content:
label1: value2 label1: value2
region: huanan # region: huanan
management: management:
endpoints: endpoints:
web: web:

@ -28,8 +28,8 @@ import org.springframework.stereotype.Component;
@Component @Component
public class CustomMetadataProvider implements InstanceMetadataProvider { public class CustomMetadataProvider implements InstanceMetadataProvider {
@Override // @Override
public String getRegion() { // public String getRegion() {
return "huadong"; // return "huadong";
} // }
} }

@ -34,6 +34,10 @@
<groupId>com.tencent.polaris</groupId> <groupId>com.tencent.polaris</groupId>
<artifactId>router-nearby</artifactId> <artifactId>router-nearby</artifactId>
</exclusion> </exclusion>
<exclusion>
<groupId>com.tencent.polaris</groupId>
<artifactId>router-namespace</artifactId>
</exclusion>
<exclusion> <exclusion>
<groupId>com.tencent.polaris</groupId> <groupId>com.tencent.polaris</groupId>
<artifactId>router-metadata</artifactId> <artifactId>router-metadata</artifactId>
@ -108,6 +112,10 @@
<groupId>com.tencent.polaris</groupId> <groupId>com.tencent.polaris</groupId>
<artifactId>router-nearby</artifactId> <artifactId>router-nearby</artifactId>
</exclusion> </exclusion>
<exclusion>
<groupId>com.tencent.polaris</groupId>
<artifactId>router-namespace</artifactId>
</exclusion>
<exclusion> <exclusion>
<groupId>com.tencent.polaris</groupId> <groupId>com.tencent.polaris</groupId>
<artifactId>router-metadata</artifactId> <artifactId>router-metadata</artifactId>

@ -20,8 +20,8 @@ package com.tencent.cloud.polaris.context;
import com.tencent.cloud.common.metadata.StaticMetadataManager; import com.tencent.cloud.common.metadata.StaticMetadataManager;
import com.tencent.polaris.api.plugin.common.ValueContext; import com.tencent.polaris.api.plugin.common.ValueContext;
import com.tencent.polaris.api.plugin.route.LocationLevel;
import com.tencent.polaris.client.api.SDKContext; import com.tencent.polaris.client.api.SDKContext;
import com.tencent.polaris.specification.api.v1.traffic.manage.RoutingProto;
import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.StringUtils;
/** /**
@ -39,13 +39,13 @@ public class PostInitPolarisSDKContext {
ValueContext valueContext = sdkContext.getValueContext(); ValueContext valueContext = sdkContext.getValueContext();
if (StringUtils.isNotBlank(region)) { if (StringUtils.isNotBlank(region)) {
valueContext.setValue(LocationLevel.region.name(), region); valueContext.setValue(RoutingProto.NearbyRoutingConfig.LocationLevel.REGION.name(), region);
} }
if (StringUtils.isNotBlank(zone)) { if (StringUtils.isNotBlank(zone)) {
valueContext.setValue(LocationLevel.zone.name(), zone); valueContext.setValue(RoutingProto.NearbyRoutingConfig.LocationLevel.ZONE.name(), zone);
} }
if (StringUtils.isNotBlank(campus)) { if (StringUtils.isNotBlank(campus)) {
valueContext.setValue(LocationLevel.campus.name(), campus); valueContext.setValue(RoutingProto.NearbyRoutingConfig.LocationLevel.CAMPUS.name(), campus);
} }
} }
} }

@ -120,12 +120,15 @@ public final class TsfCoreEnvironmentPostProcessor implements EnvironmentPostPro
// tse_polaris_ip // tse_polaris_ip
defaultProperties.put("spring.cloud.polaris.address", "grpc://" + environment.getProperty("tse_polaris_ip", "") + ":8091"); defaultProperties.put("spring.cloud.polaris.address", "grpc://" + environment.getProperty("tse_polaris_ip", "") + ":8091");
// tse_polaris_ip // tsf_sctt_extensions_port
defaultProperties.put("spring.cloud.polaris.stat.port", environment.getProperty("tsf_sctt_extensions_port", "11134")); defaultProperties.put("spring.cloud.polaris.stat.port", environment.getProperty("tsf_sctt_extensions_port", "11134"));
// rule based router fail over type // rule based router fail over type
defaultProperties.put("spring.cloud.polaris.router.rule-router.fail-over", "none"); defaultProperties.put("spring.cloud.polaris.router.rule-router.fail-over", "none");
// namespace affinity router
defaultProperties.put("spring.cloud.polaris.router.namespace-router.enabled", "true");
MapPropertySource propertySource = new MapPropertySource("tsf-polaris-properties", defaultProperties); MapPropertySource propertySource = new MapPropertySource("tsf-polaris-properties", defaultProperties);
environment.getPropertySources().addFirst(propertySource); environment.getPropertySources().addFirst(propertySource);
} }

@ -74,4 +74,14 @@ public class TsfInstanceMetadataProvider implements InstanceMetadataProvider {
} }
}}; }};
} }
@Override
public String getRegion() {
return tsfCoreProperties.getTsfRegion();
}
@Override
public String getZone() {
return tsfCoreProperties.getTsfZone();
}
} }

@ -19,8 +19,8 @@ package com.tencent.cloud.polaris.context;
import com.tencent.cloud.common.metadata.StaticMetadataManager; import com.tencent.cloud.common.metadata.StaticMetadataManager;
import com.tencent.polaris.api.plugin.common.ValueContext; import com.tencent.polaris.api.plugin.common.ValueContext;
import com.tencent.polaris.api.plugin.route.LocationLevel;
import com.tencent.polaris.client.api.SDKContext; import com.tencent.polaris.client.api.SDKContext;
import com.tencent.polaris.specification.api.v1.traffic.manage.RoutingProto;
import org.assertj.core.api.Assertions; import org.assertj.core.api.Assertions;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith; import org.junit.jupiter.api.extension.ExtendWith;
@ -55,9 +55,9 @@ public final class PostInitPolarisSDKContextTest {
when(staticMetadataManager.getCampus()).thenReturn(CAMPUS); when(staticMetadataManager.getCampus()).thenReturn(CAMPUS);
new PostInitPolarisSDKContext(sdkContext, staticMetadataManager); new PostInitPolarisSDKContext(sdkContext, staticMetadataManager);
String regionName = valueContext.getValue(LocationLevel.region.name()); String regionName = valueContext.getValue(RoutingProto.NearbyRoutingConfig.LocationLevel.REGION.name());
String zoneName = valueContext.getValue(LocationLevel.zone.name()); String zoneName = valueContext.getValue(RoutingProto.NearbyRoutingConfig.LocationLevel.ZONE.name());
String campusName = valueContext.getValue(LocationLevel.campus.name()); String campusName = valueContext.getValue(RoutingProto.NearbyRoutingConfig.LocationLevel.CAMPUS.name());
Assertions.assertThat(regionName).isEqualTo(REGION); Assertions.assertThat(regionName).isEqualTo(REGION);
Assertions.assertThat(zoneName).isEqualTo(ZONE); Assertions.assertThat(zoneName).isEqualTo(ZONE);

@ -40,7 +40,7 @@ public class PolarisInstanceTransformer implements InstanceTransformer {
instance.setCampus(polarisServiceInstance.getPolarisInstance().getCampus()); instance.setCampus(polarisServiceInstance.getPolarisInstance().getCampus());
instance.setWeight(polarisServiceInstance.getPolarisInstance().getWeight()); instance.setWeight(polarisServiceInstance.getPolarisInstance().getWeight());
if (CollectionUtils.isNotEmpty(polarisServiceInstance.getServiceMetadata())) { if (CollectionUtils.isNotEmpty(polarisServiceInstance.getServiceMetadata())) {
instance.getServiceMetadata().putAll(polarisServiceInstance.getServiceMetadata()); instance.setServiceMetadata(polarisServiceInstance.getServiceMetadata());
} }
} }
} }

Loading…
Cancel
Save