change metadataIdentifier
diff --git a/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/controller/ServiceController.java b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/controller/ServiceController.java
index d29fef1..ddc8831 100644
--- a/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/controller/ServiceController.java
+++ b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/controller/ServiceController.java
@@ -28,7 +28,7 @@
 import org.apache.dubbo.common.Constants;
 import org.apache.dubbo.common.utils.StringUtils;
 import org.apache.dubbo.metadata.definition.model.FullServiceDefinition;
-import org.apache.dubbo.metadata.identifier.ProviderMetadataIdentifier;
+import org.apache.dubbo.metadata.identifier.MetadataIdentifier;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
@@ -112,10 +112,14 @@
         List<Consumer> consumers = consumerService.findByService(service);
 
         Map<String, String> info = ConvertUtil.serviceName2Map(service);
-        ProviderMetadataIdentifier p = new ProviderMetadataIdentifier(info.get(Constants.INTERFACE_KEY),
+        String application = null;
+        if (providers != null && providers.size() > 0) {
+            application = providers.get(0).getApplication();
+        }
+        MetadataIdentifier identifier = new MetadataIdentifier(info.get(Constants.INTERFACE_KEY),
                                                                       info.get(Constants.VERSION_KEY),
-                                                                      info.get(Constants.GROUP_KEY));
-        String metadata = providerService.getProviderMetaData(p);
+                                                                      info.get(Constants.GROUP_KEY), Constants.PROVIDER_SIDE, application);
+        String metadata = providerService.getProviderMetaData(identifier);
         Gson gson = new Gson();
         FullServiceDefinition serviceDefinition = gson.fromJson(metadata, FullServiceDefinition.class);
         ServiceDetailDTO serviceDetailDTO = new ServiceDetailDTO();
diff --git a/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/data/metadata/MetaDataCollector.java b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/data/metadata/MetaDataCollector.java
index 1bb5038..5b5e802 100644
--- a/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/data/metadata/MetaDataCollector.java
+++ b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/data/metadata/MetaDataCollector.java
@@ -19,8 +19,7 @@
 
 import org.apache.dubbo.common.URL;
 import org.apache.dubbo.common.extension.SPI;
-import org.apache.dubbo.metadata.identifier.ConsumerMetadataIdentifier;
-import org.apache.dubbo.metadata.identifier.ProviderMetadataIdentifier;
+import org.apache.dubbo.metadata.identifier.MetadataIdentifier;
 
 @SPI("zookeeper")
 public interface MetaDataCollector {
@@ -31,7 +30,7 @@
 
     void init();
 
-    String getProviderMetaData(ProviderMetadataIdentifier key);
+    String getProviderMetaData(MetadataIdentifier key);
 
-    String getConsumerMetaData(ConsumerMetadataIdentifier key);
+    String getConsumerMetaData(MetadataIdentifier key);
 }
diff --git a/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/data/metadata/impl/NoOpMetadataCollector.java b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/data/metadata/impl/NoOpMetadataCollector.java
index 1152041..8e561a6 100644
--- a/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/data/metadata/impl/NoOpMetadataCollector.java
+++ b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/data/metadata/impl/NoOpMetadataCollector.java
@@ -19,8 +19,7 @@
 
 import org.apache.dubbo.admin.data.metadata.MetaDataCollector;
 import org.apache.dubbo.common.URL;
-import org.apache.dubbo.metadata.identifier.ConsumerMetadataIdentifier;
-import org.apache.dubbo.metadata.identifier.ProviderMetadataIdentifier;
+import org.apache.dubbo.metadata.identifier.MetadataIdentifier;
 
 public class NoOpMetadataCollector implements MetaDataCollector {
 
@@ -40,12 +39,12 @@
     }
 
     @Override
