Skip to content

Commit ba1025e

Browse files
authored
fix:修复就近路由以及匀速限流排队问题 (#299)
* refactor:not switch on fail when only one address * refactor:not switch on fail when only one address * fix:修复就近路由以及匀速限流排队问题 * fix:修复就近路由以及匀速限流排队问题
1 parent 98dd621 commit ba1025e

File tree

3 files changed

+13
-1
lines changed
  • polaris-plugins
    • polaris-plugins-ratelimiter/ratelimiter-unirate/src/main/java/com/tencent/polaris/plugins/ratelimiter/unirate
    • polaris-plugins-router/router-nearby/src/main/java/com/tencent/polaris/plugins/router/nearby

3 files changed

+13
-1
lines changed

polaris-plugins/polaris-plugins-ratelimiter/ratelimiter-unirate/src/main/java/com/tencent/polaris/plugins/ratelimiter/unirate/RemoteAwareLeakyBucket.java

+5
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,8 @@
3030
import com.tencent.polaris.client.pb.RateLimitProto.Rule;
3131
import com.tencent.polaris.logging.LoggerFactory;
3232
import java.util.Map;
33+
import java.util.concurrent.TimeUnit;
34+
3335
import org.slf4j.Logger;
3436

3537
/**
@@ -56,6 +58,9 @@ public RemoteAwareLeakyBucket(InitCriteria initCriteria, Configuration configura
5658
boolean effective = false;
5759
double effectiveRate = 0.0F;
5860
leakyBucket.setMaxQueuingDuration(configuration.getProvider().getRateLimit().getMaxQueuingTime());
61+
if (rule.getMaxQueueDelay().getValue() > 0) {
62+
leakyBucket.setMaxQueuingDuration(TimeUnit.SECONDS.toMillis(rule.getMaxQueueDelay().getValue()));
63+
}
5964
long maxDuration = 0;
6065
for (Amount amount : rule.getAmountsList()) {
6166
int maxAmount = amount.getMaxAmount().getValue();

polaris-plugins/polaris-plugins-router/router-nearby/src/main/java/com/tencent/polaris/plugins/router/nearby/NearbyRouter.java

+7
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,11 @@
1818
package com.tencent.polaris.plugins.router.nearby;
1919

2020
import java.util.ArrayList;
21+
import java.util.Collections;
2122
import java.util.HashMap;
2223
import java.util.List;
2324
import java.util.Map;
25+
import java.util.Optional;
2426
import java.util.concurrent.ExecutorService;
2527
import java.util.concurrent.Executors;
2628
import java.util.concurrent.ScheduledExecutorService;
@@ -68,6 +70,7 @@ public class NearbyRouter extends AbstractServiceRouter implements PluginConfigP
6870
public static final String ROUTER_METADATA_KEY_ZONE = "zone";
6971
public static final String ROUTER_METADATA_KEY_REGION = "region";
7072
public static final String ROUTER_METADATA_KEY_CAMPUS = "campus";
73+
private static final String NEARBY_METADATA_ENABLE = "internal-enable-nearby";
7174

7275

7376
private static final Logger LOG = LoggerFactory.getLogger(NearbyRouter.class);
@@ -349,6 +352,10 @@ public boolean enable(RouteInfo routeInfo, ServiceMetadata dstSvcInfo) {
349352
if (MapUtils.isEmpty(clientLocationInfo)) {
350353
return false;
351354
}
355+
Map<String, String> destSvcMetadata = Optional.ofNullable(dstSvcInfo.getMetadata()).orElse(Collections.emptyMap());
356+
if (Boolean.parseBoolean(destSvcMetadata.get(NEARBY_METADATA_ENABLE))) {
357+
return true;
358+
}
352359
//默认关闭,需要显示打开
353360
Map<String, String> routerMetadata = routeInfo.getRouterMetadata(ROUTER_TYPE_NEAR_BY);
354361
if (MapUtils.isNotEmpty(routerMetadata)) {

pom.xml

+1-1
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@
6464

6565
<properties>
6666
<!-- Project revision -->
67-
<revision>1.9.4</revision>
67+
<revision>1.9.5</revision>
6868

6969
<timestamp>${maven.build.timestamp}</timestamp>
7070
<skip.maven.deploy>false</skip.maven.deploy>

0 commit comments

Comments
 (0)