This is an automated email from the ASF dual-hosted git repository.
liujun pushed a commit to branch 3.0-metadata-refactor
in repository https://gitbox.apache.org/repos/asf/dubbo.git
The following commit(s) were added to refs/heads/3.0-metadata-refactor by this
push:
new 3896358 improve service discovery interface
3896358 is described below
commit 38963585713c315f3f804894ea54f50a6f66399c
Author: ken.lj <[email protected]>
AuthorDate: Tue Dec 7 23:28:28 2021 +0800
improve service discovery interface
---
.../dubbo/config/metadata/MetadataServiceDelegation.java | 10 +++++-----
.../org/apache/dubbo/metadata/AbstractServiceNameMapping.java | 5 +++++
.../java/org/apache/dubbo/metadata/ServiceNameMapping.java | 3 +++
.../apache/dubbo/registry/client/AbstractServiceDiscovery.java | 7 ++++++-
.../org/apache/dubbo/registry/client/ServiceDiscovery.java | 4 +++-
.../apache/dubbo/registry/client/metadata/MetadataUtils.java | 7 +++----
.../dubbo/registry/multiple/MultipleServiceDiscovery.java | 7 ++++++-
7 files changed, 31 insertions(+), 12 deletions(-)
diff --git
a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/metadata/MetadataServiceDelegation.java
b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/metadata/MetadataServiceDelegation.java
index 6b36532..d7d12f7 100644
---
a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/metadata/MetadataServiceDelegation.java
+++
b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/metadata/MetadataServiceDelegation.java
@@ -88,7 +88,7 @@ public class MetadataServiceDelegation implements
MetadataService, Disposable {
SortedSet<URL> bizURLs = new TreeSet<>(URLComparator.INSTANCE);
List<ServiceDiscovery> serviceDiscoveries =
registryManager.getServiceDiscoveries();
for (ServiceDiscovery sd : serviceDiscoveries) {
- MetadataInfo metadataInfo = sd.getMetadata();
+ MetadataInfo metadataInfo = sd.getLocalMetadata();
Map<String, SortedSet<URL>> serviceURLs =
metadataInfo.getExportedServiceURLs();
for (Map.Entry<String, SortedSet<URL>> entry :
serviceURLs.entrySet()) {
SortedSet<URL> urls = entry.getValue();
@@ -108,7 +108,7 @@ public class MetadataServiceDelegation implements
MetadataService, Disposable {
SortedSet<URL> bizURLs = new TreeSet<>(URLComparator.INSTANCE);
List<ServiceDiscovery> serviceDiscoveries =
registryManager.getServiceDiscoveries();
for (ServiceDiscovery sd : serviceDiscoveries) {
- MetadataInfo metadataInfo = sd.getMetadata();
+ MetadataInfo metadataInfo = sd.getLocalMetadata();
Map<String, SortedSet<URL>> serviceURLs =
metadataInfo.getSubscribedServiceURLs();
for (Map.Entry<String, SortedSet<URL>> entry :
serviceURLs.entrySet()) {
SortedSet<URL> urls = entry.getValue();
@@ -137,7 +137,7 @@ public class MetadataServiceDelegation implements
MetadataService, Disposable {
List<ServiceDiscovery> serviceDiscoveries =
registryManager.getServiceDiscoveries();
Map<String, SortedSet<URL>> allServiceURLs = new HashMap<>();
for (ServiceDiscovery sd : serviceDiscoveries) {
- MetadataInfo metadataInfo = sd.getMetadata();
+ MetadataInfo metadataInfo = sd.getLocalMetadata();
Map<String, SortedSet<URL>> serviceURLs =
metadataInfo.getExportedServiceURLs();
allServiceURLs.putAll(serviceURLs);
}
@@ -171,7 +171,7 @@ public class MetadataServiceDelegation implements
MetadataService, Disposable {
}
for (ServiceDiscovery sd : registryManager.getServiceDiscoveries()) {
- MetadataInfo metadataInfo = sd.getMetadata();
+ MetadataInfo metadataInfo = sd.getLocalMetadata();
if (revision.equals(metadataInfo.calAndGetRevision())) {
return metadataInfo;
}
@@ -187,7 +187,7 @@ public class MetadataServiceDelegation implements
MetadataService, Disposable {
public List<MetadataInfo> getMetadataInfos() {
List<MetadataInfo> metadataInfos = new ArrayList<>();
for (ServiceDiscovery sd : registryManager.getServiceDiscoveries()) {
- metadataInfos.add(sd.getMetadata());
+ metadataInfos.add(sd.getLocalMetadata());
}
return metadataInfos;
}
diff --git
a/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/AbstractServiceNameMapping.java
b/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/AbstractServiceNameMapping.java
index 843529a..e18d789 100644
---
a/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/AbstractServiceNameMapping.java
+++
b/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/AbstractServiceNameMapping.java
@@ -24,6 +24,7 @@ import org.apache.dubbo.common.utils.StringUtils;
import org.apache.dubbo.rpc.model.ApplicationModel;
import org.apache.dubbo.rpc.model.ScopeModelAware;
+import java.util.Collections;
import java.util.Map;
import java.util.Set;
import java.util.TreeSet;
@@ -181,4 +182,8 @@ public abstract class AbstractServiceNameMapping implements
ServiceNameMapping,
return serviceToAppsMapping.remove(serviceKey);
}
+ @Override
+ public Map<String, Set<String>> getCachedMapping() {
+ return Collections.unmodifiableMap(serviceToAppsMapping);
+ }
}
diff --git
a/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/ServiceNameMapping.java
b/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/ServiceNameMapping.java
index 6e88b7c..ab923e7 100644
---
a/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/ServiceNameMapping.java
+++
b/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/ServiceNameMapping.java
@@ -24,6 +24,7 @@ import org.apache.dubbo.rpc.model.ScopeModel;
import org.apache.dubbo.rpc.model.ScopeModelUtil;
import java.util.Arrays;
+import java.util.Map;
import java.util.Set;
import java.util.TreeSet;
@@ -113,5 +114,7 @@ public interface ServiceNameMapping {
Set<String> getCachedMapping(URL consumerURL);
+ Map<String, Set<String>> getCachedMapping();
+
Set<String> removeCachedMapping(String serviceKey);
}
diff --git
a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/AbstractServiceDiscovery.java
b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/AbstractServiceDiscovery.java
index 203f528..e86a6c6 100644
---
a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/AbstractServiceDiscovery.java
+++
b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/AbstractServiceDiscovery.java
@@ -129,7 +129,7 @@ public abstract class AbstractServiceDiscovery implements
ServiceDiscovery {
}
@Override
- public MetadataInfo getMetadata() {
+ public MetadataInfo getLocalMetadata() {
return this.metadataInfo;
}
@@ -176,6 +176,11 @@ public abstract class AbstractServiceDiscovery implements
ServiceDiscovery {
}
@Override
+ public MetadataInfo getRemoteMetadata(String revision) {
+ return metaCacheManager.get(revision);
+ }
+
+ @Override
public final void destroy() throws Exception {
isDestroy = true;
metaCacheManager.destroy();
diff --git
a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/ServiceDiscovery.java
b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/ServiceDiscovery.java
index e9867cc..9a9d64f 100644
---
a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/ServiceDiscovery.java
+++
b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/ServiceDiscovery.java
@@ -67,7 +67,9 @@ public interface ServiceDiscovery extends RegistryService,
Prioritized {
ServiceInstance getLocalInstance();
- MetadataInfo getMetadata();
+ MetadataInfo getLocalMetadata();
+
+ MetadataInfo getRemoteMetadata(String revision);
MetadataInfo getRemoteMetadata(String revision, ServiceInstance instance);
diff --git
a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/metadata/MetadataUtils.java
b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/metadata/MetadataUtils.java
index ef97a21..777da91 100644
---
a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/metadata/MetadataUtils.java
+++
b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/metadata/MetadataUtils.java
@@ -145,7 +145,7 @@ public class MetadataUtils {
logger.debug("Instance " + instance.getAddress() + " is using
metadata type " + metadataType);
}
if (REMOTE_METADATA_STORAGE_TYPE.equals(metadataType)) {
- metadataInfo = MetadataUtils.getMetadata(instance,
metadataReport);
+ metadataInfo = MetadataUtils.getMetadata(revision, instance,
metadataReport);
} else {
// change the instance used to communicate to avoid all
requests route to the same instance
MetadataService metadataServiceProxy =
MetadataUtils.getMetadataServiceProxy(instance);
@@ -162,9 +162,8 @@ public class MetadataUtils {
return metadataInfo;
}
- public static MetadataInfo getMetadata(ServiceInstance instance,
MetadataReport metadataReport) {
- SubscriberMetadataIdentifier identifier = new
SubscriberMetadataIdentifier(instance.getServiceName(),
-
ServiceInstanceMetadataUtils.getExportedServicesRevision(instance));
+ public static MetadataInfo getMetadata(String revision, ServiceInstance
instance, MetadataReport metadataReport) {
+ SubscriberMetadataIdentifier identifier = new
SubscriberMetadataIdentifier(instance.getServiceName(), revision);
if (metadataReport == null) {
throw new IllegalStateException("No valid remote metadata report
specified.");
diff --git
a/dubbo-registry/dubbo-registry-multiple/src/main/java/org/apache/dubbo/registry/multiple/MultipleServiceDiscovery.java
b/dubbo-registry/dubbo-registry-multiple/src/main/java/org/apache/dubbo/registry/multiple/MultipleServiceDiscovery.java
index 361014c..78bf081 100644
---
a/dubbo-registry/dubbo-registry-multiple/src/main/java/org/apache/dubbo/registry/multiple/MultipleServiceDiscovery.java
+++
b/dubbo-registry/dubbo-registry-multiple/src/main/java/org/apache/dubbo/registry/multiple/MultipleServiceDiscovery.java
@@ -133,7 +133,12 @@ public class MultipleServiceDiscovery implements
ServiceDiscovery {
}
@Override
- public MetadataInfo getMetadata() {
+ public MetadataInfo getLocalMetadata() {
+ throw new UnsupportedOperationException("Multiple registry
implementation does not support getMetadata() method.");
+ }
+
+ @Override
+ public MetadataInfo getRemoteMetadata(String revision) {
throw new UnsupportedOperationException("Multiple registry
implementation does not support getMetadata() method.");
}