-    public String getProviderMetaData(ProviderMetadataIdentifier key) {
+    public String getProviderMetaData(MetadataIdentifier key) {
         return null;
     }
 
     @Override
-    public String getConsumerMetaData(ConsumerMetadataIdentifier key) {
+    public String getConsumerMetaData(MetadataIdentifier key) {
         return null;
     }
 }
diff --git a/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/data/metadata/impl/RedisMetaDataCollector.java b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/data/metadata/impl/RedisMetaDataCollector.java
index 29b7396..b00238a 100644
--- a/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/data/metadata/impl/RedisMetaDataCollector.java
+++ b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/data/metadata/impl/RedisMetaDataCollector.java
@@ -20,9 +20,7 @@
 
 import org.apache.dubbo.admin.data.metadata.MetaDataCollector;
 import org.apache.dubbo.common.URL;
-import org.apache.dubbo.metadata.identifier.ConsumerMetadataIdentifier;
 import org.apache.dubbo.metadata.identifier.MetadataIdentifier;
-import org.apache.dubbo.metadata.identifier.ProviderMetadataIdentifier;
 import redis.clients.jedis.Jedis;
 import redis.clients.jedis.JedisPool;
 import redis.clients.jedis.JedisPoolConfig;
@@ -48,12 +46,12 @@
     }
 
     @Override
-    public String getProviderMetaData(ProviderMetadataIdentifier key) {
+    public String getProviderMetaData(MetadataIdentifier key) {
         return doGetMetaData(key);
     }
 
     @Override
-    public String getConsumerMetaData(ConsumerMetadataIdentifier key) {
+    public String getConsumerMetaData(MetadataIdentifier key) {
         return doGetMetaData(key);
     }
 
diff --git a/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/data/metadata/impl/ZookeeperMetaDataCollector.java b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/data/metadata/impl/ZookeeperMetaDataCollector.java
index 06d5e4a..0ecab02 100644
--- a/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/data/metadata/impl/ZookeeperMetaDataCollector.java
+++ b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/data/metadata/impl/ZookeeperMetaDataCollector.java
@@ -23,9 +23,7 @@
 import org.apache.dubbo.admin.common.util.Constants;
 import org.apache.dubbo.admin.data.metadata.MetaDataCollector;
 import org.apache.dubbo.common.URL;
-import org.apache.dubbo.metadata.identifier.ConsumerMetadataIdentifier;
 import org.apache.dubbo.metadata.identifier.MetadataIdentifier;
-import org.apache.dubbo.metadata.identifier.ProviderMetadataIdentifier;
 
 public class ZookeeperMetaDataCollector implements MetaDataCollector {
 
@@ -58,12 +56,12 @@
 
 
     @Override
-    public String getProviderMetaData(ProviderMetadataIdentifier key) {
+    public String getProviderMetaData(MetadataIdentifier key) {
         return doGetMetadata(key);
     }
 
     @Override
-    public String getConsumerMetaData(ConsumerMetadataIdentifier key) {
+    public String getConsumerMetaData(MetadataIdentifier key) {
         return doGetMetadata(key);
     }
 
diff --git a/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/service/ConsumerService.java b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/service/ConsumerService.java
index da518f9..0cd5238 100644
--- a/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/service/ConsumerService.java
+++ b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/service/ConsumerService.java
@@ -17,7 +17,7 @@
 package org.apache.dubbo.admin.service;
 
 import org.apache.dubbo.admin.model.domain.Consumer;
-import org.apache.dubbo.metadata.identifier.ConsumerMetadataIdentifier;
+import org.apache.dubbo.metadata.identifier.MetadataIdentifier;
 
 import java.util.List;
 
@@ -31,7 +31,7 @@
 
     Consumer findConsumer(String id);
 
-    String getConsumerMetadata(ConsumerMetadataIdentifier consumerIdentifier);
+    String getConsumerMetadata(MetadataIdentifier consumerIdentifier);
 
     List<Consumer> findAll();
 
@@ -60,4 +60,4 @@
 
     List<String> findServices();
 
-}
\ No newline at end of file
+}
diff --git a/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/service/ProviderService.java b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/service/ProviderService.java
index d90a265..eafb6d0 100644
--- a/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/service/ProviderService.java
+++ b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/service/ProviderService.java
@@ -17,7 +17,7 @@
 package org.apache.dubbo.admin.service;
 
 import org.apache.dubbo.admin.model.domain.Provider;
-import org.apache.dubbo.metadata.identifier.ProviderMetadataIdentifier;
+import org.apache.dubbo.metadata.identifier.MetadataIdentifier;
 
 import java.util.List;
 
@@ -43,11 +43,11 @@
 
     Provider findProvider(String id);
 
-    String getProviderMetaData(ProviderMetadataIdentifier providerIdentifier);
+    String getProviderMetaData(MetadataIdentifier providerIdentifier);
 
     List<String> findServices();
 
-    String findServiceVersion(String serviceName);
+    String findServiceVersion(String serviceName, String application);
 
     String findVersionInApplication(String application);
 
@@ -79,4 +79,4 @@
 
     Provider findByServiceAndAddress(String service, String address);
 
-}
\ No newline at end of file
+}
diff --git a/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/service/impl/ConsumerServiceImpl.java b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/service/impl/ConsumerServiceImpl.java
index 128c3d3..c719389 100644
--- a/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/service/impl/ConsumerServiceImpl.java
+++ b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/service/impl/ConsumerServiceImpl.java
@@ -22,7 +22,7 @@
 import org.apache.dubbo.admin.service.ConsumerService;
 import org.apache.dubbo.common.Constants;
 import org.apache.dubbo.common.URL;
-import org.apache.dubbo.metadata.identifier.ConsumerMetadataIdentifier;
+import org.apache.dubbo.metadata.identifier.MetadataIdentifier;
 import org.springframework.stereotype.Component;
 
 import java.util.ArrayList;
@@ -51,7 +51,7 @@
     }
 
     @Override
