You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dubbo.apache.org by li...@apache.org on 2018/10/23 02:12:59 UTC

[incubator-dubbo] branch dev-metadata updated: Merge pull request #2672, simplify registry url: rename servicestore to metada & enhancements.

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

liujun pushed a commit to branch dev-metadata
in repository https://gitbox.apache.org/repos/asf/incubator-dubbo.git


The following commit(s) were added to refs/heads/dev-metadata by this push:
     new 37c22c7  Merge pull request #2672, simplify registry url: rename servicestore to metada & enhancements.
37c22c7 is described below

commit 37c22c7edcaf7cacc85d829f918b639e465537e2
Author: cvictory <sh...@gmail.com>
AuthorDate: Tue Oct 23 10:12:51 2018 +0800

    Merge pull request #2672, simplify registry url: rename servicestore to metada & enhancements.
---
 dubbo-bom/pom.xml                                  |  6 +-
 .../java/org/apache/dubbo/common/Constants.java    |  2 +-
 dubbo-config/dubbo-config-api/pom.xml              |  2 +-
 .../dubbo/config/AbstractInterfaceConfig.java      | 10 +--
 .../org/apache/dubbo/config/ReferenceConfig.java   |  8 +-
 .../org/apache/dubbo/config/ServiceConfig.java     |  8 +-
 .../apache/dubbo/config/spring/ReferenceBean.java  |  2 +-
 .../apache/dubbo/config/spring/ServiceBean.java    |  2 +-
 .../src/main/resources/META-INF/compat/dubbo.xsd   |  2 +-
 .../src/main/resources/META-INF/dubbo.xsd          |  2 +-
 dubbo-demo/dubbo-demo-consumer/pom.xml             |  2 +-
 .../META-INF/spring/dubbo-demo-consumer.xml        |  2 +-
 dubbo-demo/dubbo-demo-provider/pom.xml             |  4 +-
 .../META-INF/spring/dubbo-demo-provider.xml        |  1 +
 .../dubbo-metadata-report-api}/pom.xml             |  8 +-
 .../integration/MetadataReportService.java         | 37 +++++----
 .../dubbo/metadata}/metadata/MethodDescriptor.java |  2 +-
 .../metadata}/metadata/ServiceDescriptor.java      |  2 +-
 .../dubbo/metadata}/metadata/TypeDescriptor.java   |  2 +-
 .../metadata/builder/ArrayTypeBuilder.java         |  4 +-
 .../metadata/builder/CollectionTypeBuilder.java    |  4 +-
 .../metadata/builder/DefaultTypeBuilder.java       |  4 +-
 .../metadata/builder/EnumTypeBuilder.java          |  4 +-
 .../metadata}/metadata/builder/MapTypeBuilder.java |  4 +-
 .../metadata/builder/ServiceDescriptorBuilder.java |  8 +-
 .../metadata}/metadata/builder/TypeBuilder.java    |  4 +-
 .../metadata/builder/TypeDescriptorBuilder.java    |  4 +-
 .../dubbo/metadata/store/MetadataReport.java       |  4 +-
 .../metadata/store/MetadataReportFactory.java      |  6 +-
 .../metadata/support/AbstractMetadataReport.java   | 33 ++++++--
 .../support/AbstractMetadataReportFactory.java     | 36 ++++----
 .../integration/InterfaceNameTestService.java      |  2 +-
 .../integration/InterfaceNameTestService2.java     |  2 +-
 .../integration/MetadataReportServiceTest.java     | 96 +++++++++++-----------
 .../metadata/builder/ArrayTypeBuilderTest.java     | 12 ++-
 .../builder/CollectionTypeBuilderTest.java         | 11 ++-
 .../metadata}/metadata/builder/ComplexEnum.java    |  2 +-
 .../metadata}/metadata/builder/ComplexObject.java  |  2 +-
 .../metadata/builder/DefaultTypeBuilderTest.java   |  6 +-
 .../metadata/builder/EnumTypeBuilderTest.java      | 15 ++--
 .../metadata/builder/MapTypeBuilderTest.java       | 11 ++-
 .../builder/ServiceDescriptorBuilderTest.java      |  4 +-
 .../metadata}/metadata/builder/SingleEnum.java     |  2 +-
 .../metadata}/metadata/builder/TestService.java    |  2 +-
 .../builder/TypeDescriptorBuilderTest.java         |  8 +-
 .../store/test/JTestMetadataReport4Test.java       | 14 ++--
 .../test/JTestMetadataReportFactory4Test.java      | 12 +--
 .../support/AbstractMetadataReportFactoryTest.java | 36 ++++----
 .../support/AbstractMetadataReportTest.java        | 31 ++++---
 ...che.dubbo.servicedata.store.ServiceStoreFactory |  1 +
 .../dubbo-metadata-report-redis}/pom.xml           |  6 +-
 .../metadata/store/redis/RedisMetadataReport.java  | 35 ++------
 .../store/redis/RedisMetadataReportFactory.java    | 12 +--
 ...che.dubbo.servicedata.store.ServiceStoreFactory |  1 +
 .../store/redis/RedisMetadataReportTest.java       | 33 +++-----
 .../dubbo-metadata-report-zookeeper}/pom.xml       |  6 +-
 .../store/zookeeper/ZookeeperMetadataReport.java   | 14 ++--
 .../zookeeper/ZookeeperMetadataReportFactory.java  | 12 +--
 ...che.dubbo.servicedata.store.ServiceStoreFactory |  1 +
 .../zookeeper/ZookeeperMetadataReportTest.java     | 45 +++++-----
 .../pom.xml                                        |  8 +-
 ...che.dubbo.servicedata.store.ServiceStoreFactory |  1 -
 ...che.dubbo.servicedata.store.ServiceStoreFactory |  1 -
 ...che.dubbo.servicedata.store.ServiceStoreFactory |  1 -
 pom.xml                                            |  2 +-
 65 files changed, 332 insertions(+), 334 deletions(-)

diff --git a/dubbo-bom/pom.xml b/dubbo-bom/pom.xml
index 7968e93..db9a007 100644
--- a/dubbo-bom/pom.xml
+++ b/dubbo-bom/pom.xml
@@ -290,17 +290,17 @@
             </dependency>
             <dependency>
                 <groupId>org.apache.dubbo</groupId>
-                <artifactId>dubbo-servicedata-api</artifactId>
+                <artifactId>dubbo-metadata-report-api</artifactId>
                 <version>${project.version}</version>
             </dependency>
             <dependency>
                 <groupId>org.apache.dubbo</groupId>
-                <artifactId>dubbo-servicedata-zookeeper</artifactId>
+                <artifactId>dubbo-metadata-report-zookeeper</artifactId>
                 <version>${project.version}</version>
             </dependency>
             <dependency>
                 <groupId>org.apache.dubbo</groupId>
-                <artifactId>dubbo-servicedata-redis</artifactId>
+                <artifactId>dubbo-metadata-report-redis</artifactId>
                 <version>${project.version}</version>
             </dependency>
             <dependency>
