You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dubbo.apache.org by al...@apache.org on 2021/09/27 11:20:59 UTC

[dubbo] branch 3.0 updated: optimize Multiple some code (#8900)

This is an automated email from the ASF dual-hosted git repository.

albumenj pushed a commit to branch 3.0
in repository https://gitbox.apache.org/repos/asf/dubbo.git


The following commit(s) were added to refs/heads/3.0 by this push:
     new 10b3be9  optimize Multiple some code (#8900)
10b3be9 is described below

commit 10b3be9b8ac1828b671a198cb88d586d174b29d0
Author: Wang Chengming <63...@qq.com>
AuthorDate: Mon Sep 27 19:20:50 2021 +0800

    optimize Multiple some code (#8900)
---
 .../dubbo/registry/multiple/MultipleRegistry.java  | 33 +++++++++++-----------
 .../multiple/MultipleServiceDiscovery.java         | 21 ++++++++------
 2 files changed, 29 insertions(+), 25 deletions(-)

diff --git a/dubbo-registry/dubbo-registry-multiple/src/main/java/org/apache/dubbo/registry/multiple/MultipleRegistry.java b/dubbo-registry/dubbo-registry-multiple/src/main/java/org/apache/dubbo/registry/multiple/MultipleRegistry.java
index 4ee590e..a4ed56b 100644
--- a/dubbo-registry/dubbo-registry-multiple/src/main/java/org/apache/dubbo/registry/multiple/MultipleRegistry.java
+++ b/dubbo-registry/dubbo-registry-multiple/src/main/java/org/apache/dubbo/registry/multiple/MultipleRegistry.java
@@ -42,17 +42,16 @@ public class MultipleRegistry extends AbstractRegistry {
 
     public static final String REGISTRY_FOR_SERVICE = "service-registry";
     public static final String REGISTRY_FOR_REFERENCE = "reference-registry";
-
-    protected RegistryFactory registryFactory;
     private final Map<String, Registry> serviceRegistries = new ConcurrentHashMap<>(4);
-    private final Map<String, Registry> referenceRegistries = new ConcurrentHashMap<String, Registry>(4);
-    private final Map<NotifyListener, MultipleNotifyListenerWrapper> multipleNotifyListenerMap = new ConcurrentHashMap<NotifyListener, MultipleNotifyListenerWrapper>(32);
+    private final Map<String, Registry> referenceRegistries = new ConcurrentHashMap<>(4);
+    private final Map<NotifyListener, MultipleNotifyListenerWrapper> multipleNotifyListenerMap = new ConcurrentHashMap<>(32);
+    private final URL registryUrl;
+    private final String applicationName;
+    protected RegistryFactory registryFactory;
     protected List<String> origServiceRegistryURLs;
     protected List<String> origReferenceRegistryURLs;
     protected List<String> effectServiceRegistryURLs;
     protected List<String> effectReferenceRegistryURLs;
-    private URL registryUrl;
-    private String applicationName;
 
     public MultipleRegistry(URL url) {
         this(url, true, true);
@@ -61,7 +60,7 @@ public class MultipleRegistry extends AbstractRegistry {
         boolean defaultRegistry = url.getParameter(CommonConstants.DEFAULT_KEY, true);
         if (defaultRegistry && effectServiceRegistryURLs.isEmpty() && effectReferenceRegistryURLs.isEmpty()) {
             throw new IllegalArgumentException("Illegal registry url. You need to configure parameter " +
-                    REGISTRY_FOR_SERVICE + " or " + REGISTRY_FOR_REFERENCE);
+                REGISTRY_FOR_SERVICE + " or " + REGISTRY_FOR_REFERENCE);
         }
     }
 
@@ -73,7 +72,7 @@ public class MultipleRegistry extends AbstractRegistry {
 
         init();
         checkApplicationName(this.applicationName);
-        // This urls contain parameter and it donot inherit from the parameter of url in MultipleRegistry
+        // This urls contain parameter, and it does not inherit from the parameter of url in MultipleRegistry
 
         Map<String, Registry> registryMap = new HashMap<>();
         if (initServiceRegistry) {
@@ -85,7 +84,7 @@ public class MultipleRegistry extends AbstractRegistry {
     }
 
     protected void initServiceRegistry(URL url, Map<String, Registry> registryMap) {
-        origServiceRegistryURLs = url.getParameter(REGISTRY_FOR_SERVICE, new ArrayList<String>());
+        origServiceRegistryURLs = url.getParameter(REGISTRY_FOR_SERVICE, new ArrayList<>());
         effectServiceRegistryURLs = this.filterServiceRegistry(origServiceRegistryURLs);
         for (String tmpUrl : effectServiceRegistryURLs) {
             if (registryMap.get(tmpUrl) != null) {
@@ -99,7 +98,7 @@ public class MultipleRegistry extends AbstractRegistry {
     }
 
     protected void initReferenceRegistry(URL url, Map<String, Registry> registryMap) {
-        origReferenceRegistryURLs = url.getParameter(REGISTRY_FOR_REFERENCE, new ArrayList<String>());
+        origReferenceRegistryURLs = url.getParameter(REGISTRY_FOR_REFERENCE, new ArrayList<>());
         effectReferenceRegistryURLs = this.filterReferenceRegistry(origReferenceRegistryURLs);
         for (String tmpUrl : effectReferenceRegistryURLs) {
             if (registryMap.get(tmpUrl) != null) {
@@ -120,7 +119,7 @@ public class MultipleRegistry extends AbstractRegistry {
 
     @Override
     public boolean isAvailable() {
-        boolean available = serviceRegistries.isEmpty() ? true : false;
+        boolean available = serviceRegistries.isEmpty();
         for (Registry serviceRegistry : serviceRegistries.values()) {
             if (serviceRegistry.isAvailable()) {
                 available = true;
@@ -130,7 +129,7 @@ public class MultipleRegistry extends AbstractRegistry {
             return false;
         }
 
-        available = referenceRegistries.isEmpty() ? true : false;
+        available = referenceRegistries.isEmpty();
         for (Registry referenceRegistry : referenceRegistries.values()) {
             if (referenceRegistry.isAvailable()) {
                 available = true;
@@ -144,7 +143,7 @@ public class MultipleRegistry extends AbstractRegistry {
 
     @Override
     public void destroy() {
-        Set<Registry> registries = new HashSet<Registry>(serviceRegistries.values());
+        Set<Registry> registries = new HashSet<>(serviceRegistries.values());
         registries.addAll(referenceRegistries.values());
         for (Registry registry : registries) {
             registry.destroy();
@@ -195,7 +194,7 @@ public class MultipleRegistry extends AbstractRegistry {
 
     @Override
     public List<URL> lookup(URL url) {
-        List<URL> urls = new ArrayList<URL>();
+        List<URL> urls = new ArrayList<>();
         for (Registry registry : referenceRegistries.values()) {
             List<URL> tmpUrls = registry.lookup(url);
             if (!CollectionUtils.isEmpty(tmpUrls)) {
@@ -272,7 +271,7 @@ public class MultipleRegistry extends AbstractRegistry {
         }
 
         public synchronized void notifySourceListener() {
-            List<URL> notifyURLs = new ArrayList<URL>();
+            List<URL> notifyURLs = new ArrayList<>();
             URL emptyURL = null;
             for (SingleNotifyListener singleNotifyListener : registryMap.values()) {
                 List<URL> tmpUrls = singleNotifyListener.getUrlList();
@@ -281,8 +280,8 @@ public class MultipleRegistry extends AbstractRegistry {
                 }
                 // empty protocol
                 if (tmpUrls.size() == 1
-                        && tmpUrls.get(0) != null
-                        && EMPTY_PROTOCOL.equals(tmpUrls.get(0).getProtocol())) {
+                    && tmpUrls.get(0) != null
+                    && EMPTY_PROTOCOL.equals(tmpUrls.get(0).getProtocol())) {
                     // if only one empty
                     if (emptyURL == null) {
                         emptyURL = tmpUrls.get(0);
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 8ca95f6..cd09bed 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
@@ -36,6 +36,8 @@ import java.util.function.Function;
 
 public class MultipleServiceDiscovery implements ServiceDiscovery {
     public static final String REGISTRY_PREFIX_KEY = "child.";
+    private static final String REGISTRY_TYPE = "registry-type";
+    private static final String SERVICE = "service";
     private final Map<String, ServiceDiscovery> serviceDiscoveries = new ConcurrentHashMap<>();
     private URL registryURL;
     private ServiceInstance serviceInstance;
@@ -51,7 +53,7 @@ public class MultipleServiceDiscovery implements ServiceDiscovery {
         for (String key : parameters.keySet()) {
             if (key.startsWith(REGISTRY_PREFIX_KEY)) {
                 URL url = URL.valueOf(registryURL.getParameter(key)).addParameter(CommonConstants.APPLICATION_KEY, applicationName)
-                        .addParameter("registry-type", "service");
+                    .addParameter(REGISTRY_TYPE, SERVICE);
                 ServiceDiscovery serviceDiscovery = ServiceDiscoveryFactory.getExtension(url).getServiceDiscovery(url);
                 serviceDiscovery.initialize(url);
                 serviceDiscoveries.put(key, serviceDiscovery);
@@ -94,14 +96,14 @@ public class MultipleServiceDiscovery implements ServiceDiscovery {
     }
 
     @Override
-    public void addServiceInstancesChangedListener(ServiceInstancesChangedListener listener) throws NullPointerException, IllegalArgumentException {
+    public void addServiceInstancesChangedListener(ServiceInstancesChangedListener listener)
+        throws NullPointerException, IllegalArgumentException {
         MultiServiceInstancesChangedListener multiListener = (MultiServiceInstancesChangedListener) listener;
 
         for (String registryKey : serviceDiscoveries.keySet()) {
             ServiceDiscovery serviceDiscovery = serviceDiscoveries.get(registryKey);
-            SingleServiceInstancesChangedListener singleListener = multiListener.getAndComputeIfAbsent(registryKey, k -> {
-                return new SingleServiceInstancesChangedListener(listener.getServiceNames(), serviceDiscovery, multiListener);
-            });
+            SingleServiceInstancesChangedListener singleListener = multiListener.getAndComputeIfAbsent(registryKey, k ->
+                new SingleServiceInstancesChangedListener(listener.getServiceNames(), serviceDiscovery, multiListener));
             serviceDiscovery.addServiceInstancesChangedListener(singleListener);
         }
     }
@@ -112,7 +114,8 @@ public class MultipleServiceDiscovery implements ServiceDiscovery {
     }
 
     @Override
-    public Page<ServiceInstance> getInstances(String serviceName, int offset, int pageSize, boolean healthyOnly) throws NullPointerException, IllegalArgumentException, UnsupportedOperationException {
+    public Page<ServiceInstance> getInstances(String serviceName, int offset, int pageSize, boolean healthyOnly)
+        throws NullPointerException, IllegalArgumentException, UnsupportedOperationException {
 
         List<ServiceInstance> serviceInstanceList = new ArrayList<>();
         for (ServiceDiscovery serviceDiscovery : serviceDiscoveries.values()) {
@@ -165,7 +168,8 @@ public class MultipleServiceDiscovery implements ServiceDiscovery {
             singleListenerMap.put(registryKey, singleListener);
         }
 
-        public SingleServiceInstancesChangedListener getAndComputeIfAbsent(String registryKey, Function<String, SingleServiceInstancesChangedListener> func) {
+        public SingleServiceInstancesChangedListener getAndComputeIfAbsent(String registryKey,
+                                                                           Function<String, SingleServiceInstancesChangedListener> func) {
             return singleListenerMap.computeIfAbsent(registryKey, func);
         }
     }
@@ -174,7 +178,8 @@ public class MultipleServiceDiscovery implements ServiceDiscovery {
         private final MultiServiceInstancesChangedListener multiListener;
         volatile ServiceInstancesChangedEvent event;
 
-        public SingleServiceInstancesChangedListener(Set<String> serviceNames, ServiceDiscovery serviceDiscovery, MultiServiceInstancesChangedListener multiListener) {
+        public SingleServiceInstancesChangedListener(Set<String> serviceNames, ServiceDiscovery serviceDiscovery,
+                                                     MultiServiceInstancesChangedListener multiListener) {
             super(serviceNames, serviceDiscovery);
             this.multiListener = multiListener;
         }