-    public String getConsumerMetadata(ConsumerMetadataIdentifier consumerIdentifier) {
+    public String getConsumerMetadata(MetadataIdentifier consumerIdentifier) {
         return metaDataCollector.getConsumerMetaData(consumerIdentifier);
     }
 
diff --git a/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/service/impl/ProviderServiceImpl.java b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/service/impl/ProviderServiceImpl.java
index fe532c5..832f17b 100644
--- a/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/service/impl/ProviderServiceImpl.java
+++ b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/service/impl/ProviderServiceImpl.java
@@ -28,7 +28,7 @@
 import org.apache.dubbo.common.URL;
 import org.apache.dubbo.common.utils.StringUtils;
 import org.apache.dubbo.metadata.definition.model.FullServiceDefinition;
-import org.apache.dubbo.metadata.identifier.ProviderMetadataIdentifier;
+import org.apache.dubbo.metadata.identifier.MetadataIdentifier;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
@@ -92,7 +92,7 @@
 //    }
 
     @java.lang.Override
-    public String getProviderMetaData(ProviderMetadataIdentifier providerIdentifier) {
+    public String getProviderMetaData(MetadataIdentifier providerIdentifier) {
         return metaDataCollector.getProviderMetaData(providerIdentifier);
     }
 
@@ -398,18 +398,18 @@
     @Override
     public String findVersionInApplication(String application) {
         List<String> services = findServicesByApplication(application);
-        return findServiceVersion(services.get(0));
+        return findServiceVersion(services.get(0), application);
     }
 
     @Override
-    public String findServiceVersion(String serviceName) {
+    public String findServiceVersion(String serviceName, String application) {
         String version = "2.6";
         serviceName = serviceName.replace("*", "/");
         Map<String, String> info = ConvertUtil.serviceName2Map(serviceName);
-        ProviderMetadataIdentifier p = new ProviderMetadataIdentifier(info.get(Constants.INTERFACE_KEY),
+        MetadataIdentifier identifier = new MetadataIdentifier(info.get(Constants.INTERFACE_KEY),
                 info.get(Constants.VERSION_KEY),
-                info.get(Constants.GROUP_KEY));
-        String metadata = getProviderMetaData(p);
+                info.get(Constants.GROUP_KEY), Constants.PROVIDER_SIDE, application);
+        String metadata = getProviderMetaData(identifier);
         Gson gson = new Gson();
         if (StringUtils.isNoneEmpty(metadata)) {
             FullServiceDefinition serviceDefinition = gson.fromJson(metadata, FullServiceDefinition.class);