diff --git a/dubbo-common/src/main/java/org/apache/dubbo/common/Constants.java b/dubbo-common/src/main/java/org/apache/dubbo/common/Constants.java
index c9281c4..54ec952 100644
--- a/dubbo-common/src/main/java/org/apache/dubbo/common/Constants.java
+++ b/dubbo-common/src/main/java/org/apache/dubbo/common/Constants.java
@@ -450,7 +450,7 @@ public class Constants {
      * After simplify the registry, should add some paramter individually.
      * @since 2.7.0
      */
-    public static final String ADD_PARAM_KEYS_KEY = "addParamKeys";
+    public static final String ADD_PARAM_KEYS_KEY = "plusparamkeys";
 
     /**
      * To decide whether to exclude unavailable invoker from the cluster
diff --git a/dubbo-config/dubbo-config-api/pom.xml b/dubbo-config/dubbo-config-api/pom.xml
index 7a2229c..c00e022 100644
--- a/dubbo-config/dubbo-config-api/pom.xml
+++ b/dubbo-config/dubbo-config-api/pom.xml
@@ -36,7 +36,7 @@
         </dependency>
         <dependency>
             <groupId>org.apache.dubbo</groupId>
-            <artifactId>dubbo-servicedata-api</artifactId>
+            <artifactId>dubbo-metadata-report-api</artifactId>
             <version>${project.parent.version}</version>
         </dependency>
         <dependency>
diff --git a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/AbstractInterfaceConfig.java b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/AbstractInterfaceConfig.java
index ca39f71..591fb80 100644
--- a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/AbstractInterfaceConfig.java
+++ b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/AbstractInterfaceConfig.java
@@ -35,8 +35,8 @@ import org.apache.dubbo.rpc.InvokerListener;
 import org.apache.dubbo.rpc.ProxyFactory;
 import org.apache.dubbo.rpc.cluster.Cluster;
 import org.apache.dubbo.rpc.support.MockInvoker;
-import org.apache.dubbo.servicedata.store.ServiceStoreFactory;
-import org.apache.dubbo.servicedata.integration.ServiceStoreService;
+import org.apache.dubbo.metadata.store.MetadataReportFactory;
+import org.apache.dubbo.metadata.integration.MetadataReportService;
 
 import java.util.ArrayList;
 import java.util.HashMap;
@@ -284,7 +284,7 @@ public abstract class AbstractInterfaceConfig extends AbstractMethodConfig {
                 map.put(Constants.PID_KEY, String.valueOf(ConfigUtils.getPid()));
             }
             if (!map.containsKey("protocol")) {
-                if (ExtensionLoader.getExtensionLoader(ServiceStoreFactory.class).hasExtension("remote")) {
+                if (ExtensionLoader.getExtensionLoader(MetadataReportFactory.class).hasExtension("remote")) {
                     map.put("protocol", "remote");
                 } else {
                     map.put("protocol", "dubbo");
@@ -300,11 +300,11 @@ public abstract class AbstractInterfaceConfig extends AbstractMethodConfig {
         return null;
     }
 
-    protected ServiceStoreService getServiceStoreService() {
+    protected MetadataReportService getServiceStoreService() {
         if (serviceStoreConfig == null) {
             return null;
         }
-        return ServiceStoreService.instance(() -> {
+        return MetadataReportService.instance(() -> {
             return loadServiceStore(true);
         });
     }
diff --git a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ReferenceConfig.java b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ReferenceConfig.java
index b6cea16..7b6ebd8 100644
--- a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ReferenceConfig.java
+++ b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ReferenceConfig.java
@@ -41,7 +41,7 @@ import org.apache.dubbo.rpc.cluster.support.RegistryAwareCluster;
 import org.apache.dubbo.rpc.protocol.injvm.InjvmProtocol;
 import org.apache.dubbo.rpc.service.GenericService;
 import org.apache.dubbo.rpc.support.ProtocolUtils;
-import org.apache.dubbo.servicedata.integration.ServiceStoreService;
+import org.apache.dubbo.metadata.integration.MetadataReportService;
 
 import java.io.File;
 import java.io.FileInputStream;
@@ -433,10 +433,10 @@ public class ReferenceConfig<T> extends AbstractReferenceConfig {
          * @since 2.7.0
          * ServiceData Store
          */
-        ServiceStoreService serviceStoreService = null;
-        if ((serviceStoreService = getServiceStoreService()) != null){
+        MetadataReportService metadataReportService = null;
+        if ((metadataReportService = getServiceStoreService()) != null){
             URL consumerURL = new URL(Constants.CONSUMER_PROTOCOL, map.remove(Constants.REGISTER_IP_KEY), 0, map.get(Constants.INTERFACE_KEY), map);
-            serviceStoreService.publishConsumer(consumerURL);
+            metadataReportService.publishConsumer(consumerURL);
         }
         // create service proxy
         return (T) proxyFactory.getProxy(invoker);
diff --git a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ServiceConfig.java b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ServiceConfig.java
index 200cb34..50f16dd 100644
--- a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ServiceConfig.java
+++ b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ServiceConfig.java
@@ -38,7 +38,7 @@ import org.apache.dubbo.rpc.ServiceClassHolder;
 import org.apache.dubbo.rpc.cluster.ConfiguratorFactory;
 import org.apache.dubbo.rpc.service.GenericService;
 import org.apache.dubbo.rpc.support.ProtocolUtils;
-import org.apache.dubbo.servicedata.integration.ServiceStoreService;
+import org.apache.dubbo.metadata.integration.MetadataReportService;
 
 import java.lang.reflect.Method;
 import java.net.InetAddress;
@@ -525,11 +525,11 @@ public class ServiceConfig<T> extends AbstractServiceConfig {
                  * @since 2.7.0
                  * ServiceData Store
                  */
-                ServiceStoreService serviceStoreService = null;
-                if ((serviceStoreService = getServiceStoreService()) != null){
+                MetadataReportService metadataReportService = null;
+                if ((metadataReportService = getServiceStoreService()) != null){
 //                    String protocol = url.getProtocol();
 //                    url = url.setProtocol(Constants.PROVIDER_PROTOCOL).addParameter(Constants.SIDE_KEY, Constants.PROVIDER_SIDE).addParameter(Constants.PROTOCOL_KEY, protocol);
-                    serviceStoreService.publishProvider(url);
+                    metadataReportService.publishProvider(url);
                 }
             }
         }
diff --git a/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/ReferenceBean.java b/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/ReferenceBean.java
index 2eb4475..4826478 100644
--- a/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/ReferenceBean.java
+++ b/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/ReferenceBean.java
@@ -156,7 +156,7 @@ public class ReferenceBean<T> extends ReferenceConfig<T> implements FactoryBean,
                 // first elements
                 super.setServiceStoreConfig(serviceStoreConfigMap.values().iterator().next());
             } else if(serviceStoreConfigMap != null && serviceStoreConfigMap.size() > 1){
-                throw new IllegalStateException("Multiple ServiceStore configs: " + serviceStoreConfigMap);
+                throw new IllegalStateException("Multiple MetadataReport configs: " + serviceStoreConfigMap);
             }
         }
         if (getMonitor() == null
diff --git a/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/ServiceBean.java b/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/ServiceBean.java
index ddf1608..a86ef26 100644
--- a/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/ServiceBean.java
+++ b/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/ServiceBean.java
@@ -226,7 +226,7 @@ public class ServiceBean<T> extends ServiceConfig<T> implements InitializingBean
                 // 第一个元素
                 super.setServiceStoreConfig(serviceStoreConfigMap.values().iterator().next());
             } else if(serviceStoreConfigMap != null && serviceStoreConfigMap.size() > 1){
-                throw new IllegalStateException("Multiple ServiceStore configs: " + serviceStoreConfigMap);
+                throw new IllegalStateException("Multiple MetadataReport configs: " + serviceStoreConfigMap);
             }
         }
         if (getMonitor() == null
diff --git a/dubbo-config/dubbo-config-spring/src/main/resources/META-INF/compat/dubbo.xsd b/dubbo-config/dubbo-config-spring/src/main/resources/META-INF/compat/dubbo.xsd
index 39ad36b..05e52af 100644
--- a/dubbo-config/dubbo-config-spring/src/main/resources/META-INF/compat/dubbo.xsd
+++ b/dubbo-config/dubbo-config-spring/src/main/resources/META-INF/compat/dubbo.xsd
@@ -555,7 +555,7 @@
                 <xsd:documentation><![CDATA[ Is simple. ]]></xsd:documentation>
             </xsd:annotation>
         </xsd:attribute>
-        <xsd:attribute name="addParamKeys" type="xsd:string">
+        <xsd:attribute name="plusparamkeys" type="xsd:string">
             <xsd:annotation>
                 <xsd:documentation><![CDATA[ Addtional Parameter Keys. ]]></xsd:documentation>
             </xsd:annotation>
diff --git a/dubbo-config/dubbo-config-spring/src/main/resources/META-INF/dubbo.xsd b/dubbo-config/dubbo-config-spring/src/main/resources/META-INF/dubbo.xsd
index 6952666..85d7189 100644
--- a/dubbo-config/dubbo-config-spring/src/main/resources/META-INF/dubbo.xsd
+++ b/dubbo-config/dubbo-config-spring/src/main/resources/META-INF/dubbo.xsd
@@ -549,7 +549,7 @@
                 <xsd:documentation><![CDATA[ Is simple. ]]></xsd:documentation>
             </xsd:annotation>
         </xsd:attribute>
-        <xsd:attribute name="addParamKeys" type="xsd:string">
+        <xsd:attribute name="plusparamkeys" type="xsd:string">
             <xsd:annotation>
                 <xsd:documentation><![CDATA[ Addtional Parameter Keys. ]]></xsd:documentation>
             </xsd:annotation>
diff --git a/dubbo-demo/dubbo-demo-consumer/pom.xml b/dubbo-demo/dubbo-demo-consumer/pom.xml
index e7e9a1e..63a94bd 100644
--- a/dubbo-demo/dubbo-demo-consumer/pom.xml
+++ b/dubbo-demo/dubbo-demo-consumer/pom.xml
@@ -64,7 +64,7 @@
         </dependency>
         <dependency>
             <groupId>org.apache.dubbo</groupId>
-            <artifactId>dubbo-servicedata-zookeeper</artifactId>
+            <artifactId>dubbo-metadata-report-redis</artifactId>
         </dependency>
     </dependencies>
 </project>
diff --git a/dubbo-demo/dubbo-demo-consumer/src/main/resources/META-INF/spring/dubbo-demo-consumer.xml b/dubbo-demo/dubbo-demo-consumer/src/main/resources/META-INF/spring/dubbo-demo-consumer.xml
index 0216a13..578b324 100644
--- a/dubbo-demo/dubbo-demo-consumer/src/main/resources/META-INF/spring/dubbo-demo-consumer.xml
+++ b/dubbo-demo/dubbo-demo-consumer/src/main/resources/META-INF/spring/dubbo-demo-consumer.xml
@@ -33,7 +33,7 @@
     <dubbo:registry address="zookeeper://127.0.0.1:2181" default="true"/>
     <dubbo:registry address="zookeeper://127.0.0.1:2181"/>
 
-    <dubbo:servicestore address="zookeeper://127.0.0.1:2181"/>
+    <dubbo:servicestore address="redis://127.0.0.1:6379"/>
 
     <!-- generate proxy for the remote service, then demoService can be used in the same way as the
     local regular interface -->
diff --git a/dubbo-demo/dubbo-demo-provider/pom.xml b/dubbo-demo/dubbo-demo-provider/pom.xml
index d1d9aa9..10445ee 100644
--- a/dubbo-demo/dubbo-demo-provider/pom.xml
+++ b/dubbo-demo/dubbo-demo-provider/pom.xml
@@ -65,11 +65,11 @@
         </dependency>
         <dependency>
             <groupId>org.apache.dubbo</groupId>
-            <artifactId>dubbo-servicedata-zookeeper</artifactId>
+            <artifactId>dubbo-metadata-report-zookeeper</artifactId>
         </dependency>
         <dependency>
             <groupId>org.apache.dubbo</groupId>
-            <artifactId>dubbo-servicedata-redis</artifactId>
+            <artifactId>dubbo-metadata-report-redis</artifactId>
         </dependency>
     </dependencies>
 </project>
diff --git a/dubbo-demo/dubbo-demo-provider/src/main/resources/META-INF/spring/dubbo-demo-provider.xml b/dubbo-demo/dubbo-demo-provider/src/main/resources/META-INF/spring/dubbo-demo-provider.xml
index bdf633f..1088f8a 100644
--- a/dubbo-demo/dubbo-demo-provider/src/main/resources/META-INF/spring/dubbo-demo-provider.xml
+++ b/dubbo-demo/dubbo-demo-provider/src/main/resources/META-INF/spring/dubbo-demo-provider.xml
@@ -26,6 +26,7 @@
     <!--<dubbo:provider tag="tag3"/>-->
 
     <!-- use multicast registry center to export service -->
+
     <dubbo:registry address="zookeeper://127.0.0.1:2181" simple="false">
         <dubbo:parameter key="config.check" value="false"/>
     </dubbo:registry>
diff --git a/dubbo-servicedata/dubbo-servicedata-api/pom.xml b/dubbo-metadata-report/dubbo-metadata-report-api/pom.xml
similarity index 90%
rename from dubbo-servicedata/dubbo-servicedata-api/pom.xml
rename to dubbo-metadata-report/dubbo-metadata-report-api/pom.xml
index 7d7736d..cfd7c0a 100644
--- a/dubbo-servicedata/dubbo-servicedata-api/pom.xml
+++ b/dubbo-metadata-report/dubbo-metadata-report-api/pom.xml
@@ -18,13 +18,13 @@
          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-servicedata</artifactId>
+        <artifactId>dubbo-metadata-report</artifactId>
         <groupId>org.apache.dubbo</groupId>
         <version>2.7.0-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
-    <artifactId>dubbo-servicedata-api</artifactId>
+    <artifactId>dubbo-metadata-report-api</artifactId>
     <packaging>jar</packaging>
 
     <properties>
@@ -59,5 +59,9 @@
             <version>${project.parent.version}</version>
             <scope>test</scope>
         </dependency>
+        <dependency>
+            <groupId>org.apache.commons</groupId>
+            <artifactId>commons-lang3</artifactId>
+        </dependency>
     </dependencies>
 </project>
diff --git a/dubbo-servicedata/dubbo-servicedata-api/src/main/java/org/apache/dubbo/servicedata/integration/ServiceStoreService.java b/dubbo-metadata-report/dubbo-metadata-report-api/src/main/java/org/apache/dubbo/metadata/integration/MetadataReportService.java
similarity index 79%
rename from dubbo-servicedata/dubbo-servicedata-api/src/main/java/org/apache/dubbo/servicedata/integration/ServiceStoreService.java
rename to dubbo-metadata-report/dubbo-metadata-report-api/src/main/java/org/apache/dubbo/metadata/integration/MetadataReportService.java
index cc1d22a..0fe7efe 100644
--- a/dubbo-servicedata/dubbo-servicedata-api/src/main/java/org/apache/dubbo/servicedata/integration/ServiceStoreService.java
+++ b/dubbo-metadata-report/dubbo-metadata-report-api/src/main/java/org/apache/dubbo/metadata/integration/MetadataReportService.java
@@ -14,10 +14,11 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.dubbo.servicedata.integration;
+package org.apache.dubbo.metadata.integration;
 
 import com.alibaba.fastjson.JSON;
 
+import org.apache.commons.lang3.time.DateUtils;
 import org.apache.dubbo.common.Constants;
 import org.apache.dubbo.common.URL;
 import org.apache.dubbo.common.extension.ExtensionLoader;
@@ -27,10 +28,10 @@ import org.apache.dubbo.common.utils.ConcurrentHashSet;
 import org.apache.dubbo.common.utils.NamedThreadFactory;
 import org.apache.dubbo.common.utils.StringUtils;
 import org.apache.dubbo.rpc.RpcException;
-import org.apache.dubbo.servicedata.metadata.ServiceDescriptor;
-import org.apache.dubbo.servicedata.metadata.builder.ServiceDescriptorBuilder;
-import org.apache.dubbo.servicedata.store.ServiceStore;
-import org.apache.dubbo.servicedata.store.ServiceStoreFactory;
+import org.apache.dubbo.metadata.metadata.ServiceDescriptor;
+import org.apache.dubbo.metadata.metadata.builder.ServiceDescriptorBuilder;
+import org.apache.dubbo.metadata.store.MetadataReport;
+import org.apache.dubbo.metadata.store.MetadataReportFactory;
 
 import java.util.Calendar;
 import java.util.Date;
@@ -44,31 +45,31 @@ import java.util.function.Supplier;
 import static org.apache.dubbo.common.Constants.SERVICE_DESCIPTOR_KEY;
 
 
-public class ServiceStoreService {
+public class MetadataReportService {
 
     protected final Logger logger = LoggerFactory.getLogger(getClass());
     private static final int ONE_DAY_IN_MIll = 60 * 24 * 60 * 1000;
     private static final int FOUR_HOURS_IN_MIll = 60 * 4 * 60 * 1000;
 
-    private static ServiceStoreService serviceStoreService;
+    private static MetadataReportService metadataReportService;
     private static Object lock = new Object();
 
     private final ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(0, new NamedThreadFactory("DubboRegistryFailedRetryTimer", true));
-    private ServiceStoreFactory serviceStoreFactory = ExtensionLoader.getExtensionLoader(ServiceStoreFactory.class).getAdaptiveExtension();
+    private MetadataReportFactory metadataReportFactory = ExtensionLoader.getExtensionLoader(MetadataReportFactory.class).getAdaptiveExtension();
     final Set<URL> providerURLs = new ConcurrentHashSet<>();
     final Set<URL> consumerURLs = new ConcurrentHashSet<URL>();
-    ServiceStore serviceStore;
+    MetadataReport metadataReport;
     URL serviceStoreUrl;
 
 
 
-    ServiceStoreService(URL serviceStoreURL) {
+    MetadataReportService(URL serviceStoreURL) {
         if (Constants.SERVICE_STORE_KEY.equals(serviceStoreURL.getProtocol())) {
             String protocol = serviceStoreURL.getParameter(Constants.SERVICE_STORE_KEY, Constants.DEFAULT_DIRECTORY);
             serviceStoreURL = serviceStoreURL.setProtocol(protocol).removeParameter(Constants.SERVICE_STORE_KEY);
         }
         this.serviceStoreUrl = serviceStoreURL;
-        serviceStore = serviceStoreFactory.getServiceStore(this.serviceStoreUrl);
+        metadataReport = metadataReportFactory.getServiceStore(this.serviceStoreUrl);
         scheduler.scheduleAtFixedRate(new Runnable() {
             @Override
             public void run() {
@@ -78,19 +79,19 @@ public class ServiceStoreService {
     }
 
 
-    public static ServiceStoreService instance(Supplier<URL> loadServiceStoreUrl) {
-        if (serviceStoreService == null) {
+    public static MetadataReportService instance(Supplier<URL> loadServiceStoreUrl) {
+        if (metadataReportService == null) {
             synchronized (lock) {
-                if (serviceStoreService == null) {
+                if (metadataReportService == null) {
                     URL serviceStoreURL = loadServiceStoreUrl.get();
                     if (serviceStoreURL == null) {
                         return null;
                     }
-                    serviceStoreService = new ServiceStoreService(serviceStoreURL);
+                    metadataReportService = new MetadataReportService(serviceStoreURL);
                 }
             }
         }
-        return serviceStoreService;
+        return metadataReportService;
     }
 
     public void publishProvider(URL providerUrl) throws RpcException {
@@ -107,12 +108,12 @@ public class ServiceStoreService {
             //ignore error
             logger.error("Servicestore getServiceDescriptor error. providerUrl: " + providerUrl.toFullString(), e);
         }
-        serviceStore.put(providerUrl);
+        metadataReport.put(providerUrl);
     }
 
     public void publishConsumer(URL consumerURL) throws RpcException {
         consumerURLs.add(consumerURL);
-        serviceStore.put(consumerURL);
+        metadataReport.put(consumerURL);
     }
 
     void publishAll() {
diff --git a/dubbo-servicedata/dubbo-servicedata-api/src/main/java/org/apache/dubbo/servicedata/metadata/MethodDescriptor.java b/dubbo-metadata-report/dubbo-metadata-report-api/src/main/java/org/apache/dubbo/metadata/metadata/MethodDescriptor.java
similarity index 96%
rename from dubbo-servicedata/dubbo-servicedata-api/src/main/java/org/apache/dubbo/servicedata/metadata/MethodDescriptor.java
rename to dubbo-metadata-report/dubbo-metadata-report-api/src/main/java/org/apache/dubbo/metadata/metadata/MethodDescriptor.java
index a27fc6b..59a954e 100644
--- a/dubbo-servicedata/dubbo-servicedata-api/src/main/java/org/apache/dubbo/servicedata/metadata/MethodDescriptor.java
+++ b/dubbo-metadata-report/dubbo-metadata-report-api/src/main/java/org/apache/dubbo/metadata/metadata/MethodDescriptor.java
@@ -1,4 +1,4 @@
-package org.apache.dubbo.servicedata.metadata;
+package org.apache.dubbo.metadata.metadata;
 
 import java.util.Arrays;
 import java.util.Objects;
diff --git a/dubbo-servicedata/dubbo-servicedata-api/src/main/java/org/apache/dubbo/servicedata/metadata/ServiceDescriptor.java b/dubbo-metadata-report/dubbo-metadata-report-api/src/main/java/org/apache/dubbo/metadata/metadata/ServiceDescriptor.java
similarity index 96%
rename from dubbo-servicedata/dubbo-servicedata-api/src/main/java/org/apache/dubbo/servicedata/metadata/ServiceDescriptor.java
rename to dubbo-metadata-report/dubbo-metadata-report-api/src/main/java/org/apache/dubbo/metadata/metadata/ServiceDescriptor.java
index c4a9f90..f0e9ba5 100644
--- a/dubbo-servicedata/dubbo-servicedata-api/src/main/java/org/apache/dubbo/servicedata/metadata/ServiceDescriptor.java
+++ b/dubbo-metadata-report/dubbo-metadata-report-api/src/main/java/org/apache/dubbo/metadata/metadata/ServiceDescriptor.java
@@ -1,4 +1,4 @@
-package org.apache.dubbo.servicedata.metadata;
+package org.apache.dubbo.metadata.metadata;
 
 import java.util.ArrayList;
 import java.util.HashMap;
diff --git a/dubbo-servicedata/dubbo-servicedata-api/src/main/java/org/apache/dubbo/servicedata/metadata/TypeDescriptor.java b/dubbo-metadata-report/dubbo-metadata-report-api/src/main/java/org/apache/dubbo/metadata/metadata/TypeDescriptor.java
similarity index 96%
rename from dubbo-servicedata/dubbo-servicedata-api/src/main/java/org/apache/dubbo/servicedata/metadata/TypeDescriptor.java
rename to dubbo-metadata-report/dubbo-metadata-report-api/src/main/java/org/apache/dubbo/metadata/metadata/TypeDescriptor.java
index 615ef53..48ba6fd 100644
--- a/dubbo-servicedata/dubbo-servicedata-api/src/main/java/org/apache/dubbo/servicedata/metadata/TypeDescriptor.java
+++ b/dubbo-metadata-report/dubbo-metadata-report-api/src/main/java/org/apache/dubbo/metadata/metadata/TypeDescriptor.java
@@ -1,4 +1,4 @@
-package org.apache.dubbo.servicedata.metadata;
+package org.apache.dubbo.metadata.metadata;
 
 import java.util.HashMap;
 import java.util.Map;
diff --git a/dubbo-servicedata/dubbo-servicedata-api/src/main/java/org/apache/dubbo/servicedata/metadata/builder/ArrayTypeBuilder.java b/dubbo-metadata-report/dubbo-metadata-report-api/src/main/java/org/apache/dubbo/metadata/metadata/builder/ArrayTypeBuilder.java
similarity index 87%
rename from dubbo-servicedata/dubbo-servicedata-api/src/main/java/org/apache/dubbo/servicedata/metadata/builder/ArrayTypeBuilder.java
rename to dubbo-metadata-report/dubbo-metadata-report-api/src/main/java/org/apache/dubbo/metadata/metadata/builder/ArrayTypeBuilder.java
index 5a819db..883a8e1 100644
--- a/dubbo-servicedata/dubbo-servicedata-api/src/main/java/org/apache/dubbo/servicedata/metadata/builder/ArrayTypeBuilder.java
+++ b/dubbo-metadata-report/dubbo-metadata-report-api/src/main/java/org/apache/dubbo/metadata/metadata/builder/ArrayTypeBuilder.java
@@ -1,6 +1,6 @@
-package org.apache.dubbo.servicedata.metadata.builder;
+package org.apache.dubbo.metadata.metadata.builder;
 
-import org.apache.dubbo.servicedata.metadata.TypeDescriptor;
+import org.apache.dubbo.metadata.metadata.TypeDescriptor;
 
 import java.lang.reflect.Type;
 import java.util.Map;
diff --git a/dubbo-servicedata/dubbo-servicedata-api/src/main/java/org/apache/dubbo/servicedata/metadata/builder/CollectionTypeBuilder.java b/dubbo-metadata-report/dubbo-metadata-report-api/src/main/java/org/apache/dubbo/metadata/metadata/builder/CollectionTypeBuilder.java
similarity index 94%
rename from dubbo-servicedata/dubbo-servicedata-api/src/main/java/org/apache/dubbo/servicedata/metadata/builder/CollectionTypeBuilder.java
rename to dubbo-metadata-report/dubbo-metadata-report-api/src/main/java/org/apache/dubbo/metadata/metadata/builder/CollectionTypeBuilder.java
index 3e4d567..515ced2 100644
--- a/dubbo-servicedata/dubbo-servicedata-api/src/main/java/org/apache/dubbo/servicedata/metadata/builder/CollectionTypeBuilder.java
+++ b/dubbo-metadata-report/dubbo-metadata-report-api/src/main/java/org/apache/dubbo/metadata/metadata/builder/CollectionTypeBuilder.java
@@ -1,6 +1,6 @@
-package org.apache.dubbo.servicedata.metadata.builder;
+package org.apache.dubbo.metadata.metadata.builder;
 
-import org.apache.dubbo.servicedata.metadata.TypeDescriptor;
+import org.apache.dubbo.metadata.metadata.TypeDescriptor;
 
 import java.lang.reflect.ParameterizedType;
 import java.lang.reflect.Type;
diff --git a/dubbo-servicedata/dubbo-servicedata-api/src/main/java/org/apache/dubbo/servicedata/metadata/builder/DefaultTypeBuilder.java b/dubbo-metadata-report/dubbo-metadata-report-api/src/main/java/org/apache/dubbo/metadata/metadata/builder/DefaultTypeBuilder.java
similarity index 96%
rename from dubbo-servicedata/dubbo-servicedata-api/src/main/java/org/apache/dubbo/servicedata/metadata/builder/DefaultTypeBuilder.java
rename to dubbo-metadata-report/dubbo-metadata-report-api/src/main/java/org/apache/dubbo/metadata/metadata/builder/DefaultTypeBuilder.java
index 11b9bca..2c154f8 100644
--- a/dubbo-servicedata/dubbo-servicedata-api/src/main/java/org/apache/dubbo/servicedata/metadata/builder/DefaultTypeBuilder.java
+++ b/dubbo-metadata-report/dubbo-metadata-report-api/src/main/java/org/apache/dubbo/metadata/metadata/builder/DefaultTypeBuilder.java
@@ -1,6 +1,6 @@
-package org.apache.dubbo.servicedata.metadata.builder;
+package org.apache.dubbo.metadata.metadata.builder;
 
-import org.apache.dubbo.servicedata.metadata.TypeDescriptor;
+import org.apache.dubbo.metadata.metadata.TypeDescriptor;
 
 import java.lang.reflect.Field;
 import java.lang.reflect.Modifier;
diff --git a/dubbo-servicedata/dubbo-servicedata-api/src/main/java/org/apache/dubbo/servicedata/metadata/builder/EnumTypeBuilder.java b/dubbo-metadata-report/dubbo-metadata-report-api/src/main/java/org/apache/dubbo/metadata/metadata/builder/EnumTypeBuilder.java
similarity index 90%
rename from dubbo-servicedata/dubbo-servicedata-api/src/main/java/org/apache/dubbo/servicedata/metadata/builder/EnumTypeBuilder.java
rename to dubbo-metadata-report/dubbo-metadata-report-api/src/main/java/org/apache/dubbo/metadata/metadata/builder/EnumTypeBuilder.java
index 86561fa..1bd8b45 100644
--- a/dubbo-servicedata/dubbo-servicedata-api/src/main/java/org/apache/dubbo/servicedata/metadata/builder/EnumTypeBuilder.java
+++ b/dubbo-metadata-report/dubbo-metadata-report-api/src/main/java/org/apache/dubbo/metadata/metadata/builder/EnumTypeBuilder.java
@@ -1,6 +1,6 @@
-package org.apache.dubbo.servicedata.metadata.builder;
+package org.apache.dubbo.metadata.metadata.builder;
 
-import org.apache.dubbo.servicedata.metadata.TypeDescriptor;
+import org.apache.dubbo.metadata.metadata.TypeDescriptor;
 
 import java.lang.reflect.Type;
 import java.util.Map;
diff --git a/dubbo-servicedata/dubbo-servicedata-api/src/main/java/org/apache/dubbo/servicedata/metadata/builder/MapTypeBuilder.java b/dubbo-metadata-report/dubbo-metadata-report-api/src/main/java/org/apache/dubbo/metadata/metadata/builder/MapTypeBuilder.java
similarity index 94%
rename from dubbo-servicedata/dubbo-servicedata-api/src/main/java/org/apache/dubbo/servicedata/metadata/builder/MapTypeBuilder.java
rename to dubbo-metadata-report/dubbo-metadata-report-api/src/main/java/org/apache/dubbo/metadata/metadata/builder/MapTypeBuilder.java
index d44342c..50c8849 100644
--- a/dubbo-servicedata/dubbo-servicedata-api/src/main/java/org/apache/dubbo/servicedata/metadata/builder/MapTypeBuilder.java
+++ b/dubbo-metadata-report/dubbo-metadata-report-api/src/main/java/org/apache/dubbo/metadata/metadata/builder/MapTypeBuilder.java
@@ -1,6 +1,6 @@
-package org.apache.dubbo.servicedata.metadata.builder;
+package org.apache.dubbo.metadata.metadata.builder;
 
-import org.apache.dubbo.servicedata.metadata.TypeDescriptor;
+import org.apache.dubbo.metadata.metadata.TypeDescriptor;
 
 import java.lang.reflect.ParameterizedType;
 import java.lang.reflect.Type;
diff --git a/dubbo-servicedata/dubbo-servicedata-api/src/main/java/org/apache/dubbo/servicedata/metadata/builder/ServiceDescriptorBuilder.java b/dubbo-metadata-report/dubbo-metadata-report-api/src/main/java/org/apache/dubbo/metadata/metadata/builder/ServiceDescriptorBuilder.java
similarity index 90%
rename from dubbo-servicedata/dubbo-servicedata-api/src/main/java/org/apache/dubbo/servicedata/metadata/builder/ServiceDescriptorBuilder.java
rename to dubbo-metadata-report/dubbo-metadata-report-api/src/main/java/org/apache/dubbo/metadata/metadata/builder/ServiceDescriptorBuilder.java
index 046eed2..a06d2ff 100644
--- a/dubbo-servicedata/dubbo-servicedata-api/src/main/java/org/apache/dubbo/servicedata/metadata/builder/ServiceDescriptorBuilder.java
+++ b/dubbo-metadata-report/dubbo-metadata-report-api/src/main/java/org/apache/dubbo/metadata/metadata/builder/ServiceDescriptorBuilder.java
@@ -1,8 +1,8 @@
-package org.apache.dubbo.servicedata.metadata.builder;
+package org.apache.dubbo.metadata.metadata.builder;
 
-import org.apache.dubbo.servicedata.metadata.MethodDescriptor;
-import org.apache.dubbo.servicedata.metadata.ServiceDescriptor;
-import org.apache.dubbo.servicedata.metadata.TypeDescriptor;
+import org.apache.dubbo.metadata.metadata.MethodDescriptor;
+import org.apache.dubbo.metadata.metadata.ServiceDescriptor;
+import org.apache.dubbo.metadata.metadata.TypeDescriptor;
 
 import java.lang.reflect.Method;
 import java.lang.reflect.Type;
diff --git a/dubbo-servicedata/dubbo-servicedata-api/src/main/java/org/apache/dubbo/servicedata/metadata/builder/TypeBuilder.java b/dubbo-metadata-report/dubbo-metadata-report-api/src/main/java/org/apache/dubbo/metadata/metadata/builder/TypeBuilder.java
similarity index 77%
rename from dubbo-servicedata/dubbo-servicedata-api/src/main/java/org/apache/dubbo/servicedata/metadata/builder/TypeBuilder.java
rename to dubbo-metadata-report/dubbo-metadata-report-api/src/main/java/org/apache/dubbo/metadata/metadata/builder/TypeBuilder.java
index 351b411..72319f7 100644
--- a/dubbo-servicedata/dubbo-servicedata-api/src/main/java/org/apache/dubbo/servicedata/metadata/builder/TypeBuilder.java
+++ b/dubbo-metadata-report/dubbo-metadata-report-api/src/main/java/org/apache/dubbo/metadata/metadata/builder/TypeBuilder.java
@@ -1,6 +1,6 @@
-package org.apache.dubbo.servicedata.metadata.builder;
+package org.apache.dubbo.metadata.metadata.builder;
 
-import org.apache.dubbo.servicedata.metadata.TypeDescriptor;
+import org.apache.dubbo.metadata.metadata.TypeDescriptor;
 
 import java.lang.reflect.Type;
 import java.util.Map;
diff --git a/dubbo-servicedata/dubbo-servicedata-api/src/main/java/org/apache/dubbo/servicedata/metadata/builder/TypeDescriptorBuilder.java b/dubbo-metadata-report/dubbo-metadata-report-api/src/main/java/org/apache/dubbo/metadata/metadata/builder/TypeDescriptorBuilder.java
similarity index 94%
rename from dubbo-servicedata/dubbo-servicedata-api/src/main/java/org/apache/dubbo/servicedata/metadata/builder/TypeDescriptorBuilder.java
rename to dubbo-metadata-report/dubbo-metadata-report-api/src/main/java/org/apache/dubbo/metadata/metadata/builder/TypeDescriptorBuilder.java
index 3d6d3a7..b347df7 100644
--- a/dubbo-servicedata/dubbo-servicedata-api/src/main/java/org/apache/dubbo/servicedata/metadata/builder/TypeDescriptorBuilder.java
+++ b/dubbo-metadata-report/dubbo-metadata-report-api/src/main/java/org/apache/dubbo/metadata/metadata/builder/TypeDescriptorBuilder.java
@@ -1,6 +1,6 @@
-package org.apache.dubbo.servicedata.metadata.builder;
+package org.apache.dubbo.metadata.metadata.builder;
 
-import org.apache.dubbo.servicedata.metadata.TypeDescriptor;
+import org.apache.dubbo.metadata.metadata.TypeDescriptor;
 
 import java.lang.reflect.Type;
 import java.util.ArrayList;
diff --git a/dubbo-servicedata/dubbo-servicedata-api/src/main/java/org/apache/dubbo/servicedata/store/ServiceStore.java b/dubbo-metadata-report/dubbo-metadata-report-api/src/main/java/org/apache/dubbo/metadata/store/MetadataReport.java
similarity index 94%
rename from dubbo-servicedata/dubbo-servicedata-api/src/main/java/org/apache/dubbo/servicedata/store/ServiceStore.java
rename to dubbo-metadata-report/dubbo-metadata-report-api/src/main/java/org/apache/dubbo/metadata/store/MetadataReport.java
index 7311d37..e3cb3e9 100644
--- a/dubbo-servicedata/dubbo-servicedata-api/src/main/java/org/apache/dubbo/servicedata/store/ServiceStore.java
+++ b/dubbo-metadata-report/dubbo-metadata-report-api/src/main/java/org/apache/dubbo/metadata/store/MetadataReport.java
@@ -14,14 +14,14 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.dubbo.servicedata.store;
+package org.apache.dubbo.metadata.store;
 
 
 import org.apache.dubbo.common.URL;
 
 /**
  */
-public interface ServiceStore {
+public interface MetadataReport {
 
     /**
      *
diff --git a/dubbo-servicedata/dubbo-servicedata-api/src/main/java/org/apache/dubbo/servicedata/store/ServiceStoreFactory.java b/dubbo-metadata-report/dubbo-metadata-report-api/src/main/java/org/apache/dubbo/metadata/store/MetadataReportFactory.java
similarity index 88%
rename from dubbo-servicedata/dubbo-servicedata-api/src/main/java/org/apache/dubbo/servicedata/store/ServiceStoreFactory.java
rename to dubbo-metadata-report/dubbo-metadata-report-api/src/main/java/org/apache/dubbo/metadata/store/MetadataReportFactory.java
index 4ee5f03..545691e 100644
--- a/dubbo-servicedata/dubbo-servicedata-api/src/main/java/org/apache/dubbo/servicedata/store/ServiceStoreFactory.java
+++ b/dubbo-metadata-report/dubbo-metadata-report-api/src/main/java/org/apache/dubbo/metadata/store/MetadataReportFactory.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.dubbo.servicedata.store;
+package org.apache.dubbo.metadata.store;
 
 import org.apache.dubbo.common.URL;
 import org.apache.dubbo.common.extension.Adaptive;
@@ -23,8 +23,8 @@ import org.apache.dubbo.common.extension.SPI;
 /**
  */
 @SPI("dubbo")
-public interface ServiceStoreFactory {
+public interface MetadataReportFactory {
 
     @Adaptive({"protocol"})
-    ServiceStore getServiceStore(URL url);
+    MetadataReport getServiceStore(URL url);
 }
diff --git a/dubbo-servicedata/dubbo-servicedata-api/src/main/java/org/apache/dubbo/servicedata/support/AbstractServiceStore.java b/dubbo-metadata-report/dubbo-metadata-report-api/src/main/java/org/apache/dubbo/metadata/support/AbstractMetadataReport.java
similarity index 90%
rename from dubbo-servicedata/dubbo-servicedata-api/src/main/java/org/apache/dubbo/servicedata/support/AbstractServiceStore.java
rename to dubbo-metadata-report/dubbo-metadata-report-api/src/main/java/org/apache/dubbo/metadata/support/AbstractMetadataReport.java
index 01bc7a9..6c79ddf 100644
--- a/dubbo-servicedata/dubbo-servicedata-api/src/main/java/org/apache/dubbo/servicedata/support/AbstractServiceStore.java
+++ b/dubbo-metadata-report/dubbo-metadata-report-api/src/main/java/org/apache/dubbo/metadata/support/AbstractMetadataReport.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.dubbo.servicedata.support;
+package org.apache.dubbo.metadata.support;
 
 import org.apache.dubbo.common.Constants;
 import org.apache.dubbo.common.URL;
@@ -23,7 +23,7 @@ import org.apache.dubbo.common.logger.LoggerFactory;
 import org.apache.dubbo.common.utils.ConcurrentHashSet;
 import org.apache.dubbo.common.utils.ConfigUtils;
 import org.apache.dubbo.common.utils.NamedThreadFactory;
-import org.apache.dubbo.servicedata.store.ServiceStore;
+import org.apache.dubbo.metadata.store.MetadataReport;
 
 import java.io.File;
 import java.io.FileInputStream;
@@ -46,13 +46,15 @@ import java.util.concurrent.atomic.AtomicLong;
 
 /**
  */
-public abstract class AbstractServiceStore implements ServiceStore {
+public abstract class AbstractMetadataReport implements MetadataReport {
 
 
     // URL address separator, used in file cache, service provider URL separation
     private static final char URL_SEPARATOR = ' ';
     // URL address separated regular expression for parsing the service provider URL list in the file cache
     private static final String URL_SPLIT = "\\s+";
+
+    private final static String TAG = "sd.";
     // Log output
     protected final Logger logger = LoggerFactory.getLogger(getClass());
     // Local disk cache, where the special key value.registies records the list of registry centers, and the others are the list of notified service providers
@@ -70,7 +72,7 @@ public abstract class AbstractServiceStore implements ServiceStore {
     private final ScheduledExecutorService retryExecutor = Executors.newScheduledThreadPool(0, new NamedThreadFactory("DubboRegistryFailedRetryTimer", true));
     private AtomicInteger retryTimes = new AtomicInteger(0);
 
-    public AbstractServiceStore(URL servicestoreURL) {
+    public AbstractMetadataReport(URL servicestoreURL) {
         setUrl(servicestoreURL);
         // Start file save timer
         String filename = servicestoreURL.getParameter(Constants.FILE_KEY, System.getProperty("user.home") + "/.dubbo/dubbo-servicestore-" + servicestoreURL.getParameter(Constants.APPLICATION_KEY) + "-" + servicestoreURL.getAddress() + ".cache");
@@ -99,7 +101,7 @@ public abstract class AbstractServiceStore implements ServiceStore {
                     logger.error("Unexpected error occur at failed retry, cause: " + t.getMessage(), t);
                 }
             }
-        }, 100, 100, TimeUnit.MILLISECONDS);
+        }, 1000, 3000, TimeUnit.MILLISECONDS);
     }
 
     public URL getUrl() {
@@ -235,7 +237,7 @@ public abstract class AbstractServiceStore implements ServiceStore {
                 logger.info("Servicestore Put: " + url);
             }
             failedServiceStore.remove(url);
-            doPutService(url);
+            doPut(url);
             saveProperties(url, true);
         } catch (Exception e) {
             // retry again. If failed again, throw exception.
@@ -250,13 +252,26 @@ public abstract class AbstractServiceStore implements ServiceStore {
             if (logger.isInfoEnabled()) {
                 logger.info("Servicestore Peek: " + url);
             }
-            return doPeekService(url);
+            return doPeek(url);
         } catch (Exception e) {
             logger.error("Failed to peek servicestore " + url + " in  " + getUrl().toFullString() + ", cause: " + e.getMessage(), e);
         }
         return null;
     }
 
+    public String getUrlKey(URL url) {
+        String protocol = getProtocol(url);
+        String app = url.getParameter(Constants.APPLICATION_KEY);
+        String appStr = Constants.PROVIDER_PROTOCOL.equals(protocol) ? "" : (app == null ? "" : (app + "."));
+        return TAG + protocol + "." + appStr + url.getServiceKey();
+    }
+
+    String getProtocol(URL url) {
+        String protocol = url.getParameter(Constants.SIDE_KEY);
+        protocol = protocol == null ? url.getProtocol() : protocol;
+        return protocol;
+    }
+
     public void retry() {
         if (retryTimes.incrementAndGet() > 120000 && failedServiceStore.isEmpty()) {
             retryExecutor.shutdown();
@@ -270,8 +285,8 @@ public abstract class AbstractServiceStore implements ServiceStore {
     }
 
 
-    protected abstract void doPutService(URL url);
+    protected abstract void doPut(URL url);
 
-    protected abstract URL doPeekService(URL url);
+    protected abstract URL doPeek(URL url);
 
 }
diff --git a/dubbo-servicedata/dubbo-servicedata-api/src/main/java/org/apache/dubbo/servicedata/support/AbstractServiceStoreFactory.java b/dubbo-metadata-report/dubbo-metadata-report-api/src/main/java/org/apache/dubbo/metadata/support/AbstractMetadataReportFactory.java
similarity index 65%
rename from dubbo-servicedata/dubbo-servicedata-api/src/main/java/org/apache/dubbo/servicedata/support/AbstractServiceStoreFactory.java
rename to dubbo-metadata-report/dubbo-metadata-report-api/src/main/java/org/apache/dubbo/metadata/support/AbstractMetadataReportFactory.java
index cbc2c7c..7069e20 100644
--- a/dubbo-servicedata/dubbo-servicedata-api/src/main/java/org/apache/dubbo/servicedata/support/AbstractServiceStoreFactory.java
+++ b/dubbo-metadata-report/dubbo-metadata-report-api/src/main/java/org/apache/dubbo/metadata/support/AbstractMetadataReportFactory.java
@@ -14,14 +14,14 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.dubbo.servicedata.support;
+package org.apache.dubbo.metadata.support;
 
 import org.apache.dubbo.common.Constants;
 import org.apache.dubbo.common.URL;
 import org.apache.dubbo.common.logger.Logger;
 import org.apache.dubbo.common.logger.LoggerFactory;
-import org.apache.dubbo.servicedata.store.ServiceStore;
-import org.apache.dubbo.servicedata.store.ServiceStoreFactory;
+import org.apache.dubbo.metadata.store.MetadataReport;
+import org.apache.dubbo.metadata.store.MetadataReportFactory;
 
 import java.util.Collection;
 import java.util.Collections;
@@ -31,50 +31,50 @@ import java.util.concurrent.locks.ReentrantLock;
 
 /**
  */
-public abstract class AbstractServiceStoreFactory implements ServiceStoreFactory {
+public abstract class AbstractMetadataReportFactory implements MetadataReportFactory {
 
     // Log output
-    private static final Logger LOGGER = LoggerFactory.getLogger(AbstractServiceStoreFactory.class);
+    private static final Logger LOGGER = LoggerFactory.getLogger(AbstractMetadataReportFactory.class);
 
     // The lock for the acquisition process of the registry
     private static final ReentrantLock LOCK = new ReentrantLock();
 
     // Registry Collection Map<RegistryAddress, Registry>
-    private static final Map<String, ServiceStore> SERVICE_STORE_MAP = new ConcurrentHashMap<String, ServiceStore>();
+    private static final Map<String, MetadataReport> SERVICE_STORE_MAP = new ConcurrentHashMap<String, MetadataReport>();
 
     /**
      * Get all registries
      *
      * @return all registries
      */
-    public static Collection<ServiceStore> getServiceStores() {
+    public static Collection<MetadataReport> getServiceStores() {
         return Collections.unmodifiableCollection(SERVICE_STORE_MAP.values());
     }
 
     @Override
-    public ServiceStore getServiceStore(URL url) {
-        url = url.setPath(ServiceStore.class.getName())
-                .addParameter(Constants.INTERFACE_KEY, ServiceStore.class.getName())
+    public MetadataReport getServiceStore(URL url) {
+        url = url.setPath(MetadataReport.class.getName())
+                .addParameter(Constants.INTERFACE_KEY, MetadataReport.class.getName())
                 .removeParameters(Constants.EXPORT_KEY, Constants.REFER_KEY);
         String key = url.toServiceString();
         // Lock the registry access process to ensure a single instance of the registry
         LOCK.lock();
         try {
-            ServiceStore serviceStore = SERVICE_STORE_MAP.get(key);
-            if (serviceStore != null) {
-                return serviceStore;
+            MetadataReport metadataReport = SERVICE_STORE_MAP.get(key);
+            if (metadataReport != null) {
+                return metadataReport;
             }
-            serviceStore = createServiceStore(url);
-            if (serviceStore == null) {
+            metadataReport = createServiceStore(url);
+            if (metadataReport == null) {
                 throw new IllegalStateException("Can not create servicestore " + url);
             }
-            SERVICE_STORE_MAP.put(key, serviceStore);
-            return serviceStore;
+            SERVICE_STORE_MAP.put(key, metadataReport);
+            return metadataReport;
         } finally {
             // Release the lock
             LOCK.unlock();
         }
     }
 
-    protected abstract ServiceStore createServiceStore(URL url);
+    protected abstract MetadataReport createServiceStore(URL url);
 }
diff --git a/dubbo-servicedata/dubbo-servicedata-api/src/test/java/org/apache/dubbo/servicedata/integration/InterfaceNameTestService.java b/dubbo-metadata-report/dubbo-metadata-report-api/src/test/java/org/apache/dubbo/metadata/integration/InterfaceNameTestService.java
similarity index 65%
rename from dubbo-servicedata/dubbo-servicedata-api/src/test/java/org/apache/dubbo/servicedata/integration/InterfaceNameTestService.java
rename to dubbo-metadata-report/dubbo-metadata-report-api/src/test/java/org/apache/dubbo/metadata/integration/InterfaceNameTestService.java
index 486db23..839117e 100644
--- a/dubbo-servicedata/dubbo-servicedata-api/src/test/java/org/apache/dubbo/servicedata/integration/InterfaceNameTestService.java
+++ b/dubbo-metadata-report/dubbo-metadata-report-api/src/test/java/org/apache/dubbo/metadata/integration/InterfaceNameTestService.java
@@ -1,4 +1,4 @@
-package org.apache.dubbo.servicedata.integration;
+package org.apache.dubbo.metadata.integration;
 
 /**
  *  2018/9/19
diff --git a/dubbo-servicedata/dubbo-servicedata-api/src/test/java/org/apache/dubbo/servicedata/integration/InterfaceNameTestService2.java b/dubbo-metadata-report/dubbo-metadata-report-api/src/test/java/org/apache/dubbo/metadata/integration/InterfaceNameTestService2.java
similarity index 65%
rename from dubbo-servicedata/dubbo-servicedata-api/src/test/java/org/apache/dubbo/servicedata/integration/InterfaceNameTestService2.java
rename to dubbo-metadata-report/dubbo-metadata-report-api/src/test/java/org/apache/dubbo/metadata/integration/InterfaceNameTestService2.java
index b58f45a..9e65ade 100644
--- a/dubbo-servicedata/dubbo-servicedata-api/src/test/java/org/apache/dubbo/servicedata/integration/InterfaceNameTestService2.java
+++ b/dubbo-metadata-report/dubbo-metadata-report-api/src/test/java/org/apache/dubbo/metadata/integration/InterfaceNameTestService2.java
@@ -1,4 +1,4 @@
-package org.apache.dubbo.servicedata.integration;
+package org.apache.dubbo.metadata.integration;
 
 /**
  *  2018/9/19
diff --git a/dubbo-servicedata/dubbo-servicedata-api/src/test/java/org/apache/dubbo/servicedata/integration/ServiceStoreServiceTest.java b/dubbo-metadata-report/dubbo-metadata-report-api/src/test/java/org/apache/dubbo/metadata/integration/MetadataReportServiceTest.java
similarity index 56%
rename from dubbo-servicedata/dubbo-servicedata-api/src/test/java/org/apache/dubbo/servicedata/integration/ServiceStoreServiceTest.java
rename to dubbo-metadata-report/dubbo-metadata-report-api/src/test/java/org/apache/dubbo/metadata/integration/MetadataReportServiceTest.java
index 8f22431..6f60660 100644
--- a/dubbo-servicedata/dubbo-servicedata-api/src/test/java/org/apache/dubbo/servicedata/integration/ServiceStoreServiceTest.java
+++ b/dubbo-metadata-report/dubbo-metadata-report-api/src/test/java/org/apache/dubbo/metadata/integration/MetadataReportServiceTest.java
@@ -1,9 +1,9 @@
-package org.apache.dubbo.servicedata.integration;
+package org.apache.dubbo.metadata.integration;
 
 import org.apache.dubbo.common.Constants;
 import org.apache.dubbo.common.URL;
 import org.apache.dubbo.common.utils.NetUtils;
-import org.apache.dubbo.servicedata.store.test.JTestServiceStore4Test;
+import org.apache.dubbo.metadata.store.test.JTestMetadataReport4Test;
 import org.junit.Assert;
 import org.junit.Before;
 import org.junit.Test;
@@ -16,14 +16,14 @@ import java.util.function.Supplier;
 /**
  * 2018/9/14
  */
-public class ServiceStoreServiceTest {
+public class MetadataReportServiceTest {
     URL url = URL.valueOf("JTest://" + NetUtils.getLocalAddress().getHostName() + ":4444/org.apache.dubbo.TestService?version=1.0.0&application=vic");
-    ServiceStoreService serviceStoreService1;
+    MetadataReportService metadataReportService1;
 
     @Before
     public void before() {
 
-        serviceStoreService1 = ServiceStoreService.instance(new Supplier<URL>() {
+        metadataReportService1 = MetadataReportService.instance(new Supplier<URL>() {
             @Override
             public URL get() {
                 return url;
@@ -34,14 +34,14 @@ public class ServiceStoreServiceTest {
     @Test
     public void testInstance() {
 
-        ServiceStoreService serviceStoreService2 = ServiceStoreService.instance(new Supplier<URL>() {
+        MetadataReportService metadataReportService2 = MetadataReportService.instance(new Supplier<URL>() {
             @Override
             public URL get() {
                 return url;
             }
         });
-        Assert.assertSame(serviceStoreService1, serviceStoreService2);
-        Assert.assertEquals(serviceStoreService1.serviceStoreUrl, url);
+        Assert.assertSame(metadataReportService1, metadataReportService2);
+        Assert.assertEquals(metadataReportService1.serviceStoreUrl, url);
     }
 
     @Test
@@ -49,15 +49,15 @@ public class ServiceStoreServiceTest {
 
 
         URL publishUrl = URL.valueOf("dubbo://" + NetUtils.getLocalAddress().getHostName() + ":4444/org.apache.dubbo.TestService?version=1.0.0&application=vicpubprovder");
-        serviceStoreService1.publishProvider(publishUrl);
+        metadataReportService1.publishProvider(publishUrl);
 
-        Assert.assertTrue(serviceStoreService1.serviceStore instanceof JTestServiceStore4Test);
-        Assert.assertTrue(serviceStoreService1.providerURLs.size() >= 1);
+        Assert.assertTrue(metadataReportService1.metadataReport instanceof JTestMetadataReport4Test);
+        Assert.assertTrue(metadataReportService1.providerURLs.size() >= 1);
 
-        JTestServiceStore4Test jTestServiceStore4Test = (JTestServiceStore4Test) serviceStoreService1.serviceStore;
-        Assert.assertTrue(jTestServiceStore4Test.store.containsKey(JTestServiceStore4Test.getKey(publishUrl)));
+        JTestMetadataReport4Test jTestServiceStore4Test = (JTestMetadataReport4Test) metadataReportService1.metadataReport;
+        Assert.assertTrue(jTestServiceStore4Test.store.containsKey(JTestMetadataReport4Test.getKey(publishUrl)));
 
-        String value = jTestServiceStore4Test.store.get(JTestServiceStore4Test.getKey(publishUrl));
+        String value = jTestServiceStore4Test.store.get(JTestMetadataReport4Test.getKey(publishUrl));
         Map<String, String> map = queryUrlToMap(value);
         Assert.assertEquals(map.get("application"), "vicpubprovder");
         Assert.assertEquals(map.get("version"), "1.0.0");
@@ -68,15 +68,15 @@ public class ServiceStoreServiceTest {
     public void testPublishProviderWrongInterface() {
 
         URL publishUrl = URL.valueOf("dubbo://" + NetUtils.getLocalAddress().getHostName() + ":4444/org.apache.dubbo.TestService?version=1.0.0&application=vicpu&interface=ccc");
-        serviceStoreService1.publishProvider(publishUrl);
+        metadataReportService1.publishProvider(publishUrl);
 
-        Assert.assertTrue(serviceStoreService1.serviceStore instanceof JTestServiceStore4Test);
-        Assert.assertTrue(serviceStoreService1.providerURLs.size() >= 1);
+        Assert.assertTrue(metadataReportService1.metadataReport instanceof JTestMetadataReport4Test);
+        Assert.assertTrue(metadataReportService1.providerURLs.size() >= 1);
 
-        JTestServiceStore4Test jTestServiceStore4Test = (JTestServiceStore4Test) serviceStoreService1.serviceStore;
-        Assert.assertTrue(jTestServiceStore4Test.store.containsKey(JTestServiceStore4Test.getKey(publishUrl)));
+        JTestMetadataReport4Test jTestServiceStore4Test = (JTestMetadataReport4Test) metadataReportService1.metadataReport;
+        Assert.assertTrue(jTestServiceStore4Test.store.containsKey(JTestMetadataReport4Test.getKey(publishUrl)));
 
-        String value = jTestServiceStore4Test.store.get(JTestServiceStore4Test.getKey(publishUrl));
+        String value = jTestServiceStore4Test.store.get(JTestMetadataReport4Test.getKey(publishUrl));
         Map<String, String> map = queryUrlToMap(value);
         Assert.assertEquals(map.get("application"), "vicpu");
         Assert.assertEquals(map.get("version"), "1.0.0");
@@ -87,20 +87,20 @@ public class ServiceStoreServiceTest {
     @Test
     public void testPublishProviderContainInterface() {
 
-        URL publishUrl = URL.valueOf("dubbo://" + NetUtils.getLocalAddress().getHostName() + ":4444/org.apache.dubbo.TestService?version=1.0.3&application=vicpubp&interface=org.apache.dubbo.servicedata.integration.InterfaceNameTestService");
-        serviceStoreService1.publishProvider(publishUrl);
+        URL publishUrl = URL.valueOf("dubbo://" + NetUtils.getLocalAddress().getHostName() + ":4444/org.apache.dubbo.TestService?version=1.0.3&application=vicpubp&interface=org.apache.dubbo.metadata.integration.InterfaceNameTestService");
+        metadataReportService1.publishProvider(publishUrl);
 
-        Assert.assertTrue(serviceStoreService1.serviceStore instanceof JTestServiceStore4Test);
-        Assert.assertTrue(serviceStoreService1.providerURLs.size() >= 1);
+        Assert.assertTrue(metadataReportService1.metadataReport instanceof JTestMetadataReport4Test);
+        Assert.assertTrue(metadataReportService1.providerURLs.size() >= 1);
 
-        JTestServiceStore4Test jTestServiceStore4Test = (JTestServiceStore4Test) serviceStoreService1.serviceStore;
-        Assert.assertTrue(jTestServiceStore4Test.store.containsKey(JTestServiceStore4Test.getKey(publishUrl)));
+        JTestMetadataReport4Test jTestServiceStore4Test = (JTestMetadataReport4Test) metadataReportService1.metadataReport;
+        Assert.assertTrue(jTestServiceStore4Test.store.containsKey(JTestMetadataReport4Test.getKey(publishUrl)));
 
-        String value = jTestServiceStore4Test.store.get(JTestServiceStore4Test.getKey(publishUrl));
+        String value = jTestServiceStore4Test.store.get(JTestMetadataReport4Test.getKey(publishUrl));
         Map<String, String> map = queryUrlToMap(value);
         Assert.assertEquals(map.get("application"), "vicpubp");
         Assert.assertEquals(map.get("version"), "1.0.3");
-        Assert.assertEquals(map.get("interface"), "org.apache.dubbo.servicedata.integration.InterfaceNameTestService");
+        Assert.assertEquals(map.get("interface"), "org.apache.dubbo.metadata.integration.InterfaceNameTestService");
         Assert.assertNotNull(map.get(Constants.SERVICE_DESCIPTOR_KEY));
     }
 
@@ -108,15 +108,15 @@ public class ServiceStoreServiceTest {
     public void testPublishConsumer() {
 
         URL publishUrl = URL.valueOf("dubbo://" + NetUtils.getLocalAddress().getHostName() + ":4444/org.apache.dubbo.TestService?version=1.0.x&application=vicpubconsumer&side=consumer");
-        serviceStoreService1.publishConsumer(publishUrl);
+        metadataReportService1.publishConsumer(publishUrl);
 
-        Assert.assertTrue(serviceStoreService1.serviceStore instanceof JTestServiceStore4Test);
-        Assert.assertTrue(serviceStoreService1.consumerURLs.size() >= 1);
+        Assert.assertTrue(metadataReportService1.metadataReport instanceof JTestMetadataReport4Test);
+        Assert.assertTrue(metadataReportService1.consumerURLs.size() >= 1);
 
-        JTestServiceStore4Test jTestServiceStore4Test = (JTestServiceStore4Test) serviceStoreService1.serviceStore;
-        Assert.assertTrue(jTestServiceStore4Test.store.containsKey(JTestServiceStore4Test.getKey(publishUrl)));
+        JTestMetadataReport4Test jTestServiceStore4Test = (JTestMetadataReport4Test) metadataReportService1.metadataReport;
+        Assert.assertTrue(jTestServiceStore4Test.store.containsKey(JTestMetadataReport4Test.getKey(publishUrl)));
 
-        String value = jTestServiceStore4Test.store.get(JTestServiceStore4Test.getKey(publishUrl));
+        String value = jTestServiceStore4Test.store.get(JTestMetadataReport4Test.getKey(publishUrl));
         Map<String, String> map = queryUrlToMap(value);
         Assert.assertEquals(map.get("application"), "vicpubconsumer");
         Assert.assertEquals(map.get("version"), "1.0.x");
@@ -127,21 +127,21 @@ public class ServiceStoreServiceTest {
     public void testPublishAll() {
         //need single url
         URL urlTmp = URL.valueOf("JTest://" + NetUtils.getLocalAddress().getHostName() + ":4444/org.apache.dubbo.TestSingleService?version=1.x.x&application=vicss");
-        ServiceStoreService serviceStoreService2 = new ServiceStoreService(urlTmp);
+        MetadataReportService metadataReportService2 = new MetadataReportService(urlTmp);
         URL publishUrl = URL.valueOf("dubbo://" + NetUtils.getLocalAddress().getHostName() + ":4444/org.apache.dubbo.TestService?version=1.0.0&application=vicpubprovder");
-        serviceStoreService2.publishProvider(publishUrl);
-        serviceStoreService2.publishProvider(publishUrl);
-        URL publishUrl2 = URL.valueOf("dubbo://" + NetUtils.getLocalAddress().getHostName() + ":4444/org.apache.dubbo.TestService?version=1.0.3&application=vicpubp&interface=org.apache.dubbo.servicedata.integration.InterfaceNameTestService");
-        serviceStoreService2.publishProvider(publishUrl2);
+        metadataReportService2.publishProvider(publishUrl);
+        metadataReportService2.publishProvider(publishUrl);
+        URL publishUrl2 = URL.valueOf("dubbo://" + NetUtils.getLocalAddress().getHostName() + ":4444/org.apache.dubbo.TestService?version=1.0.3&application=vicpubp&interface=org.apache.dubbo.metadata.integration.InterfaceNameTestService");
+        metadataReportService2.publishProvider(publishUrl2);
         URL publishUrl3 = URL.valueOf("dubbo://" + NetUtils.getLocalAddress().getHostName() + ":4444/org.apache.dubbo.TestService?version=1.0.x&application=vicpubconsumer&side=consumer");
-        serviceStoreService2.publishConsumer(publishUrl3);
+        metadataReportService2.publishConsumer(publishUrl3);
 
-        Assert.assertTrue(serviceStoreService2.providerURLs.size() == 2);
-        Assert.assertTrue(serviceStoreService2.consumerURLs.size() == 1);
+        Assert.assertTrue(metadataReportService2.providerURLs.size() == 2);
+        Assert.assertTrue(metadataReportService2.consumerURLs.size() == 1);
 
-        JTestServiceStore4Test jTestServiceStore4Test = (JTestServiceStore4Test) serviceStoreService2.serviceStore;
+        JTestMetadataReport4Test jTestServiceStore4Test = (JTestMetadataReport4Test) metadataReportService2.metadataReport;
         checkParam(jTestServiceStore4Test, publishUrl, "vicpubprovder", "1.0.0", null);
-        checkParam(jTestServiceStore4Test, publishUrl2, "vicpubp", "1.0.3", "org.apache.dubbo.servicedata.integration.InterfaceNameTestService");
+        checkParam(jTestServiceStore4Test, publishUrl2, "vicpubp", "1.0.3", "org.apache.dubbo.metadata.integration.InterfaceNameTestService");
         checkParam(jTestServiceStore4Test, publishUrl3, "vicpubconsumer", "1.0.x", null);
 
         Assert.assertTrue(jTestServiceStore4Test.store.size() == 3);
@@ -151,16 +151,16 @@ public class ServiceStoreServiceTest {
         Assert.assertTrue(jTestServiceStore4Test.store.isEmpty());
 
         //test
-        serviceStoreService2.publishAll();
+        metadataReportService2.publishAll();
         Assert.assertTrue(jTestServiceStore4Test.store.size() == 3);
 
         checkParam(jTestServiceStore4Test, publishUrl, "vicpubprovder", "1.0.0", null);
-        checkParam(jTestServiceStore4Test, publishUrl2, "vicpubp", "1.0.3", "org.apache.dubbo.servicedata.integration.InterfaceNameTestService");
+        checkParam(jTestServiceStore4Test, publishUrl2, "vicpubp", "1.0.3", "org.apache.dubbo.metadata.integration.InterfaceNameTestService");
         checkParam(jTestServiceStore4Test, publishUrl3, "vicpubconsumer", "1.0.x", null);
     }
 
-    private void checkParam(JTestServiceStore4Test jTestServiceStore4Test, URL publishUrl, String application, String version, String interfaceName) {
-        String value = jTestServiceStore4Test.store.get(JTestServiceStore4Test.getKey(publishUrl));
+    private void checkParam(JTestMetadataReport4Test jTestServiceStore4Test, URL publishUrl, String application, String version, String interfaceName) {
+        String value = jTestServiceStore4Test.store.get(JTestMetadataReport4Test.getKey(publishUrl));
         Map<String, String> map = queryUrlToMap(value);
         Assert.assertEquals(map.get("application"), application);
         Assert.assertEquals(map.get("version"), version);
diff --git a/dubbo-servicedata/dubbo-servicedata-api/src/test/java/org/apache/dubbo/servicedata/metadata/builder/ArrayTypeBuilderTest.java b/dubbo-metadata-report/dubbo-metadata-report-api/src/test/java/org/apache/dubbo/metadata/metadata/builder/ArrayTypeBuilderTest.java
similarity index 87%
rename from dubbo-servicedata/dubbo-servicedata-api/src/test/java/org/apache/dubbo/servicedata/metadata/builder/ArrayTypeBuilderTest.java
rename to dubbo-metadata-report/dubbo-metadata-report-api/src/test/java/org/apache/dubbo/metadata/metadata/builder/ArrayTypeBuilderTest.java
index f2542ea..8486cd9 100644
--- a/dubbo-servicedata/dubbo-servicedata-api/src/test/java/org/apache/dubbo/servicedata/metadata/builder/ArrayTypeBuilderTest.java
+++ b/dubbo-metadata-report/dubbo-metadata-report-api/src/test/java/org/apache/dubbo/metadata/metadata/builder/ArrayTypeBuilderTest.java
@@ -1,14 +1,12 @@
-package org.apache.dubbo.servicedata.metadata.builder;
+package org.apache.dubbo.metadata.metadata.builder;
 
-import org.apache.dubbo.servicedata.metadata.TypeDescriptor;
+import org.apache.dubbo.metadata.metadata.TypeDescriptor;
 import org.junit.Assert;
 import org.junit.Test;
 
 import java.lang.reflect.Array;
 import java.lang.reflect.Method;
-import java.lang.reflect.ParameterizedType;
 import java.lang.reflect.Type;
-import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.Map;
 
@@ -75,17 +73,17 @@ public class ArrayTypeBuilderTest {
         TypeDescriptor td2 = arrayTypeBuilder.build(genericParamTypes[1], paramTypes[1], cache);
         System.out.println(td2);
         Assert.assertNotNull(td2);
-        Assert.assertEquals(td2.getType(), "org.apache.dubbo.servicedata.metadata.builder.ComplexObject[]");
+        Assert.assertEquals(td2.getType(), "org.apache.dubbo.metadata.metadata.builder.ComplexObject[]");
 
         Method readMethod = targetClass.getMethod("testReadComplexArray", int.class);
         Class returnType = readMethod.getReturnType();
         Type genericReturnType = readMethod.getGenericReturnType();
         TypeDescriptor rTd = arrayTypeBuilder.build(genericReturnType, returnType, cache);
         Assert.assertNotNull(rTd);
-        Assert.assertEquals(rTd.getType(), "org.apache.dubbo.servicedata.metadata.builder.ComplexObject[]");
+        Assert.assertEquals(rTd.getType(), "org.apache.dubbo.metadata.metadata.builder.ComplexObject[]");
 
         Assert.assertTrue(cache.size() == 2);
         Assert.assertTrue(cache.get(ComplexObject.class) != null);
-        Assert.assertEquals(cache.get(ComplexObject.class).getType(), "org.apache.dubbo.servicedata.metadata.builder.ComplexObject");
+        Assert.assertEquals(cache.get(ComplexObject.class).getType(), "org.apache.dubbo.metadata.metadata.builder.ComplexObject");
     }
 }
diff --git a/dubbo-servicedata/dubbo-servicedata-api/src/test/java/org/apache/dubbo/servicedata/metadata/builder/CollectionTypeBuilderTest.java b/dubbo-metadata-report/dubbo-metadata-report-api/src/test/java/org/apache/dubbo/metadata/metadata/builder/CollectionTypeBuilderTest.java
similarity index 91%
rename from dubbo-servicedata/dubbo-servicedata-api/src/test/java/org/apache/dubbo/servicedata/metadata/builder/CollectionTypeBuilderTest.java
rename to dubbo-metadata-report/dubbo-metadata-report-api/src/test/java/org/apache/dubbo/metadata/metadata/builder/CollectionTypeBuilderTest.java
index 91c9edf..ceec948 100644
--- a/dubbo-servicedata/dubbo-servicedata-api/src/test/java/org/apache/dubbo/servicedata/metadata/builder/CollectionTypeBuilderTest.java
+++ b/dubbo-metadata-report/dubbo-metadata-report-api/src/test/java/org/apache/dubbo/metadata/metadata/builder/CollectionTypeBuilderTest.java
@@ -1,10 +1,9 @@
-package org.apache.dubbo.servicedata.metadata.builder;
+package org.apache.dubbo.metadata.metadata.builder;
 
-import org.apache.dubbo.servicedata.metadata.TypeDescriptor;
+import org.apache.dubbo.metadata.metadata.TypeDescriptor;
 import org.junit.Assert;
 import org.junit.Test;
 
-import java.lang.reflect.Array;
 import java.lang.reflect.Method;
 import java.lang.reflect.Type;
 import java.util.ArrayList;
@@ -75,17 +74,17 @@ public class CollectionTypeBuilderTest {
         TypeDescriptor td2 = collectionTypeBuilder.build(genericParamTypes[1], paramTypes[1], cache);
         System.out.println(td2);
         Assert.assertNotNull(td2);
-        Assert.assertEquals(td2.getType(), "java.util.List<org.apache.dubbo.servicedata.metadata.builder.ComplexObject>");
+        Assert.assertEquals(td2.getType(), "java.util.List<org.apache.dubbo.metadata.metadata.builder.ComplexObject>");
 
         Method readMethod = targetClass.getMethod("testReadComplexCollection", int.class);
         Class returnType = readMethod.getReturnType();
         Type genericReturnType = readMethod.getGenericReturnType();
         TypeDescriptor rTd = collectionTypeBuilder.build(genericReturnType, returnType, cache);
         Assert.assertNotNull(rTd);
-        Assert.assertEquals(rTd.getType(), "java.util.Set<org.apache.dubbo.servicedata.metadata.builder.ComplexObject>");
+        Assert.assertEquals(rTd.getType(), "java.util.Set<org.apache.dubbo.metadata.metadata.builder.ComplexObject>");
 
         Assert.assertTrue(cache.size() == 2);
         Assert.assertTrue(cache.get(ComplexObject.class) != null);
-        Assert.assertEquals(cache.get(ComplexObject.class).getType(), "org.apache.dubbo.servicedata.metadata.builder.ComplexObject");
+        Assert.assertEquals(cache.get(ComplexObject.class).getType(), "org.apache.dubbo.metadata.metadata.builder.ComplexObject");
     }
 }
diff --git a/dubbo-servicedata/dubbo-servicedata-api/src/test/java/org/apache/dubbo/servicedata/metadata/builder/ComplexEnum.java b/dubbo-metadata-report/dubbo-metadata-report-api/src/test/java/org/apache/dubbo/metadata/metadata/builder/ComplexEnum.java
similarity index 81%
rename from dubbo-servicedata/dubbo-servicedata-api/src/test/java/org/apache/dubbo/servicedata/metadata/builder/ComplexEnum.java
rename to dubbo-metadata-report/dubbo-metadata-report-api/src/test/java/org/apache/dubbo/metadata/metadata/builder/ComplexEnum.java
index 0a637a0..689b89f 100644
--- a/dubbo-servicedata/dubbo-servicedata-api/src/test/java/org/apache/dubbo/servicedata/metadata/builder/ComplexEnum.java
+++ b/dubbo-metadata-report/dubbo-metadata-report-api/src/test/java/org/apache/dubbo/metadata/metadata/builder/ComplexEnum.java
@@ -1,4 +1,4 @@
-package org.apache.dubbo.servicedata.metadata.builder;
+package org.apache.dubbo.metadata.metadata.builder;
 
 /**
  *  2018/9/28
diff --git a/dubbo-servicedata/dubbo-servicedata-api/src/test/java/org/apache/dubbo/servicedata/metadata/builder/ComplexObject.java b/dubbo-metadata-report/dubbo-metadata-report-api/src/test/java/org/apache/dubbo/metadata/metadata/builder/ComplexObject.java
similarity index 92%
rename from dubbo-servicedata/dubbo-servicedata-api/src/test/java/org/apache/dubbo/servicedata/metadata/builder/ComplexObject.java
rename to dubbo-metadata-report/dubbo-metadata-report-api/src/test/java/org/apache/dubbo/metadata/metadata/builder/ComplexObject.java
index 6de58d4..d5f7d29 100644
--- a/dubbo-servicedata/dubbo-servicedata-api/src/test/java/org/apache/dubbo/servicedata/metadata/builder/ComplexObject.java
+++ b/dubbo-metadata-report/dubbo-metadata-report-api/src/test/java/org/apache/dubbo/metadata/metadata/builder/ComplexObject.java
@@ -1,4 +1,4 @@
-package org.apache.dubbo.servicedata.metadata.builder;
+package org.apache.dubbo.metadata.metadata.builder;
 
 import java.util.List;
 import java.util.Map;
diff --git a/dubbo-servicedata/dubbo-servicedata-api/src/test/java/org/apache/dubbo/servicedata/metadata/builder/DefaultTypeBuilderTest.java b/dubbo-metadata-report/dubbo-metadata-report-api/src/test/java/org/apache/dubbo/metadata/metadata/builder/DefaultTypeBuilderTest.java
similarity index 89%
rename from dubbo-servicedata/dubbo-servicedata-api/src/test/java/org/apache/dubbo/servicedata/metadata/builder/DefaultTypeBuilderTest.java
rename to dubbo-metadata-report/dubbo-metadata-report-api/src/test/java/org/apache/dubbo/metadata/metadata/builder/DefaultTypeBuilderTest.java
index f0644a0..2a187d8 100644
--- a/dubbo-servicedata/dubbo-servicedata-api/src/test/java/org/apache/dubbo/servicedata/metadata/builder/DefaultTypeBuilderTest.java
+++ b/dubbo-metadata-report/dubbo-metadata-report-api/src/test/java/org/apache/dubbo/metadata/metadata/builder/DefaultTypeBuilderTest.java
@@ -1,6 +1,6 @@
-package org.apache.dubbo.servicedata.metadata.builder;
+package org.apache.dubbo.metadata.metadata.builder;
 
-import org.apache.dubbo.servicedata.metadata.TypeDescriptor;
+import org.apache.dubbo.metadata.metadata.TypeDescriptor;
 import org.junit.Assert;
 import org.junit.Test;
 
@@ -51,7 +51,7 @@ public class DefaultTypeBuilderTest {
         Map<Class<?>, TypeDescriptor> cache = new HashMap<Class<?>, TypeDescriptor>();
         TypeDescriptor td = DefaultTypeBuilder.build(ComplexObject.class, cache);
         Assert.assertNotNull(td);
-        Assert.assertEquals(td.getType(), "org.apache.dubbo.servicedata.metadata.builder.ComplexObject");
+        Assert.assertEquals(td.getType(), "org.apache.dubbo.metadata.metadata.builder.ComplexObject");
         Assert.assertTrue(td.isCustom());
         Assert.assertTrue(td.getProperties().entrySet().size() >= 4);
 
diff --git a/dubbo-servicedata/dubbo-servicedata-api/src/test/java/org/apache/dubbo/servicedata/metadata/builder/EnumTypeBuilderTest.java b/dubbo-metadata-report/dubbo-metadata-report-api/src/test/java/org/apache/dubbo/metadata/metadata/builder/EnumTypeBuilderTest.java
similarity index 81%
rename from dubbo-servicedata/dubbo-servicedata-api/src/test/java/org/apache/dubbo/servicedata/metadata/builder/EnumTypeBuilderTest.java
rename to dubbo-metadata-report/dubbo-metadata-report-api/src/test/java/org/apache/dubbo/metadata/metadata/builder/EnumTypeBuilderTest.java
index d585fbc..92a9096 100644
--- a/dubbo-servicedata/dubbo-servicedata-api/src/test/java/org/apache/dubbo/servicedata/metadata/builder/EnumTypeBuilderTest.java
+++ b/dubbo-metadata-report/dubbo-metadata-report-api/src/test/java/org/apache/dubbo/metadata/metadata/builder/EnumTypeBuilderTest.java
@@ -1,6 +1,6 @@
-package org.apache.dubbo.servicedata.metadata.builder;
+package org.apache.dubbo.metadata.metadata.builder;
 
-import org.apache.dubbo.servicedata.metadata.TypeDescriptor;
+import org.apache.dubbo.metadata.metadata.TypeDescriptor;
 import org.junit.Assert;
 import org.junit.Test;
 
@@ -8,7 +8,6 @@ import java.lang.reflect.Method;
 import java.lang.reflect.Type;
 import java.util.ArrayList;
 import java.util.HashMap;
-import java.util.List;
 import java.util.Map;
 
 /**
@@ -45,14 +44,14 @@ public class EnumTypeBuilderTest {
         TypeDescriptor td = enumTypeBuilder.build(genericParamTypes[0], paramTypes[0], cache);
         System.out.println(td);
         Assert.assertNotNull(td);
-        Assert.assertEquals(td.getType(), "org.apache.dubbo.servicedata.metadata.builder.SingleEnum");
+        Assert.assertEquals(td.getType(), "org.apache.dubbo.metadata.metadata.builder.SingleEnum");
 
         Method readMethod = targetClass.getMethod("testReadSingleEnum", int.class);
         Class returnType = readMethod.getReturnType();
         Type genericReturnType = readMethod.getGenericReturnType();
         TypeDescriptor rTd = enumTypeBuilder.build(genericReturnType, returnType, cache);
         Assert.assertNotNull(rTd);
-        Assert.assertEquals(rTd.getType(), "org.apache.dubbo.servicedata.metadata.builder.SingleEnum");
+        Assert.assertEquals(rTd.getType(), "org.apache.dubbo.metadata.metadata.builder.SingleEnum");
 
         Assert.assertFalse(cache.isEmpty());
     }
@@ -69,17 +68,17 @@ public class EnumTypeBuilderTest {
         TypeDescriptor td2 = enumTypeBuilder.build(genericParamTypes[0], paramTypes[0], cache);
         System.out.println(td2);
         Assert.assertNotNull(td2);
-        Assert.assertEquals(td2.getType(), "org.apache.dubbo.servicedata.metadata.builder.ComplexEnum");
+        Assert.assertEquals(td2.getType(), "org.apache.dubbo.metadata.metadata.builder.ComplexEnum");
 
         Method readMethod = targetClass.getMethod("testReadComplexEnum", int.class);
         Class returnType = readMethod.getReturnType();
         Type genericReturnType = readMethod.getGenericReturnType();
         TypeDescriptor rTd = enumTypeBuilder.build(genericReturnType, returnType, cache);
         Assert.assertNotNull(rTd);
-        Assert.assertEquals(rTd.getType(), "org.apache.dubbo.servicedata.metadata.builder.ComplexEnum");
+        Assert.assertEquals(rTd.getType(), "org.apache.dubbo.metadata.metadata.builder.ComplexEnum");
 
         Assert.assertTrue(cache.size() == 1);
         Assert.assertTrue(cache.get(ComplexEnum.class) != null);
-        Assert.assertEquals(cache.get(ComplexEnum.class).getType(), "org.apache.dubbo.servicedata.metadata.builder.ComplexEnum");
+        Assert.assertEquals(cache.get(ComplexEnum.class).getType(), "org.apache.dubbo.metadata.metadata.builder.ComplexEnum");
     }
 }
diff --git a/dubbo-servicedata/dubbo-servicedata-api/src/test/java/org/apache/dubbo/servicedata/metadata/builder/MapTypeBuilderTest.java b/dubbo-metadata-report/dubbo-metadata-report-api/src/test/java/org/apache/dubbo/metadata/metadata/builder/MapTypeBuilderTest.java
similarity index 90%
rename from dubbo-servicedata/dubbo-servicedata-api/src/test/java/org/apache/dubbo/servicedata/metadata/builder/MapTypeBuilderTest.java
rename to dubbo-metadata-report/dubbo-metadata-report-api/src/test/java/org/apache/dubbo/metadata/metadata/builder/MapTypeBuilderTest.java
index fe39833..8833df9 100644
--- a/dubbo-servicedata/dubbo-servicedata-api/src/test/java/org/apache/dubbo/servicedata/metadata/builder/MapTypeBuilderTest.java
+++ b/dubbo-metadata-report/dubbo-metadata-report-api/src/test/java/org/apache/dubbo/metadata/metadata/builder/MapTypeBuilderTest.java
@@ -1,6 +1,6 @@
-package org.apache.dubbo.servicedata.metadata.builder;
+package org.apache.dubbo.metadata.metadata.builder;
 
-import org.apache.dubbo.servicedata.metadata.TypeDescriptor;
+import org.apache.dubbo.metadata.metadata.TypeDescriptor;
 import org.junit.Assert;
 import org.junit.Test;
 
@@ -8,7 +8,6 @@ import java.lang.reflect.Method;
 import java.lang.reflect.Type;
 import java.util.ArrayList;
 import java.util.HashMap;
-import java.util.List;
 import java.util.Map;
 
 /**
@@ -74,17 +73,17 @@ public class MapTypeBuilderTest {
         TypeDescriptor td2 = mapTypeBuilder.build(genericParamTypes[1], paramTypes[1], cache);
         System.out.println(td2);
         Assert.assertNotNull(td2);
-        Assert.assertEquals(td2.getType(), "java.util.Map<java.lang.String, org.apache.dubbo.servicedata.metadata.builder.ComplexObject>");
+        Assert.assertEquals(td2.getType(), "java.util.Map<java.lang.String, org.apache.dubbo.metadata.metadata.builder.ComplexObject>");
 
         Method readMethod = targetClass.getMethod("testReadComplexMap", int.class);
         Class returnType = readMethod.getReturnType();
         Type genericReturnType = readMethod.getGenericReturnType();
         TypeDescriptor rTd = mapTypeBuilder.build(genericReturnType, returnType, cache);
         Assert.assertNotNull(rTd);
-        Assert.assertEquals(rTd.getType(), "java.util.Map<java.lang.String, org.apache.dubbo.servicedata.metadata.builder.ComplexObject>");
+        Assert.assertEquals(rTd.getType(), "java.util.Map<java.lang.String, org.apache.dubbo.metadata.metadata.builder.ComplexObject>");
 
         Assert.assertTrue(cache.size() == 2);
         Assert.assertTrue(cache.get(ComplexObject.class) != null);
-        Assert.assertEquals(cache.get(ComplexObject.class).getType(), "org.apache.dubbo.servicedata.metadata.builder.ComplexObject");
+        Assert.assertEquals(cache.get(ComplexObject.class).getType(), "org.apache.dubbo.metadata.metadata.builder.ComplexObject");
     }
 }
diff --git a/dubbo-servicedata/dubbo-servicedata-api/src/test/java/org/apache/dubbo/servicedata/metadata/builder/ServiceDescriptorBuilderTest.java b/dubbo-metadata-report/dubbo-metadata-report-api/src/test/java/org/apache/dubbo/metadata/metadata/builder/ServiceDescriptorBuilderTest.java
similarity index 84%
rename from dubbo-servicedata/dubbo-servicedata-api/src/test/java/org/apache/dubbo/servicedata/metadata/builder/ServiceDescriptorBuilderTest.java
rename to dubbo-metadata-report/dubbo-metadata-report-api/src/test/java/org/apache/dubbo/metadata/metadata/builder/ServiceDescriptorBuilderTest.java
index 1c76882..1abe7a6 100644
--- a/dubbo-servicedata/dubbo-servicedata-api/src/test/java/org/apache/dubbo/servicedata/metadata/builder/ServiceDescriptorBuilderTest.java
+++ b/dubbo-metadata-report/dubbo-metadata-report-api/src/test/java/org/apache/dubbo/metadata/metadata/builder/ServiceDescriptorBuilderTest.java
@@ -1,6 +1,6 @@
-package org.apache.dubbo.servicedata.metadata.builder;
+package org.apache.dubbo.metadata.metadata.builder;
 
-import org.apache.dubbo.servicedata.metadata.ServiceDescriptor;
+import org.apache.dubbo.metadata.metadata.ServiceDescriptor;
 import org.junit.Assert;
 import org.junit.Test;
 
diff --git a/dubbo-servicedata/dubbo-servicedata-api/src/test/java/org/apache/dubbo/servicedata/metadata/builder/SingleEnum.java b/dubbo-metadata-report/dubbo-metadata-report-api/src/test/java/org/apache/dubbo/metadata/metadata/builder/SingleEnum.java
similarity index 54%
rename from dubbo-servicedata/dubbo-servicedata-api/src/test/java/org/apache/dubbo/servicedata/metadata/builder/SingleEnum.java
rename to dubbo-metadata-report/dubbo-metadata-report-api/src/test/java/org/apache/dubbo/metadata/metadata/builder/SingleEnum.java
index a9a2deb..18103b8 100644
--- a/dubbo-servicedata/dubbo-servicedata-api/src/test/java/org/apache/dubbo/servicedata/metadata/builder/SingleEnum.java
+++ b/dubbo-metadata-report/dubbo-metadata-report-api/src/test/java/org/apache/dubbo/metadata/metadata/builder/SingleEnum.java
@@ -1,4 +1,4 @@
-package org.apache.dubbo.servicedata.metadata.builder;
+package org.apache.dubbo.metadata.metadata.builder;
 
 /**
  *  2018/9/28
diff --git a/dubbo-servicedata/dubbo-servicedata-api/src/test/java/org/apache/dubbo/servicedata/metadata/builder/TestService.java b/dubbo-metadata-report/dubbo-metadata-report-api/src/test/java/org/apache/dubbo/metadata/metadata/builder/TestService.java
similarity index 95%
rename from dubbo-servicedata/dubbo-servicedata-api/src/test/java/org/apache/dubbo/servicedata/metadata/builder/TestService.java
rename to dubbo-metadata-report/dubbo-metadata-report-api/src/test/java/org/apache/dubbo/metadata/metadata/builder/TestService.java
index d3c6fad..286e6c3 100644
--- a/dubbo-servicedata/dubbo-servicedata-api/src/test/java/org/apache/dubbo/servicedata/metadata/builder/TestService.java
+++ b/dubbo-metadata-report/dubbo-metadata-report-api/src/test/java/org/apache/dubbo/metadata/metadata/builder/TestService.java
@@ -1,4 +1,4 @@
-package org.apache.dubbo.servicedata.metadata.builder;
+package org.apache.dubbo.metadata.metadata.builder;
 
 import java.util.List;
 import java.util.Map;
diff --git a/dubbo-servicedata/dubbo-servicedata-api/src/test/java/org/apache/dubbo/servicedata/metadata/builder/TypeDescriptorBuilderTest.java b/dubbo-metadata-report/dubbo-metadata-report-api/src/test/java/org/apache/dubbo/metadata/metadata/builder/TypeDescriptorBuilderTest.java
similarity index 93%
rename from dubbo-servicedata/dubbo-servicedata-api/src/test/java/org/apache/dubbo/servicedata/metadata/builder/TypeDescriptorBuilderTest.java
rename to dubbo-metadata-report/dubbo-metadata-report-api/src/test/java/org/apache/dubbo/metadata/metadata/builder/TypeDescriptorBuilderTest.java
index fd072cc..8723a66 100644
--- a/dubbo-servicedata/dubbo-servicedata-api/src/test/java/org/apache/dubbo/servicedata/metadata/builder/TypeDescriptorBuilderTest.java
+++ b/dubbo-metadata-report/dubbo-metadata-report-api/src/test/java/org/apache/dubbo/metadata/metadata/builder/TypeDescriptorBuilderTest.java
@@ -1,6 +1,6 @@
-package org.apache.dubbo.servicedata.metadata.builder;
+package org.apache.dubbo.metadata.metadata.builder;
 
-import org.apache.dubbo.servicedata.metadata.TypeDescriptor;
+import org.apache.dubbo.metadata.metadata.TypeDescriptor;
 import org.junit.Assert;
 import org.junit.Test;
 
@@ -51,7 +51,7 @@ public class TypeDescriptorBuilderTest {
 
         TypeDescriptor td = TypeDescriptorBuilder.build(genericParamTypes[0], paramTypes[0], cache);
         Assert.assertNotNull(td);
-        Assert.assertEquals(td.getType(), "org.apache.dubbo.servicedata.metadata.builder.ComplexObject");
+        Assert.assertEquals(td.getType(), "org.apache.dubbo.metadata.metadata.builder.ComplexObject");
         Assert.assertTrue(td.isCustom());
         Assert.assertTrue(td.getProperties().entrySet().size() >= 4);
 
@@ -77,7 +77,7 @@ public class TypeDescriptorBuilderTest {
 
         TypeDescriptor td = typeDescriptorBuilder.build(genericParamTypes[0], paramTypes[0]);
         Assert.assertNotNull(td);
-        Assert.assertEquals(td.getType(), "org.apache.dubbo.servicedata.metadata.builder.ComplexObject");
+        Assert.assertEquals(td.getType(), "org.apache.dubbo.metadata.metadata.builder.ComplexObject");
         Assert.assertTrue(td.isCustom());
         Assert.assertTrue(td.getProperties().entrySet().size() >= 4);
 
diff --git a/dubbo-servicedata/dubbo-servicedata-api/src/test/java/org/apache/dubbo/servicedata/store/test/JTestServiceStore4Test.java b/dubbo-metadata-report/dubbo-metadata-report-api/src/test/java/org/apache/dubbo/metadata/store/test/JTestMetadataReport4Test.java
similarity index 82%
rename from dubbo-servicedata/dubbo-servicedata-api/src/test/java/org/apache/dubbo/servicedata/store/test/JTestServiceStore4Test.java
rename to dubbo-metadata-report/dubbo-metadata-report-api/src/test/java/org/apache/dubbo/metadata/store/test/JTestMetadataReport4Test.java
index 833eba9..fbe7201 100644
--- a/dubbo-servicedata/dubbo-servicedata-api/src/test/java/org/apache/dubbo/servicedata/store/test/JTestServiceStore4Test.java
+++ b/dubbo-metadata-report/dubbo-metadata-report-api/src/test/java/org/apache/dubbo/metadata/store/test/JTestMetadataReport4Test.java
@@ -14,14 +14,14 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.dubbo.servicedata.store.test;
+package org.apache.dubbo.metadata.store.test;
 
 import org.apache.dubbo.common.Constants;
 import org.apache.dubbo.common.URL;
 import org.apache.dubbo.common.logger.Logger;
 import org.apache.dubbo.common.logger.LoggerFactory;
 import org.apache.dubbo.remoting.zookeeper.ZookeeperTransporter;
-import org.apache.dubbo.servicedata.support.AbstractServiceStore;
+import org.apache.dubbo.metadata.support.AbstractMetadataReport;
 
 import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
@@ -29,25 +29,25 @@ import java.util.concurrent.ConcurrentHashMap;
 /**
  * ZookeeperRegistry
  */
-public class JTestServiceStore4Test extends AbstractServiceStore {
+public class JTestMetadataReport4Test extends AbstractMetadataReport {
 
-    private final static Logger logger = LoggerFactory.getLogger(JTestServiceStore4Test.class);
+    private final static Logger logger = LoggerFactory.getLogger(JTestMetadataReport4Test.class);
 
 
 
-    public JTestServiceStore4Test(URL url, ZookeeperTransporter zookeeperTransporter) {
+    public JTestMetadataReport4Test(URL url, ZookeeperTransporter zookeeperTransporter) {
         super(url);
     }
 
     public Map<String, String> store = new ConcurrentHashMap<>();
 
     @Override
-    protected void doPutService(URL url) {
+    protected void doPut(URL url) {
         store.put(getKey(url), url.toParameterString());
     }
 
     @Override
-    protected URL doPeekService(URL url) {
+    protected URL doPeek(URL url) {
         String queryV = store.get(getKey(url));
         return url.clearParameters().addParameterString(queryV);
     }
diff --git a/dubbo-servicedata/dubbo-servicedata-zookeeper/src/main/java/org/apache/dubbo/servicedata/store/zookeeper/ZookeeperServiceStoreFactory.java b/dubbo-metadata-report/dubbo-metadata-report-api/src/test/java/org/apache/dubbo/metadata/store/test/JTestMetadataReportFactory4Test.java
similarity index 75%
rename from dubbo-servicedata/dubbo-servicedata-zookeeper/src/main/java/org/apache/dubbo/servicedata/store/zookeeper/ZookeeperServiceStoreFactory.java
rename to dubbo-metadata-report/dubbo-metadata-report-api/src/test/java/org/apache/dubbo/metadata/store/test/JTestMetadataReportFactory4Test.java
index e9aee2c..67b4038 100644
--- a/dubbo-servicedata/dubbo-servicedata-zookeeper/src/main/java/org/apache/dubbo/servicedata/store/zookeeper/ZookeeperServiceStoreFactory.java
+++ b/dubbo-metadata-report/dubbo-metadata-report-api/src/test/java/org/apache/dubbo/metadata/store/test/JTestMetadataReportFactory4Test.java
@@ -14,18 +14,18 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.dubbo.servicedata.store.zookeeper;
+package org.apache.dubbo.metadata.store.test;
 
 import org.apache.dubbo.common.URL;
 import org.apache.dubbo.remoting.zookeeper.ZookeeperTransporter;
-import org.apache.dubbo.servicedata.store.ServiceStore;
-import org.apache.dubbo.servicedata.support.AbstractServiceStoreFactory;
+import org.apache.dubbo.metadata.store.MetadataReport;
+import org.apache.dubbo.metadata.support.AbstractMetadataReportFactory;
 
 /**
  * ZookeeperRegistryFactory.
  *
  */
-public class ZookeeperServiceStoreFactory extends AbstractServiceStoreFactory {
+public class JTestMetadataReportFactory4Test extends AbstractMetadataReportFactory {
 
     private ZookeeperTransporter zookeeperTransporter;
 
@@ -34,8 +34,8 @@ public class ZookeeperServiceStoreFactory extends AbstractServiceStoreFactory {
     }
 
     @Override
-    public ServiceStore createServiceStore(URL url) {
-        return new ZookeeperServiceStore(url, zookeeperTransporter);
+    public MetadataReport createServiceStore(URL url) {
+        return new JTestMetadataReport4Test(url, zookeeperTransporter);
     }
 
 }
diff --git a/dubbo-servicedata/dubbo-servicedata-api/src/test/java/org/apache/dubbo/servicedata/support/AbstractServiceStoreFactoryTest.java b/dubbo-metadata-report/dubbo-metadata-report-api/src/test/java/org/apache/dubbo/metadata/support/AbstractMetadataReportFactoryTest.java
similarity index 62%
rename from dubbo-servicedata/dubbo-servicedata-api/src/test/java/org/apache/dubbo/servicedata/support/AbstractServiceStoreFactoryTest.java
rename to dubbo-metadata-report/dubbo-metadata-report-api/src/test/java/org/apache/dubbo/metadata/support/AbstractMetadataReportFactoryTest.java
index 855d9a3..1ddb70b 100644
--- a/dubbo-servicedata/dubbo-servicedata-api/src/test/java/org/apache/dubbo/servicedata/support/AbstractServiceStoreFactoryTest.java
+++ b/dubbo-metadata-report/dubbo-metadata-report-api/src/test/java/org/apache/dubbo/metadata/support/AbstractMetadataReportFactoryTest.java
@@ -1,8 +1,8 @@
-package org.apache.dubbo.servicedata.support;
+package org.apache.dubbo.metadata.support;
 
 import org.apache.dubbo.common.URL;
 import org.apache.dubbo.common.utils.NetUtils;
-import org.apache.dubbo.servicedata.store.ServiceStore;
+import org.apache.dubbo.metadata.store.MetadataReport;
 import org.junit.Assert;
 import org.junit.Test;
 
@@ -12,12 +12,12 @@ import java.util.concurrent.ConcurrentHashMap;
 /**
  *  2018/9/14
  */
-public class AbstractServiceStoreFactoryTest {
+public class AbstractMetadataReportFactoryTest {
 
-    private AbstractServiceStoreFactory serviceStoreFactory = new AbstractServiceStoreFactory() {
+    private AbstractMetadataReportFactory serviceStoreFactory = new AbstractMetadataReportFactory() {
         @Override
-        protected ServiceStore createServiceStore(URL url) {
-            return new ServiceStore() {
+        protected MetadataReport createServiceStore(URL url) {
+            return new MetadataReport() {
 
                 Map<String, String> store = new ConcurrentHashMap<>();
 
@@ -38,35 +38,35 @@ public class AbstractServiceStoreFactoryTest {
     @Test
     public void testGetOneServiceStore() {
         URL url = URL.valueOf("zookeeper://" + NetUtils.getLocalAddress().getHostName() + ":4444/org.apache.dubbo.TestService?version=1.0.0&application=vic");
-        ServiceStore serviceStore1 = serviceStoreFactory.getServiceStore(url);
-        ServiceStore serviceStore2 = serviceStoreFactory.getServiceStore(url);
-        Assert.assertEquals(serviceStore1, serviceStore2);
+        MetadataReport metadataReport1 = serviceStoreFactory.getServiceStore(url);
+        MetadataReport metadataReport2 = serviceStoreFactory.getServiceStore(url);
+        Assert.assertEquals(metadataReport1, metadataReport2);
     }
 
     @Test
     public void testGetOneServiceStoreForIpFormat() {
         URL url1 = URL.valueOf("zookeeper://" + NetUtils.getLocalAddress().getHostName() + ":4444/org.apache.dubbo.TestService?version=1.0.0&application=vic");
         URL url2 = URL.valueOf("zookeeper://" + NetUtils.getLocalAddress().getHostAddress() + ":4444/org.apache.dubbo.TestService?version=1.0.0&application=vic");
-        ServiceStore serviceStore1 = serviceStoreFactory.getServiceStore(url1);
-        ServiceStore serviceStore2 = serviceStoreFactory.getServiceStore(url2);
-        Assert.assertEquals(serviceStore1, serviceStore2);
+        MetadataReport metadataReport1 = serviceStoreFactory.getServiceStore(url1);
+        MetadataReport metadataReport2 = serviceStoreFactory.getServiceStore(url2);
+        Assert.assertEquals(metadataReport1, metadataReport2);
     }
 
     @Test
     public void testGetForDiffService() {
         URL url1 = URL.valueOf("zookeeper://" + NetUtils.getLocalAddress().getHostName() + ":4444/org.apache.dubbo.TestService1?version=1.0.0&application=vic");
         URL url2 = URL.valueOf("zookeeper://" + NetUtils.getLocalAddress().getHostName() + ":4444/org.apache.dubbo.TestService2?version=1.0.0&application=vic");
-        ServiceStore serviceStore1 = serviceStoreFactory.getServiceStore(url1);
-        ServiceStore serviceStore2 = serviceStoreFactory.getServiceStore(url2);
-        Assert.assertEquals(serviceStore1, serviceStore2);
+        MetadataReport metadataReport1 = serviceStoreFactory.getServiceStore(url1);
+        MetadataReport metadataReport2 = serviceStoreFactory.getServiceStore(url2);
+        Assert.assertEquals(metadataReport1, metadataReport2);
     }
 
     @Test
     public void testGetForDiffGroup() {
         URL url1 = URL.valueOf("zookeeper://" + NetUtils.getLocalAddress().getHostName() + ":4444/org.apache.dubbo.TestService?version=1.0.0&application=vic&group=aaa");
         URL url2 = URL.valueOf("zookeeper://" + NetUtils.getLocalAddress().getHostName() + ":4444/org.apache.dubbo.TestService?version=1.0.0&application=vic&group=bbb");
-        ServiceStore serviceStore1 = serviceStoreFactory.getServiceStore(url1);
-        ServiceStore serviceStore2 = serviceStoreFactory.getServiceStore(url2);
-        Assert.assertNotEquals(serviceStore1, serviceStore2);
+        MetadataReport metadataReport1 = serviceStoreFactory.getServiceStore(url1);
+        MetadataReport metadataReport2 = serviceStoreFactory.getServiceStore(url2);
+        Assert.assertNotEquals(metadataReport1, metadataReport2);
     }
 }
diff --git a/dubbo-servicedata/dubbo-servicedata-api/src/test/java/org/apache/dubbo/servicedata/support/AbstractServiceStoreTest.java b/dubbo-metadata-report/dubbo-metadata-report-api/src/test/java/org/apache/dubbo/metadata/support/AbstractMetadataReportTest.java
similarity index 76%
rename from dubbo-servicedata/dubbo-servicedata-api/src/test/java/org/apache/dubbo/servicedata/support/AbstractServiceStoreTest.java
rename to dubbo-metadata-report/dubbo-metadata-report-api/src/test/java/org/apache/dubbo/metadata/support/AbstractMetadataReportTest.java
index 4df7f47..84f65ce 100644
--- a/dubbo-servicedata/dubbo-servicedata-api/src/test/java/org/apache/dubbo/servicedata/support/AbstractServiceStoreTest.java
+++ b/dubbo-metadata-report/dubbo-metadata-report-api/src/test/java/org/apache/dubbo/metadata/support/AbstractMetadataReportTest.java
@@ -14,31 +14,40 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.dubbo.servicedata.support;
+package org.apache.dubbo.metadata.support;
 
 import org.apache.dubbo.common.URL;
 import org.apache.dubbo.common.utils.NetUtils;
 import org.junit.Assert;
 import org.junit.Before;
-import org.junit.BeforeClass;
 import org.junit.Test;
 
-import java.util.List;
 import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
 
 /**
  *
  */
-public class AbstractServiceStoreTest {
+public class AbstractMetadataReportTest {
 
-    private NewServiceStore abstractServiceStore;
+    private NewMetadataReport abstractServiceStore;
 
 
     @Before
     public void before() {
         URL url = URL.valueOf("zookeeper://" + NetUtils.getLocalAddress().getHostName() + ":4444/org.apache.dubbo.TestService?version=1.0.0&application=vic");
-        abstractServiceStore = new NewServiceStore(url);
+        abstractServiceStore = new NewMetadataReport(url);
+    }
+
+    @Test
+    public void testGetProtocol(){
+        URL url = URL.valueOf("dubbo://" + NetUtils.getLocalAddress().getHostName() + ":4444/org.apache.dubbo.TestService?version=1.0.0&application=vic&side=provider");
+        String protocol = abstractServiceStore.getProtocol(url);
+        Assert.assertEquals(protocol, "provider");
+
+        URL url2 = URL.valueOf("consumer://" + NetUtils.getLocalAddress().getHostName() + ":4444/org.apache.dubbo.TestService?version=1.0.0&application=vic");
+        String protocol2 = abstractServiceStore.getProtocol(url2);
+        Assert.assertEquals(protocol2, "consumer");
     }
 
     @Test
@@ -68,7 +77,7 @@ public class AbstractServiceStoreTest {
     public void testFileExistAfterPut() throws InterruptedException {
         //just for one method
         URL singleUrl = URL.valueOf("redis://" + NetUtils.getLocalAddress().getHostName() + ":4444/org.apache.dubbo.TestService?version=1.0.0&application=singleTest");
-        NewServiceStore singleServiceStore = new NewServiceStore(singleUrl);
+        NewMetadataReport singleServiceStore = new NewMetadataReport(singleUrl);
 
         Assert.assertFalse(singleServiceStore.file.exists());
         URL url = URL.valueOf("dubbo://" + NetUtils.getLocalAddress().getHostName() + ":4444/org.apache.dubbo.TestService?version=1.0.0&application=vic");
@@ -87,21 +96,21 @@ public class AbstractServiceStoreTest {
     }
 
 
-    private static class NewServiceStore extends AbstractServiceStore {
+    private static class NewMetadataReport extends AbstractMetadataReport {
 
         Map<String, String> store = new ConcurrentHashMap<>();
 
-        public NewServiceStore(URL servicestoreURL) {
+        public NewMetadataReport(URL servicestoreURL) {
             super(servicestoreURL);
         }
 
         @Override
-        protected void doPutService(URL url) {
+        protected void doPut(URL url) {
             store.put(url.getServiceKey(), url.toParameterString());
         }
 
         @Override
-        protected URL doPeekService(URL url) {
+        protected URL doPeek(URL url) {
             String queryV = store.get(url.getServiceKey());
             URL urlTmp = url.clearParameters().addParameterString(queryV);
             return urlTmp;
diff --git a/dubbo-metadata-report/dubbo-metadata-report-api/src/test/resources/META-INF/dubbo/internal/org.apache.dubbo.servicedata.store.ServiceStoreFactory b/dubbo-metadata-report/dubbo-metadata-report-api/src/test/resources/META-INF/dubbo/internal/org.apache.dubbo.servicedata.store.ServiceStoreFactory
new file mode 100644
index 0000000..bf84023
--- /dev/null
+++ b/dubbo-metadata-report/dubbo-metadata-report-api/src/test/resources/META-INF/dubbo/internal/org.apache.dubbo.servicedata.store.ServiceStoreFactory
@@ -0,0 +1 @@
+JTest=org.apache.dubbo.metadata.store.test.JTestMetadataReportFactory4Test
diff --git a/dubbo-servicedata/dubbo-servicedata-redis/pom.xml b/dubbo-metadata-report/dubbo-metadata-report-redis/pom.xml
similarity index 91%
rename from dubbo-servicedata/dubbo-servicedata-redis/pom.xml
rename to dubbo-metadata-report/dubbo-metadata-report-redis/pom.xml
index 9e82707..ecdf91f 100644
--- a/dubbo-servicedata/dubbo-servicedata-redis/pom.xml
+++ b/dubbo-metadata-report/dubbo-metadata-report-redis/pom.xml
@@ -18,13 +18,13 @@
          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-servicedata</artifactId>
+        <artifactId>dubbo-metadata-report</artifactId>
         <groupId>org.apache.dubbo</groupId>
         <version>2.7.0-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
-    <artifactId>dubbo-servicedata-redis</artifactId>
+    <artifactId>dubbo-metadata-report-redis</artifactId>
     <properties>
         <jedis.version>2.9.0</jedis.version>
     </properties>
@@ -32,7 +32,7 @@
     <dependencies>
         <dependency>
             <groupId>org.apache.dubbo</groupId>
-            <artifactId>dubbo-servicedata-api</artifactId>
+            <artifactId>dubbo-metadata-report-api</artifactId>
             <version>${project.parent.version}</version>
         </dependency>
         <dependency>
diff --git a/dubbo-servicedata/dubbo-servicedata-redis/src/main/java/org/apache/dubbo/servicedata/store/redis/RedisServiceStore.java b/dubbo-metadata-report/dubbo-metadata-report-redis/src/main/java/org/apache/dubbo/metadata/store/redis/RedisMetadataReport.java
similarity index 66%
rename from dubbo-servicedata/dubbo-servicedata-redis/src/main/java/org/apache/dubbo/servicedata/store/redis/RedisServiceStore.java
rename to dubbo-metadata-report/dubbo-metadata-report-redis/src/main/java/org/apache/dubbo/metadata/store/redis/RedisMetadataReport.java
index 7b38e24..1a1128c 100644
--- a/dubbo-servicedata/dubbo-servicedata-redis/src/main/java/org/apache/dubbo/servicedata/store/redis/RedisServiceStore.java
+++ b/dubbo-metadata-report/dubbo-metadata-report-redis/src/main/java/org/apache/dubbo/metadata/store/redis/RedisMetadataReport.java
@@ -14,14 +14,13 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.dubbo.servicedata.store.redis;
+package org.apache.dubbo.metadata.store.redis;
 
-import org.apache.dubbo.common.Constants;
 import org.apache.dubbo.common.URL;
 import org.apache.dubbo.common.logger.Logger;
 import org.apache.dubbo.common.logger.LoggerFactory;
 import org.apache.dubbo.rpc.RpcException;
-import org.apache.dubbo.servicedata.support.AbstractServiceStore;
+import org.apache.dubbo.metadata.support.AbstractMetadataReport;
 import redis.clients.jedis.Jedis;
 import redis.clients.jedis.JedisPool;
 import redis.clients.jedis.JedisPoolConfig;
@@ -29,23 +28,21 @@ import redis.clients.jedis.JedisPoolConfig;
 /**
  * ZookeeperRegistry
  */
-public class RedisServiceStore extends AbstractServiceStore {
+public class RedisMetadataReport extends AbstractMetadataReport {
 
-    private final static Logger logger = LoggerFactory.getLogger(RedisServiceStore.class);
-
-    private final static String TAG = "sd.";
+    private final static Logger logger = LoggerFactory.getLogger(RedisMetadataReport.class);
 
     final JedisPool pool;
 
-    public RedisServiceStore(URL url) {
+    public RedisMetadataReport(URL url) {
         super(url);
         pool = new JedisPool(new JedisPoolConfig(), url.getHost(), url.getPort());
     }
 
     @Override
-    protected void doPutService(URL url) {
+    protected void doPut(URL url) {
         try (Jedis jedis = pool.getResource()) {
-            jedis.set(getKey(url), url.toParameterString());
+            jedis.set(getUrlKey(url), url.toParameterString());
         } catch (Throwable e) {
             logger.error("Failed to put " + url + " to redis " + url + ", cause: " + e.getMessage(), e);
             throw new RpcException("Failed to put " + url + " to redis " + getUrl() + ", cause: " + e.getMessage(), e);
@@ -53,9 +50,9 @@ public class RedisServiceStore extends AbstractServiceStore {
     }
 
     @Override
-    protected URL doPeekService(URL url) {
+    protected URL doPeek(URL url) {
         try (Jedis jedis = pool.getResource()) {
-            String value = jedis.get(getKey(url));
+            String value = jedis.get(getUrlKey(url));
             if (value == null) {
                 return null;
             }
@@ -66,18 +63,4 @@ public class RedisServiceStore extends AbstractServiceStore {
         }
     }
 
-    String getKey(URL url) {
-        String protocol = getProtocol(url);
-        String app = url.getParameter(Constants.APPLICATION_KEY);
-        String appStr = Constants.PROVIDER_PROTOCOL.equals(protocol) ? "" : (app == null ? "" : (app + "."));
-        return TAG + protocol + "." + appStr + url.getServiceKey();
-    }
-
-    String getProtocol(URL url) {
-        String protocol = url.getParameter(Constants.SIDE_KEY);
-        protocol = protocol == null ? url.getProtocol() : protocol;
-        return protocol;
-    }
-
-
 }
diff --git a/dubbo-servicedata/dubbo-servicedata-redis/src/main/java/org/apache/dubbo/servicedata/store/redis/RedisServiceStoreFactory.java b/dubbo-metadata-report/dubbo-metadata-report-redis/src/main/java/org/apache/dubbo/metadata/store/redis/RedisMetadataReportFactory.java
similarity index 71%
rename from dubbo-servicedata/dubbo-servicedata-redis/src/main/java/org/apache/dubbo/servicedata/store/redis/RedisServiceStoreFactory.java
rename to dubbo-metadata-report/dubbo-metadata-report-redis/src/main/java/org/apache/dubbo/metadata/store/redis/RedisMetadataReportFactory.java
index e308190..58da7c0 100644
--- a/dubbo-servicedata/dubbo-servicedata-redis/src/main/java/org/apache/dubbo/servicedata/store/redis/RedisServiceStoreFactory.java
+++ b/dubbo-metadata-report/dubbo-metadata-report-redis/src/main/java/org/apache/dubbo/metadata/store/redis/RedisMetadataReportFactory.java
@@ -14,22 +14,22 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.dubbo.servicedata.store.redis;
+package org.apache.dubbo.metadata.store.redis;
 
 import org.apache.dubbo.common.URL;
-import org.apache.dubbo.servicedata.store.ServiceStore;
-import org.apache.dubbo.servicedata.support.AbstractServiceStoreFactory;
+import org.apache.dubbo.metadata.store.MetadataReport;
+import org.apache.dubbo.metadata.support.AbstractMetadataReportFactory;
 
 /**
  * ZookeeperRegistryFactory.
  *
  */
-public class RedisServiceStoreFactory extends AbstractServiceStoreFactory {
+public class RedisMetadataReportFactory extends AbstractMetadataReportFactory {
 
 
     @Override
-    public ServiceStore createServiceStore(URL url) {
-        return new RedisServiceStore(url);
+    public MetadataReport createServiceStore(URL url) {
+        return new RedisMetadataReport(url);
     }
 
 }
diff --git a/dubbo-metadata-report/dubbo-metadata-report-redis/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.servicedata.store.ServiceStoreFactory b/dubbo-metadata-report/dubbo-metadata-report-redis/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.servicedata.store.ServiceStoreFactory
new file mode 100644
index 0000000..2e6effa
--- /dev/null
+++ b/dubbo-metadata-report/dubbo-metadata-report-redis/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.servicedata.store.ServiceStoreFactory
@@ -0,0 +1 @@
+redis=org.apache.dubbo.metadata.store.redis.RedisMetadataReportFactory
diff --git a/dubbo-servicedata/dubbo-servicedata-redis/src/test/java/org/apache/dubbo/servicedata/store/redis/RedisServiceStoreTest.java b/dubbo-metadata-report/dubbo-metadata-report-redis/src/test/java/org/apache/dubbo/metadata/store/redis/RedisMetadataReportTest.java
similarity index 72%
rename from dubbo-servicedata/dubbo-servicedata-redis/src/test/java/org/apache/dubbo/servicedata/store/redis/RedisServiceStoreTest.java
rename to dubbo-metadata-report/dubbo-metadata-report-redis/src/test/java/org/apache/dubbo/metadata/store/redis/RedisMetadataReportTest.java
index f0cb2cb..d8e8554 100644
--- a/dubbo-servicedata/dubbo-servicedata-redis/src/test/java/org/apache/dubbo/servicedata/store/redis/RedisServiceStoreTest.java
+++ b/dubbo-metadata-report/dubbo-metadata-report-redis/src/test/java/org/apache/dubbo/metadata/store/redis/RedisMetadataReportTest.java
@@ -1,4 +1,4 @@
-package org.apache.dubbo.servicedata.store.redis;
+package org.apache.dubbo.metadata.store.redis;
 
 import org.apache.dubbo.common.URL;
 import org.apache.dubbo.common.utils.NetUtils;
@@ -15,8 +15,8 @@ import java.io.IOException;
 /**
  *  2018/10/9
  */
-public class RedisServiceStoreTest {
-    RedisServiceStore redisServiceStore;
+public class RedisMetadataReportTest {
+    RedisMetadataReport redisServiceStore;
     RedisServer redisServer;
 
     @Before
@@ -25,7 +25,7 @@ public class RedisServiceStoreTest {
         this.redisServer = new RedisServer(redisPort);
         this.redisServer.start();
         URL registryUrl = URL.valueOf("redis://localhost:" + redisPort);
-        redisServiceStore = (RedisServiceStore) new RedisServiceStoreFactory().createServiceStore(registryUrl);
+        redisServiceStore = (RedisMetadataReport) new RedisMetadataReportFactory().createServiceStore(registryUrl);
     }
 
     @After
@@ -33,25 +33,16 @@ public class RedisServiceStoreTest {
         this.redisServer.stop();
     }
 
-    @Test
-    public void testGetProtocol(){
-        URL url = URL.valueOf("dubbo://" + NetUtils.getLocalAddress().getHostName() + ":4444/org.apache.dubbo.TestService?version=1.0.0&application=vic&side=provider");
-        String protocol = redisServiceStore.getProtocol(url);
-        Assert.assertEquals(protocol, "provider");
-
-        URL url2 = URL.valueOf("consumer://" + NetUtils.getLocalAddress().getHostName() + ":4444/org.apache.dubbo.TestService?version=1.0.0&application=vic");
-        String protocol2 = redisServiceStore.getProtocol(url2);
-        Assert.assertEquals(protocol2, "consumer");
-    }
+
 
     @Test
     public void testDoPut(){
         URL url = URL.valueOf("dubbo://" + NetUtils.getLocalAddress().getHostName() + ":4444/org.apache.dubbo.TestService?version=1.0.9&application=vicss&side=provider");
-        redisServiceStore.doPutService(url);
+        redisServiceStore.doPut(url);
 
         try {
             Jedis jedis = redisServiceStore.pool.getResource();
-            String value = jedis.get(redisServiceStore.getKey(url));
+            String value = jedis.get(redisServiceStore.getUrlKey(url));
             URL result = new URL("dubbo","127.0.0.1", 8090);
             Assert.assertTrue(result.getParameters().isEmpty());
             result = result.addParameterString(value);
@@ -69,11 +60,11 @@ public class RedisServiceStoreTest {
     @Test
     public void testDoPeek(){
         URL url = URL.valueOf("dubbo://" + NetUtils.getLocalAddress().getHostName() + ":4444/org.apache.dubbo.TestService?version=1.0.9&application=vicss&side=provider");
-        redisServiceStore.doPutService(url);
+        redisServiceStore.doPut(url);
 
         try {
             URL result = URL.valueOf("dubbo://" + NetUtils.getLocalAddress().getHostName() + ":4667/org.apache.dubbo.TestService?version=1.0.9&application=vicww&side=provider");
-            result = redisServiceStore.doPeekService(result);
+            result = redisServiceStore.doPeek(result);
             Assert.assertFalse(result.getParameters().isEmpty());
             Assert.assertEquals(result.getParameter("version"),"1.0.9");
             Assert.assertEquals(result.getParameter("application"),"vicss");
@@ -81,15 +72,15 @@ public class RedisServiceStoreTest {
 
 
             result = URL.valueOf("dubbo://" + NetUtils.getLocalAddress().getHostName() + ":4667/org.apache.dubbo.TestDD?version=1.0.9&application=vicss&side=provider");
-            result = redisServiceStore.doPeekService(result);
+            result = redisServiceStore.doPeek(result);
             Assert.assertNull(result);
 
             result = URL.valueOf("dubbo://" + NetUtils.getLocalAddress().getHostName() + ":4667/org.apache.dubbo.TestService?version=1.0.999&application=vicss&side=provider");
-            result = redisServiceStore.doPeekService(result);
+            result = redisServiceStore.doPeek(result);
             Assert.assertNull(result);
 
             result = URL.valueOf("dubbo://" + NetUtils.getLocalAddress().getHostName() + ":4667/org.apache.dubbo.TestService?version=1.0.9&application=vicss&side=consumer");
-            result = redisServiceStore.doPeekService(result);
+            result = redisServiceStore.doPeek(result);
             Assert.assertNull(result);
 
         } catch (Throwable e) {
diff --git a/dubbo-servicedata/dubbo-servicedata-zookeeper/pom.xml b/dubbo-metadata-report/dubbo-metadata-report-zookeeper/pom.xml
similarity index 90%
rename from dubbo-servicedata/dubbo-servicedata-zookeeper/pom.xml
rename to dubbo-metadata-report/dubbo-metadata-report-zookeeper/pom.xml
index 359ae74..f069d06 100644
--- a/dubbo-servicedata/dubbo-servicedata-zookeeper/pom.xml
+++ b/dubbo-metadata-report/dubbo-metadata-report-zookeeper/pom.xml
@@ -18,18 +18,18 @@
          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-servicedata</artifactId>
+        <artifactId>dubbo-metadata-report</artifactId>
         <groupId>org.apache.dubbo</groupId>
         <version>2.7.0-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
-    <artifactId>dubbo-servicedata-zookeeper</artifactId>
+    <artifactId>dubbo-metadata-report-zookeeper</artifactId>
 
     <dependencies>
         <dependency>
             <groupId>org.apache.dubbo</groupId>
-            <artifactId>dubbo-servicedata-api</artifactId>
+            <artifactId>dubbo-metadata-report-api</artifactId>
             <version>${project.parent.version}</version>
         </dependency>
         <dependency>
diff --git a/dubbo-servicedata/dubbo-servicedata-zookeeper/src/main/java/org/apache/dubbo/servicedata/store/zookeeper/ZookeeperServiceStore.java b/dubbo-metadata-report/dubbo-metadata-report-zookeeper/src/main/java/org/apache/dubbo/metadata/store/zookeeper/ZookeeperMetadataReport.java
similarity index 92%
rename from dubbo-servicedata/dubbo-servicedata-zookeeper/src/main/java/org/apache/dubbo/servicedata/store/zookeeper/ZookeeperServiceStore.java
rename to dubbo-metadata-report/dubbo-metadata-report-zookeeper/src/main/java/org/apache/dubbo/metadata/store/zookeeper/ZookeeperMetadataReport.java
index 8199e9f..f9433e3 100644
--- a/dubbo-servicedata/dubbo-servicedata-zookeeper/src/main/java/org/apache/dubbo/servicedata/store/zookeeper/ZookeeperServiceStore.java
+++ b/dubbo-metadata-report/dubbo-metadata-report-zookeeper/src/main/java/org/apache/dubbo/metadata/store/zookeeper/ZookeeperMetadataReport.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.dubbo.servicedata.store.zookeeper;
+package org.apache.dubbo.metadata.store.zookeeper;
 
 import org.apache.dubbo.common.Constants;
 import org.apache.dubbo.common.URL;
@@ -24,7 +24,7 @@ import org.apache.dubbo.common.utils.CollectionUtils;
 import org.apache.dubbo.remoting.zookeeper.ZookeeperClient;
 import org.apache.dubbo.remoting.zookeeper.ZookeeperTransporter;
 import org.apache.dubbo.rpc.RpcException;
-import org.apache.dubbo.servicedata.support.AbstractServiceStore;
+import org.apache.dubbo.metadata.support.AbstractMetadataReport;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -32,9 +32,9 @@ import java.util.List;
 /**
  * ZookeeperRegistry
  */
-public class ZookeeperServiceStore extends AbstractServiceStore {
+public class ZookeeperMetadataReport extends AbstractMetadataReport {
 
-    private final static Logger logger = LoggerFactory.getLogger(ZookeeperServiceStore.class);
+    private final static Logger logger = LoggerFactory.getLogger(ZookeeperMetadataReport.class);
 
     private final static String DEFAULT_ROOT = "dubbo";
 
@@ -44,7 +44,7 @@ public class ZookeeperServiceStore extends AbstractServiceStore {
 
     final ZookeeperClient zkClient;
 
-    public ZookeeperServiceStore(URL url, ZookeeperTransporter zookeeperTransporter) {
+    public ZookeeperMetadataReport(URL url, ZookeeperTransporter zookeeperTransporter) {
         super(url);
         if (url.isAnyHost()) {
             throw new IllegalStateException("registry address == null");
@@ -58,7 +58,7 @@ public class ZookeeperServiceStore extends AbstractServiceStore {
     }
 
     @Override
-    protected void doPutService(URL url) {
+    protected void doPut(URL url) {
         try {
             deletePath(url);
             url = url.removeParameters(Constants.BIND_IP_KEY, Constants.BIND_PORT_KEY, Constants.TIMESTAMP_KEY);
@@ -81,7 +81,7 @@ public class ZookeeperServiceStore extends AbstractServiceStore {
     }
 
     @Override
-    protected URL doPeekService(final URL url) {
+    protected URL doPeek(final URL url) {
         try {
             List<String> urlStrs = zkClient.getChildren((toCategoryPath(url)));
             List<URL> urls = new ArrayList<URL>();
diff --git a/dubbo-servicedata/dubbo-servicedata-api/src/test/java/org/apache/dubbo/servicedata/store/test/JTestServiceStoreFactory4Test.java b/dubbo-metadata-report/dubbo-metadata-report-zookeeper/src/main/java/org/apache/dubbo/metadata/store/zookeeper/ZookeeperMetadataReportFactory.java
similarity index 75%
rename from dubbo-servicedata/dubbo-servicedata-api/src/test/java/org/apache/dubbo/servicedata/store/test/JTestServiceStoreFactory4Test.java
rename to dubbo-metadata-report/dubbo-metadata-report-zookeeper/src/main/java/org/apache/dubbo/metadata/store/zookeeper/ZookeeperMetadataReportFactory.java
index bfb1ac9..a847094 100644
--- a/dubbo-servicedata/dubbo-servicedata-api/src/test/java/org/apache/dubbo/servicedata/store/test/JTestServiceStoreFactory4Test.java
+++ b/dubbo-metadata-report/dubbo-metadata-report-zookeeper/src/main/java/org/apache/dubbo/metadata/store/zookeeper/ZookeeperMetadataReportFactory.java
@@ -14,18 +14,18 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.dubbo.servicedata.store.test;
+package org.apache.dubbo.metadata.store.zookeeper;
 
 import org.apache.dubbo.common.URL;
 import org.apache.dubbo.remoting.zookeeper.ZookeeperTransporter;
-import org.apache.dubbo.servicedata.store.ServiceStore;
-import org.apache.dubbo.servicedata.support.AbstractServiceStoreFactory;
+import org.apache.dubbo.metadata.store.MetadataReport;
+import org.apache.dubbo.metadata.support.AbstractMetadataReportFactory;
 
 /**
  * ZookeeperRegistryFactory.
  *
  */
-public class JTestServiceStoreFactory4Test extends AbstractServiceStoreFactory {
+public class ZookeeperMetadataReportFactory extends AbstractMetadataReportFactory {
 
     private ZookeeperTransporter zookeeperTransporter;
 
@@ -34,8 +34,8 @@ public class JTestServiceStoreFactory4Test extends AbstractServiceStoreFactory {
     }
 
     @Override
-    public ServiceStore createServiceStore(URL url) {
-        return new JTestServiceStore4Test(url, zookeeperTransporter);
+    public MetadataReport createServiceStore(URL url) {
+        return new ZookeeperMetadataReport(url, zookeeperTransporter);
     }
 
 }
diff --git a/dubbo-metadata-report/dubbo-metadata-report-zookeeper/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.servicedata.store.ServiceStoreFactory b/dubbo-metadata-report/dubbo-metadata-report-zookeeper/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.servicedata.store.ServiceStoreFactory
new file mode 100644
index 0000000..c607f7c
--- /dev/null
+++ b/dubbo-metadata-report/dubbo-metadata-report-zookeeper/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.servicedata.store.ServiceStoreFactory
@@ -0,0 +1 @@
+zookeeper=org.apache.dubbo.metadata.store.zookeeper.ZookeeperMetadataReportFactory
diff --git a/dubbo-servicedata/dubbo-servicedata-zookeeper/src/test/java/org/apache/dubbo/servicedata/store/zookeeper/ZookeeperServiceStoreTest.java b/dubbo-metadata-report/dubbo-metadata-report-zookeeper/src/test/java/org/apache/dubbo/metadata/store/zookeeper/ZookeeperMetadataReportTest.java
similarity index 85%
rename from dubbo-servicedata/dubbo-servicedata-zookeeper/src/test/java/org/apache/dubbo/servicedata/store/zookeeper/ZookeeperServiceStoreTest.java
rename to dubbo-metadata-report/dubbo-metadata-report-zookeeper/src/test/java/org/apache/dubbo/metadata/store/zookeeper/ZookeeperMetadataReportTest.java
index bc0f3f3..22cdf17 100644
--- a/dubbo-servicedata/dubbo-servicedata-zookeeper/src/test/java/org/apache/dubbo/servicedata/store/zookeeper/ZookeeperServiceStoreTest.java
+++ b/dubbo-metadata-report/dubbo-metadata-report-zookeeper/src/test/java/org/apache/dubbo/metadata/store/zookeeper/ZookeeperMetadataReportTest.java
@@ -1,7 +1,6 @@
-package org.apache.dubbo.servicedata.store.zookeeper;
+package org.apache.dubbo.metadata.store.zookeeper;
 
 import org.apache.curator.test.TestingServer;
-import org.apache.dubbo.common.Constants;
 import org.apache.dubbo.common.URL;
 import org.apache.dubbo.common.utils.NetUtils;
 import org.apache.dubbo.remoting.zookeeper.curator.CuratorZookeeperTransporter;
@@ -16,11 +15,11 @@ import java.util.List;
 /**
  *  2018/10/9
  */
-public class ZookeeperServiceStoreTest {
+public class ZookeeperMetadataReportTest {
     private TestingServer zkServer;
-    private ZookeeperServiceStore zookeeperServiceStore;
+    private ZookeeperMetadataReport zookeeperServiceStore;
     private URL registryUrl;
-    private ZookeeperServiceStoreFactory zookeeperServiceStoreFactory;
+    private ZookeeperMetadataReportFactory zookeeperServiceStoreFactory;
 
     @Before
     public void setUp() throws Exception {
@@ -28,9 +27,9 @@ public class ZookeeperServiceStoreTest {
         this.zkServer = new TestingServer(zkServerPort, true);
         this.registryUrl = URL.valueOf("zookeeper://localhost:" + zkServerPort);
 
-        zookeeperServiceStoreFactory = new ZookeeperServiceStoreFactory();
+        zookeeperServiceStoreFactory = new ZookeeperMetadataReportFactory();
         zookeeperServiceStoreFactory.setZookeeperTransporter(new CuratorZookeeperTransporter());
-        this.zookeeperServiceStore = (ZookeeperServiceStore) zookeeperServiceStoreFactory.createServiceStore(registryUrl);
+        this.zookeeperServiceStore = (ZookeeperMetadataReport) zookeeperServiceStoreFactory.createServiceStore(registryUrl);
     }
 
     @After
@@ -69,7 +68,7 @@ public class ZookeeperServiceStoreTest {
     @Test
     public void testDoPut() {
         URL url = URL.valueOf("dubbo://" + NetUtils.getLocalAddress().getHostName() + ":4444/org.apache.dubbo.ZkService?version=1.55.8899&application=zktestPut&side=provider");
-        zookeeperServiceStore.doPutService(url);
+        zookeeperServiceStore.doPut(url);
 
         try {
             String path = zookeeperServiceStore.toCategoryPath(url);
@@ -90,11 +89,11 @@ public class ZookeeperServiceStoreTest {
     @Test
     public void testDoPeekProvider() {
         URL url = URL.valueOf("dubbo://" + NetUtils.getLocalAddress().getHostName() + ":4444/org.apache.dubbo.ZkService?version=1.55.8899&application=zktestPut&side=provider");
-        zookeeperServiceStore.doPutService(url);
+        zookeeperServiceStore.doPut(url);
 
         try {
             URL result = URL.valueOf("dubbo://" + NetUtils.getLocalAddress().getHostName() + ":4667/org.apache.dubbo.ZkService?version=1.55.8899&application=zkDoPeek&side=provider");
-            result = zookeeperServiceStore.doPeekService(result);
+            result = zookeeperServiceStore.doPeek(result);
             Assert.assertFalse(result.getParameters().isEmpty());
             Assert.assertEquals(result.getParameter("version"),"1.55.8899");
             Assert.assertEquals(result.getParameter("application"),"zktestPut");
@@ -102,15 +101,15 @@ public class ZookeeperServiceStoreTest {
 
 
             result = URL.valueOf("dubbo://" + NetUtils.getLocalAddress().getHostName() + ":4667/org.apache.dubbo.TestDD?version=1.55.8899&application=zkDoPeek&side=provider");
-            result = zookeeperServiceStore.doPeekService(result);
+            result = zookeeperServiceStore.doPeek(result);
             Assert.assertNull(result);
 
             result = URL.valueOf("dubbo://" + NetUtils.getLocalAddress().getHostName() + ":4667/org.apache.dubbo.ZkService?version=1.55.8000&application=zkDoPeek&side=provider");
-            result = zookeeperServiceStore.doPeekService(result);
+            result = zookeeperServiceStore.doPeek(result);
             Assert.assertNull(result);
 
             result = URL.valueOf("dubbo://" + NetUtils.getLocalAddress().getHostName() + ":4667/org.apache.dubbo.ZkService?version=1.55.8899&application=zkDoPeek&side=consumer");
-            result = zookeeperServiceStore.doPeekService(result);
+            result = zookeeperServiceStore.doPeek(result);
             Assert.assertNull(result);
 
         } catch (Throwable e) {
@@ -121,11 +120,11 @@ public class ZookeeperServiceStoreTest {
     @Test
     public void testDoPeekConsumer() {
         URL url = URL.valueOf("dubbo://" + NetUtils.getLocalAddress().getHostName() + ":4444/org.apache.dubbo.ZkServicePeek2?version=1.55.8899&application=zkDoPeek2&side=consumer");
-        zookeeperServiceStore.doPutService(url);
+        zookeeperServiceStore.doPut(url);
 
         try {
             URL result = URL.valueOf("dubbo://" + NetUtils.getLocalAddress().getHostName() + ":4667/org.apache.dubbo.ZkServicePeek2?version=1.55.8899&application=zkDoPeek2&side=consumer");
-            result = zookeeperServiceStore.doPeekService(result);
+            result = zookeeperServiceStore.doPeek(result);
             Assert.assertFalse(result.getParameters().isEmpty());
             Assert.assertEquals(result.getParameter("version"),"1.55.8899");
             Assert.assertEquals(result.getParameter("application"),"zkDoPeek2");
@@ -133,19 +132,19 @@ public class ZookeeperServiceStoreTest {
 
 
             result = URL.valueOf("dubbo://" + NetUtils.getLocalAddress().getHostName() + ":4667/org.apache.dubbo.ZkServicePeek2?version=1.55.8899&application=zkDoPeek&side=consumer");
-            result = zookeeperServiceStore.doPeekService(result);
+            result = zookeeperServiceStore.doPeek(result);
             Assert.assertNull(result);
 
             result = URL.valueOf("dubbo://" + NetUtils.getLocalAddress().getHostName() + ":4667/org.apache.dubbo.TestDDw?version=1.55.8899&application=zkDoPeek&side=consumer");
-            result = zookeeperServiceStore.doPeekService(result);
+            result = zookeeperServiceStore.doPeek(result);
             Assert.assertNull(result);
 
             result = URL.valueOf("dubbo://" + NetUtils.getLocalAddress().getHostName() + ":4667/org.apache.dubbo.ZkServicePeek2?version=1.55.8000&application=zkDoPeek&side=consumer");
-            result = zookeeperServiceStore.doPeekService(result);
+            result = zookeeperServiceStore.doPeek(result);
             Assert.assertNull(result);
 
             result = URL.valueOf("dubbo://" + NetUtils.getLocalAddress().getHostName() + ":4667/org.apache.dubbo.ZkServicePeek2?version=1.55.8899&application=zkDoPeek&side=provider");
-            result = zookeeperServiceStore.doPeekService(result);
+            result = zookeeperServiceStore.doPeek(result);
             Assert.assertNull(result);
 
         } catch (Throwable e) {
@@ -156,13 +155,13 @@ public class ZookeeperServiceStoreTest {
     @Test
     public void testDoPeekConsumerPutTwice() {
         URL url = URL.valueOf("dubbo://" + NetUtils.getLocalAddress().getHostName() + ":4444/org.apache.dubbo.ZkServicePeek2?version=1.55.8899&application=zkDoPeekT1&side=consumer");
-        zookeeperServiceStore.doPutService(url);
+        zookeeperServiceStore.doPut(url);
         URL url2 = URL.valueOf("dubbo://" + NetUtils.getLocalAddress().getHostName() + ":4444/org.apache.dubbo.ZkServicePeek2?version=1.55.8899&application=zkDoPeekT2&side=consumer");
-        zookeeperServiceStore.doPutService(url2);
+        zookeeperServiceStore.doPut(url2);
 
         try {
             URL result = URL.valueOf("dubbo://" + NetUtils.getLocalAddress().getHostName() + ":4667/org.apache.dubbo.ZkServicePeek2?version=1.55.8899&application=zkDoPeekT1&side=consumer");
-            result = zookeeperServiceStore.doPeekService(result);
+            result = zookeeperServiceStore.doPeek(result);
             Assert.assertFalse(result.getParameters().isEmpty());
             Assert.assertEquals(result.getParameter("version"),"1.55.8899");
             Assert.assertEquals(result.getParameter("application"),"zkDoPeekT1");
@@ -170,7 +169,7 @@ public class ZookeeperServiceStoreTest {
 
 
             result = URL.valueOf("dubbo://" + NetUtils.getLocalAddress().getHostName() + ":4667/org.apache.dubbo.ZkServicePeek2?version=1.55.8899&application=zkDoPeekT2&side=consumer");
-            result = zookeeperServiceStore.doPeekService(result);
+            result = zookeeperServiceStore.doPeek(result);
             Assert.assertFalse(result.getParameters().isEmpty());
             Assert.assertEquals(result.getParameter("version"),"1.55.8899");
             Assert.assertEquals(result.getParameter("application"),"zkDoPeekT2");
diff --git a/dubbo-servicedata/pom.xml b/dubbo-metadata-report/pom.xml
similarity index 85%
rename from dubbo-servicedata/pom.xml
rename to dubbo-metadata-report/pom.xml
index 55b4c5f..ae987ca 100644
--- a/dubbo-servicedata/pom.xml
+++ b/dubbo-metadata-report/pom.xml
@@ -24,12 +24,12 @@
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
-    <artifactId>dubbo-servicedata</artifactId>
+    <artifactId>dubbo-metadata-report</artifactId>
     <packaging>pom</packaging>
     <modules>
-        <module>dubbo-servicedata-api</module>
-        <module>dubbo-servicedata-zookeeper</module>
-        <module>dubbo-servicedata-redis</module>
+        <module>dubbo-metadata-report-api</module>
+        <module>dubbo-metadata-report-zookeeper</module>
+        <module>dubbo-metadata-report-redis</module>
     </modules>
 
 
diff --git a/dubbo-servicedata/dubbo-servicedata-api/src/test/resources/META-INF/dubbo/internal/org.apache.dubbo.servicedata.store.ServiceStoreFactory b/dubbo-servicedata/dubbo-servicedata-api/src/test/resources/META-INF/dubbo/internal/org.apache.dubbo.servicedata.store.ServiceStoreFactory
deleted file mode 100644
index c5c7ddc..0000000
--- a/dubbo-servicedata/dubbo-servicedata-api/src/test/resources/META-INF/dubbo/internal/org.apache.dubbo.servicedata.store.ServiceStoreFactory
+++ /dev/null
@@ -1 +0,0 @@
-JTest=org.apache.dubbo.servicedata.store.test.JTestServiceStoreFactory4Test
diff --git a/dubbo-servicedata/dubbo-servicedata-redis/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.servicedata.store.ServiceStoreFactory b/dubbo-servicedata/dubbo-servicedata-redis/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.servicedata.store.ServiceStoreFactory
deleted file mode 100644
index 3b96794..0000000
--- a/dubbo-servicedata/dubbo-servicedata-redis/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.servicedata.store.ServiceStoreFactory
+++ /dev/null
@@ -1 +0,0 @@
-redis=org.apache.dubbo.servicedata.store.redis.RedisServiceStoreFactory
diff --git a/dubbo-servicedata/dubbo-servicedata-zookeeper/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.servicedata.store.ServiceStoreFactory b/dubbo-servicedata/dubbo-servicedata-zookeeper/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.servicedata.store.ServiceStoreFactory
deleted file mode 100644
index 35ac42a..0000000
--- a/dubbo-servicedata/dubbo-servicedata-zookeeper/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.servicedata.store.ServiceStoreFactory
+++ /dev/null
@@ -1 +0,0 @@
-zookeeper=org.apache.dubbo.servicedata.store.zookeeper.ZookeeperServiceStoreFactory
diff --git a/pom.xml b/pom.xml
index 702f128..6b532cf 100644
--- a/pom.xml
+++ b/pom.xml
@@ -145,7 +145,7 @@
         <module>dubbo-bom</module>
         <module>dubbo-all</module>
         <module>dubbo-distribution</module>
-        <module>dubbo-servicedata</module>
+        <module>dubbo-metadata-report</module>
         <module>dubbo-governance</module>
     </modules>