feat: update failover

pull/1718/head
fishtailfu 2 weeks ago
parent f6ac5eca36
commit dcf1db1c95

@ -19,13 +19,11 @@ package com.tencent.cloud.polaris.router;
import com.tencent.cloud.common.constant.OrderConstant; 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.PolarisMetadataRouterProperties;
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.utils.StringUtils; import com.tencent.polaris.api.utils.StringUtils;
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.metadata.MetadataRouterConfig;
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 com.tencent.polaris.specification.api.v1.traffic.manage.RoutingProto;
@ -38,10 +36,8 @@ public class RouterConfigModifier implements PolarisConfigModifier {
private final PolarisNearByRouterProperties polarisNearByRouterProperties; private final PolarisNearByRouterProperties polarisNearByRouterProperties;
private final PolarisMetadataRouterProperties polarisMetadataRouterProperties; public RouterConfigModifier(PolarisNearByRouterProperties polarisNearByRouterProperties) {
public RouterConfigModifier(PolarisNearByRouterProperties polarisNearByRouterProperties, PolarisMetadataRouterProperties polarisMetadataRouterProperties) {
this.polarisNearByRouterProperties = polarisNearByRouterProperties; this.polarisNearByRouterProperties = polarisNearByRouterProperties;
this.polarisMetadataRouterProperties = polarisMetadataRouterProperties;
} }
@Override @Override
@ -54,9 +50,6 @@ public class RouterConfigModifier implements PolarisConfigModifier {
// Update modified config to source properties // Update modified config to source properties
configuration.getConsumer().getServiceRouter() configuration.getConsumer().getServiceRouter()
.setPluginConfig(ServiceRouterConfig.DEFAULT_ROUTER_RECOVER, recoverRouterConfig); .setPluginConfig(ServiceRouterConfig.DEFAULT_ROUTER_RECOVER, recoverRouterConfig);
MetadataRouterConfig metadataRouterConfig = configuration.getConsumer().getServiceRouter().getPluginConfig(
ServiceRouterConfig.DEFAULT_ROUTER_METADATA, MetadataRouterConfig.class);
metadataRouterConfig.setMetadataFailOverType(polarisMetadataRouterProperties.getFailoverType());
if (StringUtils.isNotBlank(polarisNearByRouterProperties.getMatchLevel())) { if (StringUtils.isNotBlank(polarisNearByRouterProperties.getMatchLevel())) {
RoutingProto.NearbyRoutingConfig.LocationLevel locationLevel = RoutingProto.NearbyRoutingConfig.LocationLevel locationLevel =
RoutingProto.NearbyRoutingConfig.LocationLevel.valueOf(StringUtils.upperCase(polarisNearByRouterProperties.getMatchLevel())); RoutingProto.NearbyRoutingConfig.LocationLevel.valueOf(StringUtils.upperCase(polarisNearByRouterProperties.getMatchLevel()));

@ -41,8 +41,8 @@ public class RouterConfigModifierAutoConfiguration {
@Bean @Bean
@ConditionalOnMissingBean @ConditionalOnMissingBean
public RouterConfigModifier routerConfigModifier(PolarisNearByRouterProperties polarisNearByRouterProperties, PolarisMetadataRouterProperties polarisMetadataRouterProperties) { public RouterConfigModifier routerConfigModifier(PolarisNearByRouterProperties polarisNearByRouterProperties) {
return new RouterConfigModifier(polarisNearByRouterProperties, polarisMetadataRouterProperties); return new RouterConfigModifier(polarisNearByRouterProperties);
} }
} }

@ -17,7 +17,7 @@
package com.tencent.cloud.polaris.router.config.properties; package com.tencent.cloud.polaris.router.config.properties;
import com.tencent.polaris.plugins.router.metadata.FailOverType; import com.tencent.polaris.api.rpc.MetadataFailoverType;
import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.boot.context.properties.ConfigurationProperties;
@ -30,14 +30,14 @@ public class PolarisMetadataRouterProperties {
private boolean enabled = true; private boolean enabled = true;
private FailOverType failoverType = FailOverType.all; private MetadataFailoverType failOver = MetadataFailoverType.METADATAFAILOVERALL;
public FailOverType getFailoverType() { public MetadataFailoverType getFailOver() {
return failoverType; return failOver;
} }
public void setFailoverType(FailOverType failoverType) { public void setFailOver(MetadataFailoverType failOver) {
this.failoverType = failoverType; this.failOver = failOver;
} }
public boolean isEnabled() { public boolean isEnabled() {

@ -45,11 +45,11 @@ public class MetadataRouterRequestInterceptor implements RouterRequestIntercepto
if (!polarisMetadataRouterProperties.isEnabled()) { if (!polarisMetadataRouterProperties.isEnabled()) {
return; return;
} }
// set metadata router label keys // set metadata router label keys
MetadataContainer metadataContainer = MetadataContextHolder.get() MetadataContainer metadataContainer = MetadataContextHolder.get()
.getMetadataContainer(MetadataType.CUSTOM, false); .getMetadataContainer(MetadataType.CUSTOM, false);
String metadataRouteKeys = metadataContainer.getRawMetadataStringValue(LABEL_KEY_METADATA_ROUTER_KEYS); String metadataRouteKeys = metadataContainer.getRawMetadataStringValue(LABEL_KEY_METADATA_ROUTER_KEYS);
metadataContainer.putMetadataMapValue(MetadataRouter.ROUTER_TYPE_METADATA, MetadataRouter.KEY_METADATA_KEYS, metadataRouteKeys, TransitiveType.NONE); metadataContainer.putMetadataMapValue(MetadataRouter.ROUTER_TYPE_METADATA, MetadataRouter.KEY_METADATA_KEYS, metadataRouteKeys, TransitiveType.NONE);
request.setMetadataFailoverType(polarisMetadataRouterProperties.getFailOver());
} }
} }

@ -6,6 +6,12 @@
"defaultValue": true, "defaultValue": true,
"description": "the switch for metadata router." "description": "the switch for metadata router."
}, },
{
"name": "spring.cloud.polaris.router.metadata-router.failOver",
"type": "java.lang.String",
"defaultValue": "METADATAFAILOVERALL",
"description": "the fail over type for rule based router."
},
{ {
"name": "spring.cloud.polaris.router.nearby-router.enabled", "name": "spring.cloud.polaris.router.nearby-router.enabled",
"type": "java.lang.Boolean", "type": "java.lang.Boolean",

Loading…
Cancel
Save