This is an automated email from the ASF dual-hosted git repository.
albumenj pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/dubbo-spi-extensions.git
The following commit(s) were added to refs/heads/master by this push:
new 420d6d6 feat: separate the circuitbreaker and ratelimit filters, to
make it more decompose to developers (#187)
420d6d6 is described below
commit 420d6d6ab17f437b27f2980364e6af48d679dd00
Author: andrew shan <[email protected]>
AuthorDate: Fri Dec 30 16:08:17 2022 +0800
feat: separate the circuitbreaker and ratelimit filters, to make it more
decompose to developers (#187)
* feat:调整filter的引用模式,限流与熔断分开便于用户按需使用
* fix: add license to pom.xml
---
.../pom.xml | 22 +-
.../dubbo/filter/dubbo2/CircuitBreakerFilter.java | 0
.../META-INF/dubbo/org.apache.dubbo.rpc.Filter | 1 +
.../pom.xml | 22 +-
.../dubbo/filter/dubbo2/RateLimitFilter.java | 0
.../META-INF/dubbo/org.apache.dubbo.rpc.Filter | 1 +
.../dubbo-filter-polaris-dubbo2/pom.xml | 5 +
.../META-INF/dubbo/org.apache.dubbo.rpc.Filter | 3 -
.../polaris/PolarisRegistryServiceDiscovery.java | 227 ---------------------
.../polaris/PolarisServiceDiscoveryFactory.java | 30 ---
.../registry/polaris/filter}/ReportFilter.java | 2 +-
...e.dubbo.registry.client.ServiceDiscoveryFactory | 1 -
.../dubbo/internal/org.apache.dubbo.rpc.Filter | 1 +
.../PolarisRegistryServiceDiscoveryTest.java | 152 --------------
14 files changed, 15 insertions(+), 452 deletions(-)
diff --git a/dubbo-filter-extensions/dubbo-filter-polaris-dubbo2/pom.xml
b/dubbo-filter-extensions/dubbo-filter-polaris-dubbo2/dubbo-filter-polaris-circuitbreaker-dubbo2/pom.xml
similarity index 59%
copy from dubbo-filter-extensions/dubbo-filter-polaris-dubbo2/pom.xml
copy to
dubbo-filter-extensions/dubbo-filter-polaris-dubbo2/dubbo-filter-polaris-circuitbreaker-dubbo2/pom.xml
index 65b677f..4abcc6d 100644
--- a/dubbo-filter-extensions/dubbo-filter-polaris-dubbo2/pom.xml
+++
b/dubbo-filter-extensions/dubbo-filter-polaris-dubbo2/dubbo-filter-polaris-circuitbreaker-dubbo2/pom.xml
@@ -19,28 +19,12 @@
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
- <artifactId>dubbo-filter-extensions</artifactId>
+ <artifactId>dubbo-filter-polaris-dubbo2</artifactId>
<groupId>org.apache.dubbo.extensions</groupId>
- <version>${revision}</version>
- <relativePath>../pom.xml</relativePath>
+ <version>1.0.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
- <artifactId>dubbo-filter-polaris-dubbo2</artifactId>
- <name>dubbo-filter-polaris-dubbo2</name>
- <version>1.0.0-SNAPSHOT</version>
- <description>Dubbo2 filter extension for PolarisMesh, support
circuitbreaking, ratelimit, metric capabilities.</description>
+ <artifactId>dubbo-filter-polaris-circuitbreaker-dubbo2</artifactId>
- <dependencies>
- <dependency>
- <groupId>org.apache.dubbo</groupId>
- <artifactId>dubbo</artifactId>
- <version>2.7.18</version>
- <optional>true</optional>
- </dependency>
- <dependency>
- <groupId>com.tencent.polaris</groupId>
- <artifactId>polaris-adapter-dubbo</artifactId>
- </dependency>
- </dependencies>
</project>
diff --git
a/dubbo-filter-extensions/dubbo-filter-polaris-dubbo2/src/main/java/org/apache/dubbo/filter/dubbo2/CircuitBreakerFilter.java
b/dubbo-filter-extensions/dubbo-filter-polaris-dubbo2/dubbo-filter-polaris-circuitbreaker-dubbo2/src/main/java/org/apache/dubbo/filter/dubbo2/CircuitBreakerFilter.java
similarity index 100%
rename from
dubbo-filter-extensions/dubbo-filter-polaris-dubbo2/src/main/java/org/apache/dubbo/filter/dubbo2/CircuitBreakerFilter.java
rename to
dubbo-filter-extensions/dubbo-filter-polaris-dubbo2/dubbo-filter-polaris-circuitbreaker-dubbo2/src/main/java/org/apache/dubbo/filter/dubbo2/CircuitBreakerFilter.java
diff --git
a/dubbo-filter-extensions/dubbo-filter-polaris-dubbo2/dubbo-filter-polaris-circuitbreaker-dubbo2/src/main/resources/META-INF/dubbo/org.apache.dubbo.rpc.Filter
b/dubbo-filter-extensions/dubbo-filter-polaris-dubbo2/dubbo-filter-polaris-circuitbreaker-dubbo2/src/main/resources/META-INF/dubbo/org.apache.dubbo.rpc.Filter
new file mode 100644
index 0000000..6af9e48
--- /dev/null
+++
b/dubbo-filter-extensions/dubbo-filter-polaris-dubbo2/dubbo-filter-polaris-circuitbreaker-dubbo2/src/main/resources/META-INF/dubbo/org.apache.dubbo.rpc.Filter
@@ -0,0 +1 @@
+polaris_circuitbreaker=org.apache.dubbo.filter.dubbo2.CircuitBreakerFilter
diff --git a/dubbo-filter-extensions/dubbo-filter-polaris-dubbo2/pom.xml
b/dubbo-filter-extensions/dubbo-filter-polaris-dubbo2/dubbo-filter-polaris-ratelimit-dubbo2/pom.xml
similarity index 59%
copy from dubbo-filter-extensions/dubbo-filter-polaris-dubbo2/pom.xml
copy to
dubbo-filter-extensions/dubbo-filter-polaris-dubbo2/dubbo-filter-polaris-ratelimit-dubbo2/pom.xml
index 65b677f..88669eb 100644
--- a/dubbo-filter-extensions/dubbo-filter-polaris-dubbo2/pom.xml
+++
b/dubbo-filter-extensions/dubbo-filter-polaris-dubbo2/dubbo-filter-polaris-ratelimit-dubbo2/pom.xml
@@ -19,28 +19,12 @@
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
- <artifactId>dubbo-filter-extensions</artifactId>
+ <artifactId>dubbo-filter-polaris-dubbo2</artifactId>
<groupId>org.apache.dubbo.extensions</groupId>
- <version>${revision}</version>
- <relativePath>../pom.xml</relativePath>
+ <version>1.0.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
- <artifactId>dubbo-filter-polaris-dubbo2</artifactId>
- <name>dubbo-filter-polaris-dubbo2</name>
- <version>1.0.0-SNAPSHOT</version>
- <description>Dubbo2 filter extension for PolarisMesh, support
circuitbreaking, ratelimit, metric capabilities.</description>
+ <artifactId>dubbo-filter-polaris-ratelimit-dubbo2</artifactId>
- <dependencies>
- <dependency>
- <groupId>org.apache.dubbo</groupId>
- <artifactId>dubbo</artifactId>
- <version>2.7.18</version>
- <optional>true</optional>
- </dependency>
- <dependency>
- <groupId>com.tencent.polaris</groupId>
- <artifactId>polaris-adapter-dubbo</artifactId>
- </dependency>
- </dependencies>
</project>
diff --git
a/dubbo-filter-extensions/dubbo-filter-polaris-dubbo2/src/main/java/org/apache/dubbo/filter/dubbo2/RateLimitFilter.java
b/dubbo-filter-extensions/dubbo-filter-polaris-dubbo2/dubbo-filter-polaris-ratelimit-dubbo2/src/main/java/org/apache/dubbo/filter/dubbo2/RateLimitFilter.java
similarity index 100%
rename from
dubbo-filter-extensions/dubbo-filter-polaris-dubbo2/src/main/java/org/apache/dubbo/filter/dubbo2/RateLimitFilter.java
rename to
dubbo-filter-extensions/dubbo-filter-polaris-dubbo2/dubbo-filter-polaris-ratelimit-dubbo2/src/main/java/org/apache/dubbo/filter/dubbo2/RateLimitFilter.java
diff --git
a/dubbo-filter-extensions/dubbo-filter-polaris-dubbo2/dubbo-filter-polaris-ratelimit-dubbo2/src/main/resources/META-INF/dubbo/org.apache.dubbo.rpc.Filter
b/dubbo-filter-extensions/dubbo-filter-polaris-dubbo2/dubbo-filter-polaris-ratelimit-dubbo2/src/main/resources/META-INF/dubbo/org.apache.dubbo.rpc.Filter
new file mode 100644
index 0000000..b4ea5c2
--- /dev/null
+++
b/dubbo-filter-extensions/dubbo-filter-polaris-dubbo2/dubbo-filter-polaris-ratelimit-dubbo2/src/main/resources/META-INF/dubbo/org.apache.dubbo.rpc.Filter
@@ -0,0 +1 @@
+polaris_ratelimit=org.apache.dubbo.filter.dubbo2.RateLimitFilter
diff --git a/dubbo-filter-extensions/dubbo-filter-polaris-dubbo2/pom.xml
b/dubbo-filter-extensions/dubbo-filter-polaris-dubbo2/pom.xml
index 65b677f..bb845ac 100644
--- a/dubbo-filter-extensions/dubbo-filter-polaris-dubbo2/pom.xml
+++ b/dubbo-filter-extensions/dubbo-filter-polaris-dubbo2/pom.xml
@@ -27,9 +27,14 @@
<modelVersion>4.0.0</modelVersion>
<artifactId>dubbo-filter-polaris-dubbo2</artifactId>
+ <packaging>pom</packaging>
<name>dubbo-filter-polaris-dubbo2</name>
<version>1.0.0-SNAPSHOT</version>
<description>Dubbo2 filter extension for PolarisMesh, support
circuitbreaking, ratelimit, metric capabilities.</description>
+ <modules>
+ <module>dubbo-filter-polaris-circuitbreaker-dubbo2</module>
+ <module>dubbo-filter-polaris-ratelimit-dubbo2</module>
+ </modules>
<dependencies>
<dependency>
diff --git
a/dubbo-filter-extensions/dubbo-filter-polaris-dubbo2/src/main/resources/META-INF/dubbo/org.apache.dubbo.rpc.Filter
b/dubbo-filter-extensions/dubbo-filter-polaris-dubbo2/src/main/resources/META-INF/dubbo/org.apache.dubbo.rpc.Filter
deleted file mode 100644
index 2fb8a58..0000000
---
a/dubbo-filter-extensions/dubbo-filter-polaris-dubbo2/src/main/resources/META-INF/dubbo/org.apache.dubbo.rpc.Filter
+++ /dev/null
@@ -1,3 +0,0 @@
-polaris_report=org.apache.dubbo.filter.dubbo2.ReportFilter
-polaris_circuitbreaker=org.apache.dubbo.filter.dubbo2.CircuitBreakerFilter
-polaris_ratelimit=org.apache.dubbo.filter.dubbo2.RateLimitFilter
\ No newline at end of file
diff --git
a/dubbo-registry-extensions/dubbo-registry-polaris/src/main/java/org/apache/dubbo/registry/polaris/PolarisRegistryServiceDiscovery.java
b/dubbo-registry-extensions/dubbo-registry-polaris/src/main/java/org/apache/dubbo/registry/polaris/PolarisRegistryServiceDiscovery.java
deleted file mode 100644
index 034da73..0000000
---
a/dubbo-registry-extensions/dubbo-registry-polaris/src/main/java/org/apache/dubbo/registry/polaris/PolarisRegistryServiceDiscovery.java
+++ /dev/null
@@ -1,227 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * 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 org.apache.dubbo.registry.polaris;
-
-import com.tencent.polaris.api.listener.ServiceListener;
-import com.tencent.polaris.api.pojo.Instance;
-import com.tencent.polaris.api.pojo.ServiceInfo;
-import com.tencent.polaris.common.registry.Consts;
-import com.tencent.polaris.common.registry.ConvertUtils;
-import com.tencent.polaris.common.registry.PolarisOperator;
-import com.tencent.polaris.common.utils.ExtensionConsts;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.concurrent.ConcurrentHashMap;
-import org.apache.dubbo.common.URL;
-import org.apache.dubbo.common.constants.CommonConstants;
-import org.apache.dubbo.common.extension.ExtensionLoader;
-import org.apache.dubbo.common.logger.Logger;
-import org.apache.dubbo.common.logger.LoggerFactory;
-import org.apache.dubbo.common.utils.ConcurrentHashSet;
-import org.apache.dubbo.common.utils.StringUtils;
-import org.apache.dubbo.metadata.MetadataInfo;
-import org.apache.dubbo.registry.client.AbstractServiceDiscovery;
-import org.apache.dubbo.registry.client.DefaultServiceInstance;
-import org.apache.dubbo.registry.client.ServiceInstance;
-import org.apache.dubbo.registry.client.event.ServiceInstancesChangedEvent;
-import
org.apache.dubbo.registry.client.event.listener.ServiceInstancesChangedListener;
-import org.apache.dubbo.registry.polaris.task.FetchTask;
-import org.apache.dubbo.registry.polaris.task.InstancesHandler;
-import org.apache.dubbo.registry.polaris.task.TaskScheduler;
-import org.apache.dubbo.registry.polaris.task.WatchTask;
-import org.apache.dubbo.rpc.Filter;
-import org.apache.dubbo.rpc.cluster.Constants;
-import org.apache.dubbo.rpc.model.ApplicationModel;
-
-public class PolarisRegistryServiceDiscovery extends AbstractServiceDiscovery {
-
- private static final Logger LOGGER =
LoggerFactory.getLogger(PolarisRegistryServiceDiscovery.class);
-
- private final PolarisOperator polarisOperator;
-
- private static final TaskScheduler taskScheduler = new TaskScheduler();
-
- private final Set<ServiceInstance> registeredInstances = new
ConcurrentHashSet<>();
-
- private final Map<String, ServiceListener> serviceListeners = new
ConcurrentHashMap<>();
-
- private final boolean hasCircuitBreaker;
-
- public PolarisRegistryServiceDiscovery(ApplicationModel applicationModel,
URL registryURL) {
- super(applicationModel, registryURL);
- polarisOperator =
PolarisRegistryUtils.getOrCreatePolarisOperator(registryURL);
- ExtensionLoader<Filter> filterExtensionLoader =
applicationModel.getExtensionDirector()
- .getExtensionLoader(Filter.class);
- if (null != filterExtensionLoader) {
- hasCircuitBreaker =
filterExtensionLoader.hasExtension(ExtensionConsts.PLUGIN_CIRCUITBREAKER_NAME);
- } else {
- hasCircuitBreaker = false;
- }
- }
-
- @Override
- protected void doRegister(ServiceInstance serviceInstance) throws
RuntimeException {
- LOGGER.info(String.format(
- "[POLARIS] register %s to service %s",
serviceInstance.getAddress(), serviceInstance.getServiceName()));
- int weight = Constants.DEFAULT_WEIGHT;
- String weightValue = serviceInstance.getMetadata(Constants.WEIGHT_KEY);
- if (StringUtils.isNotBlank(weightValue)) {
- try {
- weight = Integer.parseInt(weightValue);
- } catch (Exception e) {
- LOGGER.warn(String.format("[POLARIS] fail to parse weight
value %s", weightValue));
- }
- }
- String applicationName =
serviceInstance.getMetadata(CommonConstants.APPLICATION_KEY);
- if (StringUtils.isBlank(applicationName)) {
- ApplicationModel applicationModel =
serviceInstance.getApplicationModel();
- if (null != applicationModel) {
- applicationName = applicationModel.getApplicationName();
- }
- serviceInstance.putExtendParam(CommonConstants.APPLICATION_KEY,
applicationName);
- }
- String version =
serviceInstance.getMetadata(CommonConstants.VERSION_KEY, "");
- polarisOperator.register(serviceInstance.getServiceName(),
serviceInstance.getHost(), serviceInstance.getPort(),
- "", version, weight, serviceInstance.getAllParams());
- registeredInstances.add(serviceInstance);
- }
-
- @Override
- protected void doUnregister(ServiceInstance serviceInstance) {
- LOGGER.info(String.format(
- "[POLARIS] unregister %s to service %s",
serviceInstance.getAddress(), serviceInstance.getServiceName()));
- polarisOperator.deregister(serviceInstance.getServiceName(),
serviceInstance.getHost(), serviceInstance.getPort());
- registeredInstances.remove(serviceInstance);
- }
-
- @Override
- protected void doDestroy() {
- for (ServiceInstance serviceInstance : registeredInstances) {
- doUnregister(serviceInstance);
- }
- PolarisRegistryUtils.removePolarisOperator(getUrl());
- polarisOperator.destroy();
- taskScheduler.destroy();
- }
-
- @Override
- public Set<String> getServices() {
- List<ServiceInfo> services = polarisOperator.getServices();
- Set<String> svcNames = new HashSet<>();
- for (ServiceInfo serviceInfo : services) {
- svcNames.add(serviceInfo.getService());
- }
- return svcNames;
- }
-
- @Override
- public List<ServiceInstance> getInstances(String serviceName) throws
NullPointerException {
- Instance[] availableInstances =
polarisOperator.getAvailableInstances(serviceName, !hasCircuitBreaker);
- List<ServiceInstance> instances = new ArrayList<>();
- for (Instance availableInstance : availableInstances) {
- instances.add(instanceToServiceInstance(availableInstance));
- }
- return instances;
- }
-
- @Override
- public void
addServiceInstancesChangedListener(ServiceInstancesChangedListener listener)
- throws NullPointerException, IllegalArgumentException {
- PolarisInstancesHandler polarisInstancesHandler = new
PolarisInstancesHandler(listener);
- for (String serviceName : listener.getServiceNames()) {
- LOGGER.info(String.format("[polaris] subscribe service: %s",
serviceName));
- FetchTask fetchTask = new FetchTask(serviceName,
polarisInstancesHandler, polarisOperator, !hasCircuitBreaker);
- taskScheduler.submitWatchTask(new WatchTask(serviceName,
fetchTask, taskScheduler));
- }
- }
-
- @Override
- public void
removeServiceInstancesChangedListener(ServiceInstancesChangedListener listener)
{
- for (String serviceName : listener.getServiceNames()) {
- LOGGER.info(String.format("[polaris] unsubscribe service: %s",
serviceName));
- ServiceListener serviceListener =
serviceListeners.remove(serviceName);
- if (null != serviceListener) {
- polarisOperator.unwatchService(serviceName, serviceListener);
- }
- }
- }
-
- private ServiceInstance instanceToServiceInstance(Instance instance) {
- ServiceInstance serviceInstance = new DefaultServiceInstance(
- instance.getService(), instance.getHost(), instance.getPort(),
applicationModel);
- Map<String, String> newMetadata = new
HashMap<>(instance.getMetadata());
- boolean hasWeight = false;
- if (newMetadata.containsKey(Constants.WEIGHT_KEY)) {
- String weightStr = newMetadata.get(Constants.WEIGHT_KEY);
- try {
- int weightValue = Integer.parseInt(weightStr);
- if (weightValue == instance.getWeight()) {
- hasWeight = true;
- }
- } catch (Exception ignored) {
- }
- }
- if (!hasWeight) {
- newMetadata.put(Constants.WEIGHT_KEY,
Integer.toString(instance.getWeight()));
- }
- String applicationName =
newMetadata.getOrDefault(CommonConstants.APPLICATION_KEY, "" );
- MetadataInfo.ServiceInfo serviceInfo = new MetadataInfo.ServiceInfo(
- instance.getService(), CommonConstants.ANY_VALUE,
- instance.getVersion(),
- instance.getProtocol(), instance.getPort(),
- newMetadata.getOrDefault(CommonConstants.PATH_KEY, ""),
newMetadata);
- Map<String, MetadataInfo.ServiceInfo> serviceInfoMap = new HashMap<>();
- serviceInfoMap.put(instance.getService(), serviceInfo);
- MetadataInfo metadataInfo = new MetadataInfo(applicationName,
instance.getRevision(), serviceInfoMap);
- serviceInstance.setServiceMetadata(metadataInfo);
- serviceInstance.getMetadata().putAll(newMetadata);
-
- serviceInstance.putExtendParamIfAbsent(Consts.INSTANCE_KEY_ID,
instance.getId());
- serviceInstance.putExtendParamIfAbsent(Consts.INSTANCE_KEY_HEALTHY,
Boolean.toString(instance.isHealthy()));
- serviceInstance.putExtendParamIfAbsent(Consts.INSTANCE_KEY_ISOLATED,
Boolean.toString(instance.isIsolated()));
-
serviceInstance.putExtendParamIfAbsent(Consts.INSTANCE_KEY_CIRCUIT_BREAKER,
ConvertUtils.circuitBreakersToString(instance));
- return serviceInstance;
- }
-
- private class PolarisInstancesHandler implements InstancesHandler {
-
- private final ServiceInstancesChangedListener listener;
-
- public PolarisInstancesHandler(ServiceInstancesChangedListener
listener) {
- this.listener = listener;
- }
-
- @Override
- public void onInstances(String serviceName, Instance[] instances) {
- List<ServiceInstance> serviceInstances = new ArrayList<>();
- for (Instance instance : instances) {
- serviceInstances.add(instanceToServiceInstance(instance));
- }
- listener.onEvent(new ServiceInstancesChangedEvent(serviceName,
serviceInstances));
- }
-
- @Override
- public void onWatchSuccess(String serviceName, ServiceListener
serviceListener) {
- serviceListeners.put(serviceName, serviceListener);
- }
- }
-}
diff --git
a/dubbo-registry-extensions/dubbo-registry-polaris/src/main/java/org/apache/dubbo/registry/polaris/PolarisServiceDiscoveryFactory.java
b/dubbo-registry-extensions/dubbo-registry-polaris/src/main/java/org/apache/dubbo/registry/polaris/PolarisServiceDiscoveryFactory.java
deleted file mode 100644
index 52f9e3a..0000000
---
a/dubbo-registry-extensions/dubbo-registry-polaris/src/main/java/org/apache/dubbo/registry/polaris/PolarisServiceDiscoveryFactory.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * 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 org.apache.dubbo.registry.polaris;
-
-import org.apache.dubbo.common.URL;
-import org.apache.dubbo.registry.client.AbstractServiceDiscoveryFactory;
-import org.apache.dubbo.registry.client.ServiceDiscovery;
-
-public class PolarisServiceDiscoveryFactory extends
AbstractServiceDiscoveryFactory {
-
- @Override
- protected ServiceDiscovery createDiscovery(URL registryURL) {
- return new PolarisRegistryServiceDiscovery(applicationModel,
registryURL);
- }
-}
diff --git
a/dubbo-filter-extensions/dubbo-filter-polaris-dubbo2/src/main/java/org/apache/dubbo/filter/dubbo2/ReportFilter.java
b/dubbo-registry-extensions/dubbo-registry-polaris/src/main/java/org/apache/dubbo/registry/polaris/filter/ReportFilter.java
similarity index 98%
rename from
dubbo-filter-extensions/dubbo-filter-polaris-dubbo2/src/main/java/org/apache/dubbo/filter/dubbo2/ReportFilter.java
rename to
dubbo-registry-extensions/dubbo-registry-polaris/src/main/java/org/apache/dubbo/registry/polaris/filter/ReportFilter.java
index 78a81d7..8449db6 100644
---
a/dubbo-filter-extensions/dubbo-filter-polaris-dubbo2/src/main/java/org/apache/dubbo/filter/dubbo2/ReportFilter.java
+++
b/dubbo-registry-extensions/dubbo-registry-polaris/src/main/java/org/apache/dubbo/registry/polaris/filter/ReportFilter.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.dubbo.filter.dubbo2;
+package org.apache.dubbo.registry.polaris.filter;
import com.tencent.polaris.api.pojo.RetStatus;
diff --git
a/dubbo-registry-extensions/dubbo-registry-polaris/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.registry.client.ServiceDiscoveryFactory
b/dubbo-registry-extensions/dubbo-registry-polaris/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.registry.client.ServiceDiscoveryFactory
deleted file mode 100644
index e2e23c9..0000000
---
a/dubbo-registry-extensions/dubbo-registry-polaris/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.registry.client.ServiceDiscoveryFactory
+++ /dev/null
@@ -1 +0,0 @@
-polaris=org.apache.dubbo.registry.polaris.PolarisServiceDiscoveryFactory
\ No newline at end of file
diff --git
a/dubbo-registry-extensions/dubbo-registry-polaris/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.Filter
b/dubbo-registry-extensions/dubbo-registry-polaris/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.Filter
new file mode 100644
index 0000000..8169e69
--- /dev/null
+++
b/dubbo-registry-extensions/dubbo-registry-polaris/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.Filter
@@ -0,0 +1 @@
+polaris_report=org.apache.dubbo.registry.polaris.filter.ReportFilter
diff --git
a/dubbo-registry-extensions/dubbo-registry-polaris/src/test/java/org/apache/dubbo/registry/polaris/PolarisRegistryServiceDiscoveryTest.java
b/dubbo-registry-extensions/dubbo-registry-polaris/src/test/java/org/apache/dubbo/registry/polaris/PolarisRegistryServiceDiscoveryTest.java
deleted file mode 100644
index 084370e..0000000
---
a/dubbo-registry-extensions/dubbo-registry-polaris/src/test/java/org/apache/dubbo/registry/polaris/PolarisRegistryServiceDiscoveryTest.java
+++ /dev/null
@@ -1,152 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * 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 org.apache.dubbo.registry.polaris;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.concurrent.atomic.AtomicBoolean;
-import org.apache.dubbo.common.URL;
-import org.apache.dubbo.common.utils.NetUtils;
-import org.apache.dubbo.common.utils.StringUtils;
-import org.apache.dubbo.config.ApplicationConfig;
-import org.apache.dubbo.registry.NotifyListener;
-import org.apache.dubbo.registry.client.DefaultServiceInstance;
-import org.apache.dubbo.registry.client.ServiceInstance;
-import
org.apache.dubbo.registry.client.event.listener.ServiceInstancesChangedListener;
-import org.apache.dubbo.rpc.model.ApplicationModel;
-import org.apache.dubbo.rpc.model.FrameworkModel;
-import org.junit.jupiter.api.AfterAll;
-import org.junit.jupiter.api.Assertions;
-import org.junit.jupiter.api.BeforeAll;
-import org.junit.jupiter.api.Test;
-
-public class PolarisRegistryServiceDiscoveryTest {
-
- private static PolarisRegistryServiceDiscovery
polarisRegistryServiceDiscovery;
-
- private static ApplicationModel applicationModel;
-
- @BeforeAll
- public static void setup() {
- Map<String, String> parameters = new HashMap<>();
- parameters.put("namespace", "dubbo-java-test");
- parameters.put("persist_enable", "false");
- URL url = new URL("polaris", "183.47.111.80", 8091, parameters);
- applicationModel = FrameworkModel.defaultModel().newApplication();
- applicationModel.getApplicationConfigManager().setApplication(new
ApplicationConfig("Test"));
- polarisRegistryServiceDiscovery = new
PolarisRegistryServiceDiscovery(applicationModel, url);
- }
-
- @AfterAll
- public static void teardown() {
- if (null != polarisRegistryServiceDiscovery) {
- polarisRegistryServiceDiscovery.doDestroy();
- }
- }
-
- @Test
- public void testRegister() {
- int count = 10;
- String svcName = "polaris-registry-test-service-register";
- String host = NetUtils.getLocalHost();
- List<ServiceInstance> serviceInstances = buildInstanceUrls(svcName,
host, 11300, count);
- for (ServiceInstance serviceInstance : serviceInstances) {
- polarisRegistryServiceDiscovery.doRegister(serviceInstance);
- }
- try {
- Thread.sleep(5000);
- } catch (InterruptedException e) {
- e.printStackTrace();
- }
- try {
- List<ServiceInstance> instances =
polarisRegistryServiceDiscovery.getInstances(svcName);
- Assertions.assertEquals(count, countInstanceByHost(host,
instances));
- } finally {
- for (ServiceInstance serviceInstance : serviceInstances) {
- polarisRegistryServiceDiscovery.doUnregister(serviceInstance);
- }
- }
- }
-
- private static List<ServiceInstance> buildInstanceUrls(String service,
String host, int startPort, int count) {
- List<ServiceInstance> serviceUrls = new ArrayList<>();
- for (int i = 0; i < count; i++) {
- ServiceInstance serviceInstance = new
DefaultServiceInstance(service, host, startPort + i, applicationModel);
- serviceUrls.add(serviceInstance);
- }
- return serviceUrls;
- }
-
- @Test
- public void testSubscribe() {
- int count = 10;
- AtomicBoolean notified = new AtomicBoolean(false);
- String svcName = "polaris-registry-test-service-subscribe";
- Set<String> services = new HashSet<>();
- services.add(svcName);
- ServiceInstancesChangedListener serviceInstancesChangedListener = new
ServiceInstancesChangedListener(services, polarisRegistryServiceDiscovery);
- URL consumerUrl = URL.valueOf("consumer://0.0.0.0/" + svcName);
- NotifyListener listener = new NotifyListener() {
- @Override
- public void notify(List<URL> urls) {
- notified.set(true);
- //notifiedCount.set(urls.size());
- }
-
- public ServiceInstancesChangedListener getServiceListener() {
- return serviceInstancesChangedListener;
- }
-
- public URL getConsumerUrl() {
- return consumerUrl;
- }
- };
- String host = NetUtils.getLocalHost();
- serviceInstancesChangedListener.addListenerAndNotify(consumerUrl,
listener);
-
polarisRegistryServiceDiscovery.addServiceInstancesChangedListener(serviceInstancesChangedListener);
- List<ServiceInstance> instances = buildInstanceUrls(svcName, host,
11300, count);
- for (ServiceInstance instance : instances) {
- polarisRegistryServiceDiscovery.doRegister(instance);
- }
- try {
- Thread.sleep(5000);
- } catch (InterruptedException e) {
- e.printStackTrace();
- }
-
polarisRegistryServiceDiscovery.removeServiceInstancesChangedListener(serviceInstancesChangedListener);
- Assertions.assertTrue(notified.get());
- //Assertions.assertEquals(count, notifiedCount.get());
- for (ServiceInstance serviceInstance : instances) {
- polarisRegistryServiceDiscovery.doUnregister(serviceInstance);
- }
- }
-
- private static int countInstanceByHost(String host, List<ServiceInstance>
instances) {
- int count = 0;
- for (ServiceInstance instance : instances) {
- if (StringUtils.isEquals(host, instance.getHost())) {
- count++;
- }
- }
- return count;
- }
-}