Skip to content

Commit 3bb5138

Browse files
feat:support instance detect. (#84)
1 parent edd5336 commit 3bb5138

File tree

7 files changed

+29
-6
lines changed

7 files changed

+29
-6
lines changed

dubbo-examples/dubbo-discovery-example/dubbo-quick-consumer/src/main/resources/spring/dubbo-consumer.properties

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ dubbo.application.service-discovery.migration=FORCE_APPLICATION
66
dubbo.application.metadata-type=remote
77
# registry
88
dubbo.registry.address=polaris://119.91.66.223:8091
9+
dubbo.registry.parameters.detect_when=after_call
910
# config center
1011
dubbo.config-center.address=polaris://119.91.66.223:8093
1112
# metadata report

dubbo-examples/pom.xml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,11 @@
5454
<artifactId>log4j-slf4j-impl</artifactId>
5555
<version>${log4j2.version}</version>
5656
</dependency>
57+
<dependency>
58+
<groupId>org.slf4j</groupId>
59+
<artifactId>slf4j-api</artifactId>
60+
<version>${slf4j.version}</version>
61+
</dependency>
5762
</dependencies>
5863

5964
<profiles>

dubbo-plugins/dubbo-router-polaris/src/main/java/com/tencent/polaris/dubbo/router/InstanceInvoker.java

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,7 @@
1717

1818
package com.tencent.polaris.dubbo.router;
1919

20-
import com.tencent.polaris.api.pojo.CircuitBreakerStatus;
21-
import com.tencent.polaris.api.pojo.DefaultInstance;
22-
import com.tencent.polaris.api.pojo.Instance;
23-
import com.tencent.polaris.api.pojo.StatusDimension;
20+
import com.tencent.polaris.api.pojo.*;
2421
import com.tencent.polaris.common.registry.DubboServiceInfo;
2522
import com.tencent.polaris.common.utils.Consts;
2623
import org.apache.dubbo.common.URL;
@@ -117,6 +114,11 @@ public CircuitBreakerStatus getCircuitBreakerStatus(StatusDimension statusDimens
117114
return defaultInstance.getCircuitBreakerStatus(statusDimension);
118115
}
119116

117+
@Override
118+
public RetStatus getDetectStatus() {
119+
return defaultInstance.getDetectStatus();
120+
}
121+
120122
@Override
121123
public boolean isHealthy() {
122124
return defaultInstance.isHealthy();

polaris-adapter-dubbo/src/main/java/com/tencent/polaris/common/registry/PolarisOperator.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717

1818
package com.tencent.polaris.common.registry;
1919

20+
import com.tencent.polaris.api.config.consumer.OutlierDetectionConfig;
2021
import com.tencent.polaris.api.core.ConsumerAPI;
2122
import com.tencent.polaris.api.core.ProviderAPI;
2223
import com.tencent.polaris.api.exception.PolarisException;
@@ -144,6 +145,16 @@ private void init(PolarisOperators.OperatorType operatorType, Map<String, String
144145
}
145146
configuration.getGlobal().getStatReporter().setPluginConfig("prometheus", prometheusHandlerConfig);
146147

148+
// 设置主动探测
149+
if (parameters.containsKey(Consts.KEY_DETECT_WHEN)) {
150+
String detectWhen = parameters.get(Consts.KEY_DETECT_WHEN);
151+
try {
152+
configuration.getConsumer().getOutlierDetection().setWhen(OutlierDetectionConfig.When.valueOf(detectWhen));
153+
} catch (IllegalArgumentException e) {
154+
LOGGER.warn("Invalid detectWhen value: {}, valid values are: {}",
155+
detectWhen, Arrays.toString(OutlierDetectionConfig.When.values()));
156+
}
157+
}
147158

148159
// 设置服务治理连接地址
149160
configuration.getGlobal().getServerConnector()

polaris-adapter-dubbo/src/main/java/com/tencent/polaris/common/registry/PolarisOperators.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,9 @@ private PolarisOperators() {
4444
public static PolarisOperator loadOrStoreForGovernance(String host, int port, Map<String, String> parameters) {
4545
Map<String, PolarisOperator> operatorMap = INSTANCE.polarisOperatorMap.get(OperatorType.GOVERNANCE);
4646
Map<String, String> params = Optional.ofNullable(parameters).orElse(Collections.emptyMap());
47-
String key = host + ":" + port + "|hash_code:" + params.hashCode();
47+
// 目前只支持一个operator,所以key暂时用host+port
48+
// String key = host + ":" + port + "|hash_code:" + params.hashCode();
49+
String key = host + ":" + port;
4850
return operatorMap.computeIfAbsent(key, s -> new PolarisOperator(OperatorType.GOVERNANCE, host, port, parameters, new BaseBootConfigHandler()));
4951
}
5052

polaris-adapter-dubbo/src/main/java/com/tencent/polaris/common/utils/Consts.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,8 @@ public interface Consts {
3333

3434
String KEY_TTL = "ttl";
3535

36+
String KEY_DETECT_WHEN = "detect_when";
37+
3638
String KEY_METRIC_TYPE = "stat_type";
3739

3840
String KEY_METRIC_PULL_PORT = "stat_pull_port";

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@
4141
<revision>2.0.2.0-3.2.7-SNAPSHOT</revision>
4242

4343
<!-- Polaris SDK version -->
44-
<polaris.version>2.0.1.0</polaris.version>
44+
<polaris.version>2.0.2.0-SNAPSHOT</polaris.version>
4545

4646
<apache.dubbo.version>3.2.7</apache.dubbo.version>
4747
<slf4j.version>1.7.25</slf4j.version>

0 commit comments

Comments
 (0)