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

liujun pushed a commit to branch samples-for-2.7.0-SNAPSHOT
in repository https://gitbox.apache.org/repos/asf/incubator-dubbo-samples.git

commit ad3d8f4f42e94c50746a38157d9c5f3024944cc6
Author: ken.lj <ken.lj...@gmail.com>
AuthorDate: Mon Dec 24 15:10:10 2018 +0800

    update samples for 2.7.0-SNAPSHOT
---
 .../dubbo-samples-chain-api}/pom.xml               |  4 +-
 .../apache/dubbo/samples/governance/ZKTools.java   | 32 +++----------
 .../samples/governance/api/AmericanService.java    |  0
 .../dubbo/samples/governance/api/CatService.java   |  0
 .../samples/governance/api/ChineseService.java     |  0
 .../dubbo/samples/governance/api/DogService.java   |  0
 .../dubbo/samples/governance/api/LionService.java  |  0
 .../dubbo/samples/governance/api/TigerService.java |  0
 .../dubbo-samples-chain-backend}/pom.xml           |  6 +--
 .../dubbo/samples/governance/BackendProvider.java  |  0
 .../samples/governance/impl/CatServiceImpl.java    |  2 +
 .../samples/governance/impl/DogServiceImpl.java    |  7 +++
 .../samples/governance/impl/LionServiceImpl.java   |  2 +
 .../samples/governance/impl/TigerServiceImpl.java  |  2 +
 .../src/main/resources/log4j.properties            |  0
 .../main/resources/spring/dubbo-demo-provider.xml  |  8 +---
 .../dubbo-samples-chain-front}/pom.xml             |  6 +--
 .../dubbo/samples/governance/FrontendConsumer.java | 50 +++++++++++++--------
 .../src/main/resources/log4j.properties            |  0
 .../main/resources/spring/dubbo-demo-consumer.xml  |  4 +-
 .../dubbo-samples-chain-middle}/pom.xml            |  6 +--
 .../samples/governance/MiddleEndProvider.java      |  0
 .../governance/impl/AmericanServiceImpl.java       |  0
 .../governance/impl/ChineseServiceImpl.java        |  0
 .../src/main/resources/log4j.properties            |  0
 .../main/resources/spring/dubbo-demo-provider.xml  |  8 +---
 .../pom.xml                                        | 10 ++---
 .../samples/annotation/AnnotationConsumer.java     |  5 ++-
 .../src/main/resources/config-center.properties}   | 27 ++++++-----
 .../resources/spring/dubbo-consumer.properties     |  7 +--
 .../resources/spring/dubbo-provider.properties     |  5 ++-
 .../consumer/AnnotationConsumer.java               |  4 +-
 .../provider/AnnotationProvider.java               |  4 +-
 .../spring/MyEnvironmentPostProcessor.java         | 13 ++++--
 .../dubbo-properties-in-configcenter.properties    |  1 -
 .../resources/spring/dubbo-consumer.properties     |  4 +-
 .../resources/spring/dubbo-provider.properties     | 10 ++---
 .../apache/dubbo/samples/configcenter/ZKTools.java | 28 +-----------
 .../META-INF/spring/configcenter-consumer.xml      |  2 +-
 .../META-INF/spring/configcenter-provider.xml      |  4 +-
 .../multi-protocols-config-center.properties}      | 20 ++++-----
 .../dubbo/samples/configcenter/BasicProvider.java  |  1 +
 .../apache/dubbo/samples/configcenter/ZKTools.java | 52 +++++++++++++++++++++-
 .../META-INF/spring/configcenter-consumer.xml      |  4 +-
 .../META-INF/spring/configcenter-provider.xml      |  6 ++-
 .../src/main/resources/config-center.properties}   | 21 ++++-----
 .../apache/dubbo/samples/governance/ZKTools.java   | 21 ++++++++-
 .../main/resources/spring/dubbo-demo-consumer.xml  |  2 +-
 .../main/resources/spring/dubbo-demo-provider.xml  |  2 +-
 .../apache/dubbo/samples/governance/ZKTools.java   | 20 ++++++++-
 .../dubbo/samples/governance/BasicConsumer.java    |  6 ++-
 dubbo-samples-mock/pom.xml                         |  7 +++
 .../org/apache/dubbo/samples/mock}/ZKTools.java    | 18 ++------
 .../src/main/resources/spring/mock-consumer.xml    |  3 +-
 .../src/main/resources/spring/mock-provider.xml    |  2 -
 pom.xml                                            |  2 +-
 56 files changed, 252 insertions(+), 196 deletions(-)

diff --git a/dubbo-samples-concurrency/dubbo-samples-concurrency-api/pom.xml 
b/dubbo-samples-chain/dubbo-samples-chain-api/pom.xml
similarity index 91%
rename from dubbo-samples-concurrency/dubbo-samples-concurrency-api/pom.xml
rename to dubbo-samples-chain/dubbo-samples-chain-api/pom.xml
index 8bfa596..f5e3164 100644
--- a/dubbo-samples-concurrency/dubbo-samples-concurrency-api/pom.xml
+++ b/dubbo-samples-chain/dubbo-samples-chain-api/pom.xml
@@ -22,13 +22,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-samples-concurrency</artifactId>
+        <artifactId>dubbo-samples-chain</artifactId>
         <groupId>org.apache.dubbo</groupId>
         <version>1.0-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
-    <artifactId>dubbo-samples-concurrency-api</artifactId>
+    <artifactId>dubbo-samples-chain-api</artifactId>
     <dependencies>
         <dependency>
             <groupId>org.springframework</groupId>
diff --git 
a/dubbo-samples-concurrency/dubbo-samples-concurrency-api/src/main/java/org/apache/dubbo/samples/governance/ZKTools.java
 
b/dubbo-samples-chain/dubbo-samples-chain-api/src/main/java/org/apache/dubbo/samples/governance/ZKTools.java
similarity index 79%
rename from 
dubbo-samples-concurrency/dubbo-samples-concurrency-api/src/main/java/org/apache/dubbo/samples/governance/ZKTools.java
rename to 
dubbo-samples-chain/dubbo-samples-chain-api/src/main/java/org/apache/dubbo/samples/governance/ZKTools.java
index 7a6f1ae..b91b56b 100644
--- 
a/dubbo-samples-concurrency/dubbo-samples-concurrency-api/src/main/java/org/apache/dubbo/samples/governance/ZKTools.java
+++ 
b/dubbo-samples-chain/dubbo-samples-chain-api/src/main/java/org/apache/dubbo/samples/governance/ZKTools.java
@@ -32,8 +32,7 @@ public class ZKTools {
         client = CuratorFrameworkFactory.newClient("127.0.0.1:2181", 60 * 
1000, 60 * 1000, new ExponentialBackoffRetry(1000, 3));
         client.start();
 
-//        configuratorsApp();
-        configuratorsAppConsumer();
+        configuratorsApp();
 
         System.in.read();
     }
@@ -43,24 +42,7 @@ public class ZKTools {
     }
 
     private static void configuratorsApp() {
-
-        String str = "---\n" + "configVersion: v2.7\n" + "scope: 
application\n" + "key: concurrency-middle\n" + "enabled: true\n" + "configs:\n" 
+ "- addresses: [\"0.0.0.0:20881\"]\n" + "  side: provider\n" + "  
parameters:\n" + "    timeout: 4000";
-
-        System.out.println(str);
-
-        try {
-            String path = "/dubbo/config/concurrency-middle/configurators";
-            if (client.checkExists().forPath(path) == null) {
-                client.create().creatingParentsIfNeeded().forPath(path);
-            }
-            setData(path, str);
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-    }
-
-    private static void configuratorsAppConsumer() {
-        String str = "---\n" + "configVersion: v2.7\n" + "scope: 
application\n" + "key: concurrency-middle\n" + "enabled: true\n" + "configs:\n" 
+ "- addresses: [\"0.0.0.0\"]\n" + "  side: consumer\n" + "  parameters:\n" + " 
   timeout: 5000";
+        String str = "---\n" + "configVersion: v2.7\n" + "scope: 
application\n" + "key: concurrency-middle\n" + "enabled: true\n" + "configs:\n" 
+ "- addresses: [\"0.0.0.0\"]\n" + "  side: consumer\n" + "  parameters:\n" + " 
   timeout: 5000\n" + "- addresses: [\"0.0.0.0:20881\"]\n" + "  side: 
provider\n" + "  parameters:\n" + "    timeout: 4000";
 
         System.out.println(str);
 
@@ -75,13 +57,13 @@ public class ZKTools {
         }
     }
 
-    private void configuratorsService() {
-        String str = "";
+    private void tags() {
+        String str = "---\n" + "force: false\n" + "runtime: true\n" + 
"enabled: true\n" + "priority: 1\n" + "key: governance-tagrouter-provider\n" + 
"tags:\n" + "  - name: tag1\n" + "    addresses: [\"30.5.121.131:20880\"]\n" + 
"  - name: tag2\n" + "    addresses: [\"30.5.121.131:20881\"]\n" + "...";
 
         System.out.println(str);
 
         try {
-            String path = 
"/dubbo/config/governance-tagrouter-provider/configurators";
+            String path = 
"/dubbo/config/governance-tagrouter-provider/tagrouters";
             if (client.checkExists().forPath(path) == null) {
                 client.create().creatingParentsIfNeeded().forPath(path);
             }
@@ -91,10 +73,6 @@ public class ZKTools {
         }
     }
 
-    private void tags() {
-
-    }
-
     public static void generateAppevelRouter() {
         String str = "---\n" + "force: false\n" + "runtime: true\n" + 
"enabled: true\n" + "priority: 1\n" + "key: governance-tagrouter-provider\n" + 
"tags:\n" + "  - name: tag1\n" + "    addresses: [\"30.5.121.131:20880\"]\n" + 
"  - name: tag2\n" + "    addresses: [\"30.5.121.131:20881\"]\n" + "...";
 
diff --git 
a/dubbo-samples-concurrency/dubbo-samples-concurrency-api/src/main/java/org/apache/dubbo/samples/governance/api/AmericanService.java
 
b/dubbo-samples-chain/dubbo-samples-chain-api/src/main/java/org/apache/dubbo/samples/governance/api/AmericanService.java
similarity index 100%
rename from 
dubbo-samples-concurrency/dubbo-samples-concurrency-api/src/main/java/org/apache/dubbo/samples/governance/api/AmericanService.java
rename to 
dubbo-samples-chain/dubbo-samples-chain-api/src/main/java/org/apache/dubbo/samples/governance/api/AmericanService.java
diff --git 
a/dubbo-samples-concurrency/dubbo-samples-concurrency-api/src/main/java/org/apache/dubbo/samples/governance/api/CatService.java
 
b/dubbo-samples-chain/dubbo-samples-chain-api/src/main/java/org/apache/dubbo/samples/governance/api/CatService.java
similarity index 100%
rename from 
dubbo-samples-concurrency/dubbo-samples-concurrency-api/src/main/java/org/apache/dubbo/samples/governance/api/CatService.java
rename to 
dubbo-samples-chain/dubbo-samples-chain-api/src/main/java/org/apache/dubbo/samples/governance/api/CatService.java
diff --git 
a/dubbo-samples-concurrency/dubbo-samples-concurrency-api/src/main/java/org/apache/dubbo/samples/governance/api/ChineseService.java
 
b/dubbo-samples-chain/dubbo-samples-chain-api/src/main/java/org/apache/dubbo/samples/governance/api/ChineseService.java
similarity index 100%
rename from 
dubbo-samples-concurrency/dubbo-samples-concurrency-api/src/main/java/org/apache/dubbo/samples/governance/api/ChineseService.java
rename to 
dubbo-samples-chain/dubbo-samples-chain-api/src/main/java/org/apache/dubbo/samples/governance/api/ChineseService.java
diff --git 
a/dubbo-samples-concurrency/dubbo-samples-concurrency-api/src/main/java/org/apache/dubbo/samples/governance/api/DogService.java
 
b/dubbo-samples-chain/dubbo-samples-chain-api/src/main/java/org/apache/dubbo/samples/governance/api/DogService.java
similarity index 100%
rename from 
dubbo-samples-concurrency/dubbo-samples-concurrency-api/src/main/java/org/apache/dubbo/samples/governance/api/DogService.java
rename to 
dubbo-samples-chain/dubbo-samples-chain-api/src/main/java/org/apache/dubbo/samples/governance/api/DogService.java
diff --git 
a/dubbo-samples-concurrency/dubbo-samples-concurrency-api/src/main/java/org/apache/dubbo/samples/governance/api/LionService.java
 
b/dubbo-samples-chain/dubbo-samples-chain-api/src/main/java/org/apache/dubbo/samples/governance/api/LionService.java
similarity index 100%
rename from 
dubbo-samples-concurrency/dubbo-samples-concurrency-api/src/main/java/org/apache/dubbo/samples/governance/api/LionService.java
rename to 
dubbo-samples-chain/dubbo-samples-chain-api/src/main/java/org/apache/dubbo/samples/governance/api/LionService.java
diff --git 
a/dubbo-samples-concurrency/dubbo-samples-concurrency-api/src/main/java/org/apache/dubbo/samples/governance/api/TigerService.java
 
b/dubbo-samples-chain/dubbo-samples-chain-api/src/main/java/org/apache/dubbo/samples/governance/api/TigerService.java
similarity index 100%
rename from 
dubbo-samples-concurrency/dubbo-samples-concurrency-api/src/main/java/org/apache/dubbo/samples/governance/api/TigerService.java
rename to 
dubbo-samples-chain/dubbo-samples-chain-api/src/main/java/org/apache/dubbo/samples/governance/api/TigerService.java
diff --git a/dubbo-samples-concurrency/dubbo-samples-concurrency-front/pom.xml 
b/dubbo-samples-chain/dubbo-samples-chain-backend/pom.xml
similarity index 88%
rename from dubbo-samples-concurrency/dubbo-samples-concurrency-front/pom.xml
rename to dubbo-samples-chain/dubbo-samples-chain-backend/pom.xml
index 9d5b9f7..257b19c 100644
--- a/dubbo-samples-concurrency/dubbo-samples-concurrency-front/pom.xml
+++ b/dubbo-samples-chain/dubbo-samples-chain-backend/pom.xml
@@ -22,13 +22,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-samples-concurrency</artifactId>
+        <artifactId>dubbo-samples-chain</artifactId>
         <groupId>org.apache.dubbo</groupId>
         <version>1.0-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
-    <artifactId>dubbo-samples-concurrency-front</artifactId>
+    <artifactId>dubbo-samples-chain-backend</artifactId>
     <dependencies>
         <dependency>
             <groupId>org.springframework</groupId>
@@ -36,7 +36,7 @@
         </dependency>
         <dependency>
             <groupId>org.apache.dubbo</groupId>
-            <artifactId>dubbo-samples-concurrency-api</artifactId>
+            <artifactId>dubbo-samples-chain-api</artifactId>
             <version>${project.version}</version>
         </dependency>
     </dependencies>
diff --git 
a/dubbo-samples-concurrency/dubbo-samples-concurrency-backend/src/main/java/org/apache/dubbo/samples/governance/BackendProvider.java
 
b/dubbo-samples-chain/dubbo-samples-chain-backend/src/main/java/org/apache/dubbo/samples/governance/BackendProvider.java
similarity index 100%
rename from 
dubbo-samples-concurrency/dubbo-samples-concurrency-backend/src/main/java/org/apache/dubbo/samples/governance/BackendProvider.java
rename to 
dubbo-samples-chain/dubbo-samples-chain-backend/src/main/java/org/apache/dubbo/samples/governance/BackendProvider.java
diff --git 
a/dubbo-samples-concurrency/dubbo-samples-concurrency-backend/src/main/java/org/apache/dubbo/samples/governance/impl/CatServiceImpl.java
 
b/dubbo-samples-chain/dubbo-samples-chain-backend/src/main/java/org/apache/dubbo/samples/governance/impl/CatServiceImpl.java
similarity index 93%
rename from 
dubbo-samples-concurrency/dubbo-samples-concurrency-backend/src/main/java/org/apache/dubbo/samples/governance/impl/CatServiceImpl.java
rename to 
dubbo-samples-chain/dubbo-samples-chain-backend/src/main/java/org/apache/dubbo/samples/governance/impl/CatServiceImpl.java
index 9e4aa57..561c3ce 100644
--- 
a/dubbo-samples-concurrency/dubbo-samples-concurrency-backend/src/main/java/org/apache/dubbo/samples/governance/impl/CatServiceImpl.java
+++ 
b/dubbo-samples-chain/dubbo-samples-chain-backend/src/main/java/org/apache/dubbo/samples/governance/impl/CatServiceImpl.java
@@ -29,11 +29,13 @@ public class CatServiceImpl implements CatService {
 
     @Override
     public String getName() {
+        System.out.println("I am a Cat!");
         return "I am a Cat!";
     }
 
     @Override
     public String cat() {
+        System.out.println("Meow Meow!");
         return "Meow Meow!";
     }
 }
diff --git 
a/dubbo-samples-concurrency/dubbo-samples-concurrency-backend/src/main/java/org/apache/dubbo/samples/governance/impl/DogServiceImpl.java
 
b/dubbo-samples-chain/dubbo-samples-chain-backend/src/main/java/org/apache/dubbo/samples/governance/impl/DogServiceImpl.java
similarity index 86%
rename from 
dubbo-samples-concurrency/dubbo-samples-concurrency-backend/src/main/java/org/apache/dubbo/samples/governance/impl/DogServiceImpl.java
rename to 
dubbo-samples-chain/dubbo-samples-chain-backend/src/main/java/org/apache/dubbo/samples/governance/impl/DogServiceImpl.java
index 91c6ab2..0268c9c 100644
--- 
a/dubbo-samples-concurrency/dubbo-samples-concurrency-backend/src/main/java/org/apache/dubbo/samples/governance/impl/DogServiceImpl.java
+++ 
b/dubbo-samples-chain/dubbo-samples-chain-backend/src/main/java/org/apache/dubbo/samples/governance/impl/DogServiceImpl.java
@@ -34,11 +34,18 @@ public class DogServiceImpl implements DogService {
         } catch (InterruptedException e) {
             e.printStackTrace();
         }
+        System.out.println("I am a Dog!");
         return "I am a Dog!";
     }
 
     @Override
     public String dog() {
+        try {
+            Thread.sleep(200);
+        } catch (InterruptedException e) {
+            e.printStackTrace();
+        }
+        System.out.println("Woof Woof!");
         return "Woof Woof!";
     }
 }
diff --git 
a/dubbo-samples-concurrency/dubbo-samples-concurrency-backend/src/main/java/org/apache/dubbo/samples/governance/impl/LionServiceImpl.java
 
b/dubbo-samples-chain/dubbo-samples-chain-backend/src/main/java/org/apache/dubbo/samples/governance/impl/LionServiceImpl.java
similarity index 93%
rename from 
dubbo-samples-concurrency/dubbo-samples-concurrency-backend/src/main/java/org/apache/dubbo/samples/governance/impl/LionServiceImpl.java
rename to 
dubbo-samples-chain/dubbo-samples-chain-backend/src/main/java/org/apache/dubbo/samples/governance/impl/LionServiceImpl.java
index a2046fa..d1294c1 100644
--- 
a/dubbo-samples-concurrency/dubbo-samples-concurrency-backend/src/main/java/org/apache/dubbo/samples/governance/impl/LionServiceImpl.java
+++ 
b/dubbo-samples-chain/dubbo-samples-chain-backend/src/main/java/org/apache/dubbo/samples/governance/impl/LionServiceImpl.java
@@ -29,11 +29,13 @@ public class LionServiceImpl implements LionService {
 
     @Override
     public String getName() {
+        System.out.println("I am a Lion!");
         return "I am a Lion!";
     }
 
     @Override
     public String lion() {
+        System.out.println("Lion Lion!");
         return "Lion Lion!";
     }
 }
diff --git 
a/dubbo-samples-concurrency/dubbo-samples-concurrency-backend/src/main/java/org/apache/dubbo/samples/governance/impl/TigerServiceImpl.java
 
b/dubbo-samples-chain/dubbo-samples-chain-backend/src/main/java/org/apache/dubbo/samples/governance/impl/TigerServiceImpl.java
similarity index 93%
rename from 
dubbo-samples-concurrency/dubbo-samples-concurrency-backend/src/main/java/org/apache/dubbo/samples/governance/impl/TigerServiceImpl.java
rename to 
dubbo-samples-chain/dubbo-samples-chain-backend/src/main/java/org/apache/dubbo/samples/governance/impl/TigerServiceImpl.java
index 40b71cd..828f826 100644
--- 
a/dubbo-samples-concurrency/dubbo-samples-concurrency-backend/src/main/java/org/apache/dubbo/samples/governance/impl/TigerServiceImpl.java
+++ 
b/dubbo-samples-chain/dubbo-samples-chain-backend/src/main/java/org/apache/dubbo/samples/governance/impl/TigerServiceImpl.java
@@ -29,11 +29,13 @@ public class TigerServiceImpl implements TigerService {
 
     @Override
     public String getName() {
+        System.out.println("I am a Tiger!");
         return "I am a Tiger!";
     }
 
     @Override
     public String tiger() {
+        System.out.println("Tiger Tiger!");
         return "Tiger Tiger!";
     }
 }
diff --git 
a/dubbo-samples-concurrency/dubbo-samples-concurrency-middle/src/main/resources/log4j.properties
 
b/dubbo-samples-chain/dubbo-samples-chain-backend/src/main/resources/log4j.properties
similarity index 100%
rename from 
dubbo-samples-concurrency/dubbo-samples-concurrency-middle/src/main/resources/log4j.properties
rename to 
dubbo-samples-chain/dubbo-samples-chain-backend/src/main/resources/log4j.properties
diff --git 
a/dubbo-samples-concurrency/dubbo-samples-concurrency-backend/src/main/resources/spring/dubbo-demo-provider.xml
 
b/dubbo-samples-chain/dubbo-samples-chain-backend/src/main/resources/spring/dubbo-demo-provider.xml
similarity index 90%
rename from 
dubbo-samples-concurrency/dubbo-samples-concurrency-backend/src/main/resources/spring/dubbo-demo-provider.xml
rename to 
dubbo-samples-chain/dubbo-samples-chain-backend/src/main/resources/spring/dubbo-demo-provider.xml
index a91c98c..5a6c777 100644
--- 
a/dubbo-samples-concurrency/dubbo-samples-concurrency-backend/src/main/resources/spring/dubbo-demo-provider.xml
+++ 
b/dubbo-samples-chain/dubbo-samples-chain-backend/src/main/resources/spring/dubbo-demo-provider.xml
@@ -26,14 +26,10 @@
 
     <!-- optional provider's application name, used for tracing dependency 
relationship -->
     <dubbo:application name="concurrency-backend"/>
-
-    <!-- optional -->
     <dubbo:registry address="zookeeper://127.0.0.1:2181"/>
+    <dubbo:protocol port="-1"/>
 
-    <!--optional, use dubbo protocol to export service on port 20880 -->
-    <dubbo:protocol name="dubbo" port="-1"/>
-
-    <dubbo:config-center enable="false" address="zookeeper://127.0.0.1:2181"/>
+    <dubbo:config-center address="zookeeper://127.0.0.1:2181"/>
 
     <bean id="catService" 
class="org.apache.dubbo.samples.governance.impl.CatServiceImpl"/>
     <dubbo:service 
interface="org.apache.dubbo.samples.governance.api.CatService" 
ref="catService"/>
diff --git a/dubbo-samples-concurrency/dubbo-samples-concurrency-middle/pom.xml 
b/dubbo-samples-chain/dubbo-samples-chain-front/pom.xml
similarity index 88%
rename from dubbo-samples-concurrency/dubbo-samples-concurrency-middle/pom.xml
rename to dubbo-samples-chain/dubbo-samples-chain-front/pom.xml
index 58dd3c9..2007464 100644
--- a/dubbo-samples-concurrency/dubbo-samples-concurrency-middle/pom.xml
+++ b/dubbo-samples-chain/dubbo-samples-chain-front/pom.xml
@@ -22,13 +22,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-samples-concurrency</artifactId>
+        <artifactId>dubbo-samples-chain</artifactId>
         <groupId>org.apache.dubbo</groupId>
         <version>1.0-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
-    <artifactId>dubbo-samples-concurrency-middle</artifactId>
+    <artifactId>dubbo-samples-chain-front</artifactId>
     <dependencies>
         <dependency>
             <groupId>org.springframework</groupId>
@@ -36,7 +36,7 @@
         </dependency>
         <dependency>
             <groupId>org.apache.dubbo</groupId>
-            <artifactId>dubbo-samples-concurrency-api</artifactId>
+            <artifactId>dubbo-samples-chain-api</artifactId>
             <version>${project.version}</version>
         </dependency>
     </dependencies>
diff --git 
a/dubbo-samples-concurrency/dubbo-samples-concurrency-front/src/main/java/org/apache/dubbo/samples/governance/FrontendConsumer.java
 
b/dubbo-samples-chain/dubbo-samples-chain-front/src/main/java/org/apache/dubbo/samples/governance/FrontendConsumer.java
similarity index 70%
rename from 
dubbo-samples-concurrency/dubbo-samples-concurrency-front/src/main/java/org/apache/dubbo/samples/governance/FrontendConsumer.java
rename to 
dubbo-samples-chain/dubbo-samples-chain-front/src/main/java/org/apache/dubbo/samples/governance/FrontendConsumer.java
index fb614d2..6aa54f6 100644
--- 
a/dubbo-samples-concurrency/dubbo-samples-concurrency-front/src/main/java/org/apache/dubbo/samples/governance/FrontendConsumer.java
+++ 
b/dubbo-samples-chain/dubbo-samples-chain-front/src/main/java/org/apache/dubbo/samples/governance/FrontendConsumer.java
@@ -19,6 +19,8 @@
 
 package org.apache.dubbo.samples.governance;
 
+import org.apache.dubbo.common.Constants;
+import org.apache.dubbo.rpc.RpcContext;
 import org.apache.dubbo.samples.governance.api.AmericanService;
 import org.apache.dubbo.samples.governance.api.CatService;
 import org.apache.dubbo.samples.governance.api.ChineseService;
@@ -35,24 +37,19 @@ public class FrontendConsumer {
 
     private static ExecutorService executorService = 
Executors.newFixedThreadPool(3);
 
-    private static long interval = 5000;
+    private static long interval = 200;
 
     public static void main(String[] args) {
         ClassPathXmlApplicationContext context = new 
ClassPathXmlApplicationContext(new String[]{"spring/dubbo-demo-consumer.xml"});
         context.start();
 
-        while (true) {
-            try {
+
 //                cat(context);
-                dog(context);
+        dog(context);
 //                tiger(context);
 //                lion(context);
-                chinese(context);
-                american(context);
-            } catch (Throwable throwable) {
-                throwable.printStackTrace();
-            }
-        }
+//        chinese(context);
+//        american(context);
 
     }
 
@@ -69,9 +66,14 @@ public class FrontendConsumer {
     public static void dog(ClassPathXmlApplicationContext context) {
         executorService.submit(() -> {
             while (true) {
-                DogService dogService = (DogService) 
context.getBean("dogService");
-                System.out.println(dogService.dog());
-                Thread.sleep(interval);
+                try {
+                    RpcContext.getContext().setAttachment(Constants.TAG_KEY, 
"tag1");
+                    DogService dogService = (DogService) 
context.getBean("dogService");
+                    System.out.println(dogService.dog());
+                    Thread.sleep(interval);
+                } catch (Exception e) {
+                    e.printStackTrace();
+                }
             }
         });
     }
@@ -99,9 +101,14 @@ public class FrontendConsumer {
     public static void chinese(ClassPathXmlApplicationContext context) {
         executorService.submit(() -> {
             while (true) {
-                ChineseService chineseService = (ChineseService) 
context.getBean("chineseService");
-                System.out.println(chineseService.eat());
-                Thread.sleep(interval);
+                try {
+                    RpcContext.getContext().setAttachment(Constants.TAG_KEY, 
"tag1");
+                    ChineseService chineseService = (ChineseService) 
context.getBean("chineseService");
+                    System.out.println(chineseService.eat());
+                    Thread.sleep(interval);
+                } catch (Exception e) {
+                    e.printStackTrace();
+                }
             }
         });
     }
@@ -109,9 +116,14 @@ public class FrontendConsumer {
     public static void american(ClassPathXmlApplicationContext context) {
         executorService.submit(() -> {
             while (true) {
-                AmericanService americanService = (AmericanService) 
context.getBean("americanService");
-                System.out.println(americanService.eat());
-                Thread.sleep(interval);
+                try {
+                    RpcContext.getContext().setAttachment(Constants.TAG_KEY, 
"tag1");
+                    AmericanService americanService = (AmericanService) 
context.getBean("americanService");
+                    System.out.println(americanService.eat());
+                    Thread.sleep(interval);
+                } catch (Exception e) {
+                    e.printStackTrace();
+                }
             }
         });
     }
diff --git 
a/dubbo-samples-concurrency/dubbo-samples-concurrency-front/src/main/resources/log4j.properties
 
b/dubbo-samples-chain/dubbo-samples-chain-front/src/main/resources/log4j.properties
similarity index 100%
rename from 
dubbo-samples-concurrency/dubbo-samples-concurrency-front/src/main/resources/log4j.properties
rename to 
dubbo-samples-chain/dubbo-samples-chain-front/src/main/resources/log4j.properties
diff --git 
a/dubbo-samples-concurrency/dubbo-samples-concurrency-front/src/main/resources/spring/dubbo-demo-consumer.xml
 
b/dubbo-samples-chain/dubbo-samples-chain-front/src/main/resources/spring/dubbo-demo-consumer.xml
similarity index 93%
rename from 
dubbo-samples-concurrency/dubbo-samples-concurrency-front/src/main/resources/spring/dubbo-demo-consumer.xml
rename to 
dubbo-samples-chain/dubbo-samples-chain-front/src/main/resources/spring/dubbo-demo-consumer.xml
index fdcecdb..333c3e3 100644
--- 
a/dubbo-samples-concurrency/dubbo-samples-concurrency-front/src/main/resources/spring/dubbo-demo-consumer.xml
+++ 
b/dubbo-samples-chain/dubbo-samples-chain-front/src/main/resources/spring/dubbo-demo-consumer.xml
@@ -27,11 +27,9 @@
     <!-- optional, consumer's application name, used for tracing dependency 
relationship (not a matching criterion),
     don't set it same as provider -->
     <dubbo:application name="concurrency-front"/>
-
-    <!-- optional, use multicast registry center to discover service -->
     <dubbo:registry address="zookeeper://127.0.0.1:2181"/>
 
-    <dubbo:config-center enable="false" address="zookeeper://127.0.0.1:2181"/>
+    <dubbo:config-center address="zookeeper://127.0.0.1:2181"/>
 
     <!-- generate proxy for the remote service, then demoService can be used 
in the same way as the
     local regular interface -->
diff --git 
a/dubbo-samples-concurrency/dubbo-samples-concurrency-backend/pom.xml 
b/dubbo-samples-chain/dubbo-samples-chain-middle/pom.xml
similarity index 88%
rename from dubbo-samples-concurrency/dubbo-samples-concurrency-backend/pom.xml
rename to dubbo-samples-chain/dubbo-samples-chain-middle/pom.xml
index 2f3a749..b0b0ff7 100644
--- a/dubbo-samples-concurrency/dubbo-samples-concurrency-backend/pom.xml
+++ b/dubbo-samples-chain/dubbo-samples-chain-middle/pom.xml
@@ -22,13 +22,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-samples-concurrency</artifactId>
+        <artifactId>dubbo-samples-chain</artifactId>
         <groupId>org.apache.dubbo</groupId>
         <version>1.0-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
-    <artifactId>dubbo-samples-concurrency-backend</artifactId>
+    <artifactId>dubbo-samples-chain-middle</artifactId>
     <dependencies>
         <dependency>
             <groupId>org.springframework</groupId>
@@ -36,7 +36,7 @@
         </dependency>
         <dependency>
             <groupId>org.apache.dubbo</groupId>
-            <artifactId>dubbo-samples-concurrency-api</artifactId>
+            <artifactId>dubbo-samples-chain-api</artifactId>
             <version>${project.version}</version>
         </dependency>
     </dependencies>
diff --git 
a/dubbo-samples-concurrency/dubbo-samples-concurrency-middle/src/main/java/org/apache/dubbo/samples/governance/MiddleEndProvider.java
 
b/dubbo-samples-chain/dubbo-samples-chain-middle/src/main/java/org/apache/dubbo/samples/governance/MiddleEndProvider.java
similarity index 100%
rename from 
dubbo-samples-concurrency/dubbo-samples-concurrency-middle/src/main/java/org/apache/dubbo/samples/governance/MiddleEndProvider.java
rename to 
dubbo-samples-chain/dubbo-samples-chain-middle/src/main/java/org/apache/dubbo/samples/governance/MiddleEndProvider.java
diff --git 
a/dubbo-samples-concurrency/dubbo-samples-concurrency-middle/src/main/java/org/apache/dubbo/samples/governance/impl/AmericanServiceImpl.java
 
b/dubbo-samples-chain/dubbo-samples-chain-middle/src/main/java/org/apache/dubbo/samples/governance/impl/AmericanServiceImpl.java
similarity index 100%
rename from 
dubbo-samples-concurrency/dubbo-samples-concurrency-middle/src/main/java/org/apache/dubbo/samples/governance/impl/AmericanServiceImpl.java
rename to 
dubbo-samples-chain/dubbo-samples-chain-middle/src/main/java/org/apache/dubbo/samples/governance/impl/AmericanServiceImpl.java
diff --git 
a/dubbo-samples-concurrency/dubbo-samples-concurrency-middle/src/main/java/org/apache/dubbo/samples/governance/impl/ChineseServiceImpl.java
 
b/dubbo-samples-chain/dubbo-samples-chain-middle/src/main/java/org/apache/dubbo/samples/governance/impl/ChineseServiceImpl.java
similarity index 100%
rename from 
dubbo-samples-concurrency/dubbo-samples-concurrency-middle/src/main/java/org/apache/dubbo/samples/governance/impl/ChineseServiceImpl.java
rename to 
dubbo-samples-chain/dubbo-samples-chain-middle/src/main/java/org/apache/dubbo/samples/governance/impl/ChineseServiceImpl.java
diff --git 
a/dubbo-samples-concurrency/dubbo-samples-concurrency-backend/src/main/resources/log4j.properties
 
b/dubbo-samples-chain/dubbo-samples-chain-middle/src/main/resources/log4j.properties
similarity index 100%
rename from 
dubbo-samples-concurrency/dubbo-samples-concurrency-backend/src/main/resources/log4j.properties
rename to 
dubbo-samples-chain/dubbo-samples-chain-middle/src/main/resources/log4j.properties
diff --git 
a/dubbo-samples-concurrency/dubbo-samples-concurrency-middle/src/main/resources/spring/dubbo-demo-provider.xml
 
b/dubbo-samples-chain/dubbo-samples-chain-middle/src/main/resources/spring/dubbo-demo-provider.xml
similarity index 92%
rename from 
dubbo-samples-concurrency/dubbo-samples-concurrency-middle/src/main/resources/spring/dubbo-demo-provider.xml
rename to 
dubbo-samples-chain/dubbo-samples-chain-middle/src/main/resources/spring/dubbo-demo-provider.xml
index 135405b..b760308 100644
--- 
a/dubbo-samples-concurrency/dubbo-samples-concurrency-middle/src/main/resources/spring/dubbo-demo-provider.xml
+++ 
b/dubbo-samples-chain/dubbo-samples-chain-middle/src/main/resources/spring/dubbo-demo-provider.xml
@@ -28,14 +28,10 @@
 
     <!-- optional provider's application name, used for tracing dependency 
relationship -->
     <dubbo:application name="concurrency-middle"/>
-
-    <!-- optional -->
     <dubbo:registry address="zookeeper://127.0.0.1:2181"/>
+    <dubbo:protocol port="-1"/>
 
-    <!--optional, use dubbo protocol to export service on port 20880 -->
-    <dubbo:protocol name="dubbo" port="-1"/>
-
-    <dubbo:config-center enable="false" address="zookeeper://127.0.0.1:2181"/>
+    <dubbo:config-center address="zookeeper://127.0.0.1:2181"/>
 
     <!-- generate proxy for the remote service, then demoService can be used 
in the same way as the
     local regular interface -->
diff --git a/dubbo-samples-concurrency/pom.xml b/dubbo-samples-chain/pom.xml
similarity index 86%
rename from dubbo-samples-concurrency/pom.xml
rename to dubbo-samples-chain/pom.xml
index d735351..bf081b3 100644
--- a/dubbo-samples-concurrency/pom.xml
+++ b/dubbo-samples-chain/pom.xml
@@ -28,13 +28,13 @@
     </parent>
     <modelVersion>4.0.0</modelVersion>
     <packaging>pom</packaging>
-    <artifactId>dubbo-samples-concurrency</artifactId>
+    <artifactId>dubbo-samples-chain</artifactId>
 
     <modules>
-        <module>dubbo-samples-concurrency-api</module>
-        <module>dubbo-samples-concurrency-front</module>
-        <module>dubbo-samples-concurrency-middle</module>
-        <module>dubbo-samples-concurrency-backend</module>
+        <module>dubbo-samples-chain-api</module>
+        <module>dubbo-samples-chain-front</module>
+        <module>dubbo-samples-chain-middle</module>
+        <module>dubbo-samples-chain-backend</module>
     </modules>
 
     <dependencies>
diff --git 
a/dubbo-samples-configcenter/dubbo-samples-configcenter-annotation/src/main/java/org/apache/dubbo/samples/annotation/AnnotationConsumer.java
 
b/dubbo-samples-configcenter/dubbo-samples-configcenter-annotation/src/main/java/org/apache/dubbo/samples/annotation/AnnotationConsumer.java
index ff80068..0f99d52 100644
--- 
a/dubbo-samples-configcenter/dubbo-samples-configcenter-annotation/src/main/java/org/apache/dubbo/samples/annotation/AnnotationConsumer.java
+++ 
b/dubbo-samples-configcenter/dubbo-samples-configcenter-annotation/src/main/java/org/apache/dubbo/samples/annotation/AnnotationConsumer.java
@@ -21,6 +21,7 @@ package org.apache.dubbo.samples.annotation;
 
 import org.apache.dubbo.config.spring.context.annotation.EnableDubbo;
 import org.apache.dubbo.samples.annotation.action.AnnotationAction;
+
 import 
org.springframework.context.annotation.AnnotationConfigApplicationContext;
 import org.springframework.context.annotation.ComponentScan;
 import org.springframework.context.annotation.Configuration;
@@ -37,11 +38,11 @@ public class AnnotationConsumer {
         final AnnotationAction annotationAction = (AnnotationAction) 
context.getBean("annotationAction");
         String hello = annotationAction.doSayHello("world");
         System.out.println("result :" + hello);
-        System.in.read();
+        Thread.sleep(10000000);
     }
 
     @Configuration
-    @EnableDubbo(scanBasePackages = 
"org.apache.dubbo.samples.annotation.action")
+    @EnableDubbo(scanBasePackages = 
"org.apache.dubbo.samples.annotation.action", multipleConfig = true)
     @PropertySource("classpath:/spring/dubbo-consumer.properties")
     @ComponentScan(value = {"org.apache.dubbo.samples.annotation.action"})
     static public class ConsumerConfiguration {
diff --git 
a/dubbo-samples-configcenter/dubbo-samples-configcenter-externalconfiguration/src/main/resources/yourconfigcenter/dubbo-properties-in-configcenter.properties
 
b/dubbo-samples-configcenter/dubbo-samples-configcenter-annotation/src/main/resources/config-center.properties
similarity index 56%
copy from 
dubbo-samples-configcenter/dubbo-samples-configcenter-externalconfiguration/src/main/resources/yourconfigcenter/dubbo-properties-in-configcenter.properties
copy to 
dubbo-samples-configcenter/dubbo-samples-configcenter-annotation/src/main/resources/config-center.properties
index 180ca9f..62a16a1 100644
--- 
a/dubbo-samples-configcenter/dubbo-samples-configcenter-externalconfiguration/src/main/resources/yourconfigcenter/dubbo-properties-in-configcenter.properties
+++ 
b/dubbo-samples-configcenter/dubbo-samples-configcenter-annotation/src/main/resources/config-center.properties
@@ -1,24 +1,29 @@
-#
-#
 #   Licensed to the Apache Software Foundation (ASF) under one or more
 #   contributor license agreements.  See the NOTICE file distributed with
 #   this work for additional information regarding copyright ownership.
 #   The ASF licenses this file to You under the Apache License, Version 2.0
 #   (the "License"); you may not use this file except in compliance with
 #   the License.  You may obtain a copy of the License at
-#  
+#
 #       http://www.apache.org/licenses/LICENSE-2.0
-#  
+#
 #   Unless required by applicable law or agreed to in writing, software
 #   distributed under the License is distributed on an "AS IS" BASIS,
 #   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 #   See the License for the specific language governing permissions and
 #   limitations under the License.
-#  
-#
-dubbo.application.name=configcenter-annotation-demo
-dubbo.configcenter.address=zookeeper://127.0.0.1:2181
+# Add the following global external properties to 
`/dubbo/config/dubbo/dubbo.properties`
 dubbo.registry.address=zookeeper://127.0.0.1:2181
-dubbo.protocol.name=dubbo
-dubbo.protocol.port=20880
-dubbo.consumer.timeout=3000
\ No newline at end of file
+#global config for consumer
+dubbo.consumer.loadbalance=random
+#global config for provider
+dubbo.protocol.port=20990
+dubbo.provider.timeout=5000
+dubbo.registryData.simpleConsumerConfig=true
+# Optional. Add the following application(Provider) specific external 
properties
+# to `/dubbo/config/configcenter-annotation-provider/dubbo.properties`
+dubbo.protocol.threadpool=fixed
+dubbo.protocol.threads=100
+# Optional. Add the following application(Consumer) specific external 
properties
+# to `/dubbo/config/configcenter-annotation-consumer/dubbo.properties`
+dubbo.consumer.timeout=6666
diff --git 
a/dubbo-samples-configcenter/dubbo-samples-configcenter-annotation/src/main/resources/spring/dubbo-consumer.properties
 
b/dubbo-samples-configcenter/dubbo-samples-configcenter-annotation/src/main/resources/spring/dubbo-consumer.properties
index fa5da7e..61b3eed 100644
--- 
a/dubbo-samples-configcenter/dubbo-samples-configcenter-annotation/src/main/resources/spring/dubbo-consumer.properties
+++ 
b/dubbo-samples-configcenter/dubbo-samples-configcenter-annotation/src/main/resources/spring/dubbo-consumer.properties
@@ -16,9 +16,10 @@
 #   limitations under the License.
 #  
 #
-dubbo.application.name=configcenter-annotation-provider
-dubbo.config-center.address=zookeeper://127.0.0.1:2181
-dubbo.config-center.configfile=dubbo.properties
+dubbo.applications.configcenter-annotation-provider.name=configcenter-annotation-provider
+dubbo.configCenters.zookeeper.address=zookeeper://127.0.0.1:2181
+dubbo.configCenters.zookeeper.configfile=dubbo.properties
+dubbo.configCenters.zookeeper.highestPriority=true
 # The common part, for example registry, protocol can be stored under the 
global group in ConfigCenter
 #dubbo.registry.address=zookeeper://127.0.0.1:2181
 # The application specific part, can be stored under the app group in the 
ConfigCenter
diff --git 
a/dubbo-samples-configcenter/dubbo-samples-configcenter-annotation/src/main/resources/spring/dubbo-provider.properties
 
b/dubbo-samples-configcenter/dubbo-samples-configcenter-annotation/src/main/resources/spring/dubbo-provider.properties
index bb7d957..5d47905 100644
--- 
a/dubbo-samples-configcenter/dubbo-samples-configcenter-annotation/src/main/resources/spring/dubbo-provider.properties
+++ 
b/dubbo-samples-configcenter/dubbo-samples-configcenter-annotation/src/main/resources/spring/dubbo-provider.properties
@@ -17,8 +17,9 @@
 #  
 #
 dubbo.application.name=configcenter-annotation-provider
-dubbo.config-center.address=zookeeper://127.0.0.1:2181
-dubbo.config-center.configfile=dubbo.properties
+dubbo.configCenter.address=zookeeper://127.0.0.1:2181
+dubbo.configCenter.configFile=dubbo.properties
+dubbo.configCenter.highestPriority=true
 # The common part, for example registry, protocol can be stored under the 
global group in ConfigCenter
 # The application specific part, can be stored under the app group in the 
ConfigCenter
 #dubbo.registry.address=zookeeper://127.0.0.1:2181
diff --git 
a/dubbo-samples-configcenter/dubbo-samples-configcenter-externalconfiguration/src/main/java/org/apache/dubbo/samples/externalconfiguration/consumer/AnnotationConsumer.java
 
b/dubbo-samples-configcenter/dubbo-samples-configcenter-externalconfiguration/src/main/java/org/apache/dubbo/samples/externalconfiguration/consumer/AnnotationConsumer.java
index ae5a7ee..4c80a62 100644
--- 
a/dubbo-samples-configcenter/dubbo-samples-configcenter-externalconfiguration/src/main/java/org/apache/dubbo/samples/externalconfiguration/consumer/AnnotationConsumer.java
+++ 
b/dubbo-samples-configcenter/dubbo-samples-configcenter-externalconfiguration/src/main/java/org/apache/dubbo/samples/externalconfiguration/consumer/AnnotationConsumer.java
@@ -57,8 +57,8 @@ public class AnnotationConsumer {
             ConfigCenterBean configCenterBean = new ConfigCenterBean();
             // This is a critical switch to tell Dubbo framework to get 
configs from standard Spring Environment
             configCenterBean.setFromSpring(true);
-            configCenterBean.setConfigfile("dubbo.properties");// by default 
is dubbo.properties
-            
configCenterBean.setLocalconfigfile("configcenter-annotation-provider.dubbo.properties");
 // by default is application.dubbo.properties
+            configCenterBean.setConfigFile("dubbo.properties");// by default 
is dubbo.properties
+            
configCenterBean.setAppConfigFile("configcenter-annotation-provider.dubbo.properties");
 // by default is application.dubbo.properties
             return configCenterBean;
         }
 
diff --git 
a/dubbo-samples-configcenter/dubbo-samples-configcenter-externalconfiguration/src/main/java/org/apache/dubbo/samples/externalconfiguration/provider/AnnotationProvider.java
 
b/dubbo-samples-configcenter/dubbo-samples-configcenter-externalconfiguration/src/main/java/org/apache/dubbo/samples/externalconfiguration/provider/AnnotationProvider.java
index 2ad582b..fd0ca76 100644
--- 
a/dubbo-samples-configcenter/dubbo-samples-configcenter-externalconfiguration/src/main/java/org/apache/dubbo/samples/externalconfiguration/provider/AnnotationProvider.java
+++ 
b/dubbo-samples-configcenter/dubbo-samples-configcenter-externalconfiguration/src/main/java/org/apache/dubbo/samples/externalconfiguration/provider/AnnotationProvider.java
@@ -57,8 +57,8 @@ public class AnnotationProvider {
             ConfigCenterBean configCenterBean = new ConfigCenterBean();
             // This is a critical switch to tell Dubbo framework to get 
configs from standard Spring Environment
             configCenterBean.setFromSpring(true);
-            configCenterBean.setConfigfile("dubbo.properties");// by default 
is dubbo.properties
-            
configCenterBean.setLocalconfigfile("configcenter-annotation-provider.dubbo.properties");
 // by default is application.dubbo.properties
+            configCenterBean.setConfigFile("dubbo.properties");// by default 
is dubbo.properties
+            
configCenterBean.setAppConfigFile("configcenter-annotation-provider.dubbo.properties");
 // by default is application.dubbo.properties
             return configCenterBean;
         }
 
diff --git 
a/dubbo-samples-configcenter/dubbo-samples-configcenter-externalconfiguration/src/main/java/org/apache/dubbo/samples/externalconfiguration/spring/MyEnvironmentPostProcessor.java
 
b/dubbo-samples-configcenter/dubbo-samples-configcenter-externalconfiguration/src/main/java/org/apache/dubbo/samples/externalconfiguration/spring/MyEnvironmentPostProcessor.java
index 173afce..7ab7257 100644
--- 
a/dubbo-samples-configcenter/dubbo-samples-configcenter-externalconfiguration/src/main/java/org/apache/dubbo/samples/externalconfiguration/spring/MyEnvironmentPostProcessor.java
+++ 
b/dubbo-samples-configcenter/dubbo-samples-configcenter-externalconfiguration/src/main/java/org/apache/dubbo/samples/externalconfiguration/spring/MyEnvironmentPostProcessor.java
@@ -46,14 +46,19 @@ public class MyEnvironmentPostProcessor implements 
EnvironmentPostProcessor {
             environment.getPropertySources().addLast(dubboPropertySource);
 
             Map<String, Object> appDubboProperties = new HashMap<>();
-            BufferedReader appReader = new BufferedReader(new 
InputStreamReader(MyEnvironmentPostProcessor.class.getResourceAsStream("/yourconfigcenter/dubbo-properties-in-configcenter-provider.properties")));
+            BufferedReader appReader;
             String appName = 
application.getMainApplicationClass().getSimpleName();
             if (appName.contains("consumer")) {
                 appReader = new BufferedReader(new 
InputStreamReader(MyEnvironmentPostProcessor.class.getResourceAsStream("/yourconfigcenter/dubbo-properties-in-configcenter-consumer.properties")));
+                
appDubboProperties.put("configcenter-annotation-consumer.dubbo.properties", 
appReader.lines().collect(Collectors.joining("\n")));
+                MapPropertySource appDubboPropertySource = new 
MapPropertySource("configcenter-annotation-consumer.dubbo.properties", 
appDubboProperties);
+                
environment.getPropertySources().addLast(appDubboPropertySource);
+            } else {
+                appReader = new BufferedReader(new 
InputStreamReader(MyEnvironmentPostProcessor.class.getResourceAsStream("/yourconfigcenter/dubbo-properties-in-configcenter-provider.properties")));
+                
appDubboProperties.put("configcenter-annotation-provider.dubbo.properties", 
appReader.lines().collect(Collectors.joining("\n")));
+                MapPropertySource appDubboPropertySource = new 
MapPropertySource("configcenter-annotation-provider.dubbo.properties", 
appDubboProperties);
+                
environment.getPropertySources().addLast(appDubboPropertySource);
             }
-            appDubboProperties.put("application.dubbo.properties", 
appReader.lines().collect(Collectors.joining("\n")));
-            MapPropertySource appDubboPropertySource = new 
MapPropertySource("configcenter-annotation-provider.dubbo.properties", 
appDubboProperties);
-            environment.getPropertySources().addLast(appDubboPropertySource);
         } catch (Exception e) {
             e.printStackTrace();
         }
diff --git 
a/dubbo-samples-configcenter/dubbo-samples-configcenter-externalconfiguration/src/main/resources/yourconfigcenter/dubbo-properties-in-configcenter.properties
 
b/dubbo-samples-configcenter/dubbo-samples-configcenter-externalconfiguration/src/main/resources/yourconfigcenter/dubbo-properties-in-configcenter.properties
index 180ca9f..eee0ec6 100644
--- 
a/dubbo-samples-configcenter/dubbo-samples-configcenter-externalconfiguration/src/main/resources/yourconfigcenter/dubbo-properties-in-configcenter.properties
+++ 
b/dubbo-samples-configcenter/dubbo-samples-configcenter-externalconfiguration/src/main/resources/yourconfigcenter/dubbo-properties-in-configcenter.properties
@@ -16,7 +16,6 @@
 #   limitations under the License.
 #  
 #
-dubbo.application.name=configcenter-annotation-demo
 dubbo.configcenter.address=zookeeper://127.0.0.1:2181
 dubbo.registry.address=zookeeper://127.0.0.1:2181
 dubbo.protocol.name=dubbo
diff --git 
a/dubbo-samples-configcenter/dubbo-samples-configcenter-multi-registries/src/main/resources/spring/dubbo-consumer.properties
 
b/dubbo-samples-configcenter/dubbo-samples-configcenter-multi-registries/src/main/resources/spring/dubbo-consumer.properties
index fa5da7e..c474256 100644
--- 
a/dubbo-samples-configcenter/dubbo-samples-configcenter-multi-registries/src/main/resources/spring/dubbo-consumer.properties
+++ 
b/dubbo-samples-configcenter/dubbo-samples-configcenter-multi-registries/src/main/resources/spring/dubbo-consumer.properties
@@ -17,8 +17,8 @@
 #  
 #
 dubbo.application.name=configcenter-annotation-provider
-dubbo.config-center.address=zookeeper://127.0.0.1:2181
-dubbo.config-center.configfile=dubbo.properties
+dubbo.configCenter.address=zookeeper://127.0.0.1:2181
+dubbo.configCenter.configFile=dubbo.properties
 # The common part, for example registry, protocol can be stored under the 
global group in ConfigCenter
 #dubbo.registry.address=zookeeper://127.0.0.1:2181
 # The application specific part, can be stored under the app group in the 
ConfigCenter
diff --git 
a/dubbo-samples-configcenter/dubbo-samples-configcenter-multi-registries/src/main/resources/spring/dubbo-provider.properties
 
b/dubbo-samples-configcenter/dubbo-samples-configcenter-multi-registries/src/main/resources/spring/dubbo-provider.properties
index bb7d957..333e3fb 100644
--- 
a/dubbo-samples-configcenter/dubbo-samples-configcenter-multi-registries/src/main/resources/spring/dubbo-provider.properties
+++ 
b/dubbo-samples-configcenter/dubbo-samples-configcenter-multi-registries/src/main/resources/spring/dubbo-provider.properties
@@ -17,10 +17,6 @@
 #  
 #
 dubbo.application.name=configcenter-annotation-provider
-dubbo.config-center.address=zookeeper://127.0.0.1:2181
-dubbo.config-center.configfile=dubbo.properties
-# The common part, for example registry, protocol can be stored under the 
global group in ConfigCenter
-# The application specific part, can be stored under the app group in the 
ConfigCenter
-#dubbo.registry.address=zookeeper://127.0.0.1:2181
-#dubbo.protocol.name=dubbo
-#dubbo.protocol.port=20880
\ No newline at end of file
+dubbo.configCenter.address=zookeeper://127.0.0.1:2181
+dubbo.configCenter.configfile=dubbo.properties
+dubbo.registries.registry1.address=xxx
\ No newline at end of file
diff --git 
a/dubbo-samples-configcenter/dubbo-samples-configcenter-multiprotocol/src/main/java/org/apache/dubbo/samples/configcenter/ZKTools.java
 
b/dubbo-samples-configcenter/dubbo-samples-configcenter-multiprotocol/src/main/java/org/apache/dubbo/samples/configcenter/ZKTools.java
index 4cf3931..5bed08f 100644
--- 
a/dubbo-samples-configcenter/dubbo-samples-configcenter-multiprotocol/src/main/java/org/apache/dubbo/samples/configcenter/ZKTools.java
+++ 
b/dubbo-samples-configcenter/dubbo-samples-configcenter-multiprotocol/src/main/java/org/apache/dubbo/samples/configcenter/ZKTools.java
@@ -32,35 +32,11 @@ public class ZKTools {
         client = CuratorFrameworkFactory.newClient("127.0.0.1:2181", 60 * 
1000, 60 * 1000,
                 new ExponentialBackoffRetry(1000, 3));
         client.start();
-//
-//        generateDubboPropertiesForGlobal();
-//        generateDubboPropertiesForApp();
-        System.in.read();
+        generateDubboPropertiesForGlobal();
     }
 
     public static void generateDubboPropertiesForGlobal() {
-        String str = "dubbo.registry.address=zookeeper://127.0.0.1:2181";
-
-//        String str = "dubbo.registry.address=zookeeper://127.0.0.1:2183\n" +
-//                
"dubbo.registries.registry1.address=zookeeper://127.0.0.1:2181\n" +
-//                
"dubbo.registries.registry2.address=zookeeper://127.0.0.1:2181\n";
-
-        System.out.println(str);
-
-        try {
-            String path = "/dubbo/config/dubbo/dubbo.properties";
-            if (client.checkExists().forPath(path) == null) {
-                client.create().creatingParentsIfNeeded().forPath(path);
-            }
-            setData(path, str);
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-    }
-
-    public static void generateDubboPropertiesForApp() {
-        String str = "#key: dubbo.{item-name}.{id}.{property}\n" + 
"dubbo.protocols.dubbo1.name=dubbo\n" + "dubbo.protocols.dubbo1.port=20991\n" +
-                "\n" + "dubbo.protocols.hessian1.name=hessian\n" + 
"dubbo.protocols.hessian1.port=8089";
+        String str = "#key: dubbo.{item-name}.{id}.{property}\n" + 
"dubbo.registry.address=zookeeper://127.0.0.1:2181\n" + 
"dubbo.protocols.dubbo1.name=dubbo\n" + "dubbo.protocols.dubbo1.port=20991\n" + 
"dubbo.protocols.hessian1.name=hessian\n" + 
"dubbo.protocols.hessian1.port=8089";
 
         System.out.println(str);
 
diff --git 
a/dubbo-samples-configcenter/dubbo-samples-configcenter-multiprotocol/src/main/resources/META-INF/spring/configcenter-consumer.xml
 
b/dubbo-samples-configcenter/dubbo-samples-configcenter-multiprotocol/src/main/resources/META-INF/spring/configcenter-consumer.xml
index 0c56766..e330a49 100644
--- 
a/dubbo-samples-configcenter/dubbo-samples-configcenter-multiprotocol/src/main/resources/META-INF/spring/configcenter-consumer.xml
+++ 
b/dubbo-samples-configcenter/dubbo-samples-configcenter-multiprotocol/src/main/resources/META-INF/spring/configcenter-consumer.xml
@@ -26,7 +26,7 @@
 
     <dubbo:application name="configcenter-multiprotocol-consumer"/>
 
-    <dubbo:config-center address="zookeeper://127.0.0.1:2181" 
configfile="dubbo.properties"/>
+    <dubbo:config-center address="zookeeper://127.0.0.1:2181"/>
 
     <dubbo:reference id="demoService" protocol="hessian"
                      
interface="org.apache.dubbo.samples.configcenter.api.DemoService"/>
diff --git 
a/dubbo-samples-configcenter/dubbo-samples-configcenter-multiprotocol/src/main/resources/META-INF/spring/configcenter-provider.xml
 
b/dubbo-samples-configcenter/dubbo-samples-configcenter-multiprotocol/src/main/resources/META-INF/spring/configcenter-provider.xml
index 163acc0..a6e1284 100644
--- 
a/dubbo-samples-configcenter/dubbo-samples-configcenter-multiprotocol/src/main/resources/META-INF/spring/configcenter-provider.xml
+++ 
b/dubbo-samples-configcenter/dubbo-samples-configcenter-multiprotocol/src/main/resources/META-INF/spring/configcenter-provider.xml
@@ -28,10 +28,8 @@
 
     <dubbo:config-center address="zookeeper://127.0.0.1:2181"/>
 
-    <dubbo:provider protocol="hessian1"/>
-
     <bean id="demoService" 
class="org.apache.dubbo.samples.configcenter.impl.DemoServiceImpl"/>
-    <dubbo:service 
interface="org.apache.dubbo.samples.configcenter.api.DemoService"
+    <dubbo:service protocol="hessian1" 
interface="org.apache.dubbo.samples.configcenter.api.DemoService"
                    ref="demoService"/>
     <dubbo:service protocol="dubbo1" 
interface="org.apache.dubbo.samples.configcenter.api.DemoService"
                    ref="demoService"/>
diff --git 
a/dubbo-samples-configcenter/dubbo-samples-configcenter-externalconfiguration/src/main/resources/yourconfigcenter/dubbo-properties-in-configcenter.properties
 
b/dubbo-samples-configcenter/dubbo-samples-configcenter-multiprotocol/src/main/resources/multi-protocols-config-center.properties
similarity index 75%
copy from 
dubbo-samples-configcenter/dubbo-samples-configcenter-externalconfiguration/src/main/resources/yourconfigcenter/dubbo-properties-in-configcenter.properties
copy to 
dubbo-samples-configcenter/dubbo-samples-configcenter-multiprotocol/src/main/resources/multi-protocols-config-center.properties
index 180ca9f..0087bbe 100644
--- 
a/dubbo-samples-configcenter/dubbo-samples-configcenter-externalconfiguration/src/main/resources/yourconfigcenter/dubbo-properties-in-configcenter.properties
+++ 
b/dubbo-samples-configcenter/dubbo-samples-configcenter-multiprotocol/src/main/resources/multi-protocols-config-center.properties
@@ -1,24 +1,22 @@
-#
-#
 #   Licensed to the Apache Software Foundation (ASF) under one or more
 #   contributor license agreements.  See the NOTICE file distributed with
 #   this work for additional information regarding copyright ownership.
 #   The ASF licenses this file to You under the Apache License, Version 2.0
 #   (the "License"); you may not use this file except in compliance with
 #   the License.  You may obtain a copy of the License at
-#  
+#
 #       http://www.apache.org/licenses/LICENSE-2.0
-#  
+#
 #   Unless required by applicable law or agreed to in writing, software
 #   distributed under the License is distributed on an "AS IS" BASIS,
 #   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 #   See the License for the specific language governing permissions and
 #   limitations under the License.
-#  
-#
-dubbo.application.name=configcenter-annotation-demo
-dubbo.configcenter.address=zookeeper://127.0.0.1:2181
+# Add the following global external properties to 
`/dubbo/config/dubbo/dubbo.properties`
+#key: dubbo.{item-name}.{id}.{property}
 dubbo.registry.address=zookeeper://127.0.0.1:2181
-dubbo.protocol.name=dubbo
-dubbo.protocol.port=20880
-dubbo.consumer.timeout=3000
\ No newline at end of file
+dubbo.protocols.dubbo1.name=dubbo
+dubbo.protocols.dubbo1.port=20991
+dubbo.protocols.hessian1.name=hessian
+dubbo.protocols.hessian1.port=8089
+
diff --git 
a/dubbo-samples-configcenter/dubbo-samples-configcenter-xml/src/main/java/org/apache/dubbo/samples/configcenter/BasicProvider.java
 
b/dubbo-samples-configcenter/dubbo-samples-configcenter-xml/src/main/java/org/apache/dubbo/samples/configcenter/BasicProvider.java
index ccc6002..8172dce 100644
--- 
a/dubbo-samples-configcenter/dubbo-samples-configcenter-xml/src/main/java/org/apache/dubbo/samples/configcenter/BasicProvider.java
+++ 
b/dubbo-samples-configcenter/dubbo-samples-configcenter-xml/src/main/java/org/apache/dubbo/samples/configcenter/BasicProvider.java
@@ -26,6 +26,7 @@ public class BasicProvider {
     public static void main(String[] args) throws Exception {
 //        new EmbeddedZooKeeper(2181, false).start();
         ClassPathXmlApplicationContext context = new 
ClassPathXmlApplicationContext(new 
String[]{"META-INF/spring/configcenter-provider.xml"});
+        context.registerShutdownHook();
         context.start();
 
         System.in.read(); // press any key to exit
diff --git 
a/dubbo-samples-configcenter/dubbo-samples-configcenter-xml/src/main/java/org/apache/dubbo/samples/configcenter/ZKTools.java
 
b/dubbo-samples-configcenter/dubbo-samples-configcenter-xml/src/main/java/org/apache/dubbo/samples/configcenter/ZKTools.java
index 93f3199..cfa3bca 100644
--- 
a/dubbo-samples-configcenter/dubbo-samples-configcenter-xml/src/main/java/org/apache/dubbo/samples/configcenter/ZKTools.java
+++ 
b/dubbo-samples-configcenter/dubbo-samples-configcenter-xml/src/main/java/org/apache/dubbo/samples/configcenter/ZKTools.java
@@ -21,6 +21,7 @@ import org.apache.dubbo.common.utils.StringUtils;
 import org.apache.curator.framework.CuratorFramework;
 import org.apache.curator.framework.CuratorFrameworkFactory;
 import org.apache.curator.retry.ExponentialBackoffRetry;
+import org.apache.zookeeper.data.Stat;
 
 /**
  *
@@ -39,7 +40,7 @@ public class ZKTools {
     }
 
     public static void generateDubboPropertiesForGlobal() {
-        String str = "";
+        String str = "dubbo.registry.address=zookeeper://127.0.0.1:2181\n" + 
"dubbo.metadataReport.address=zookeeper://127.0.0.1:2181\n" + 
"dubbo.protocol.port=-1\n" + "dubbo.registryData.simpleProviderConfig=true\n" + 
"dubbo.registryData.simpleConsumerConfig=true\n";
 
         System.out.println(str);
 
@@ -72,6 +73,14 @@ public class ZKTools {
         }
     }
 
+    private static void createNode(String path) throws Exception {
+        client.create().forPath(path);
+    }
+
+    private static void deleteNode(String path) throws Exception {
+        client.delete().forPath(path);
+    }
+
     private static void setData(String path, String data) throws Exception {
         client.setData().forPath(path, data.getBytes());
     }
@@ -83,4 +92,45 @@ public class ZKTools {
         return path.replace("/dubbo/config/", "").replaceAll("/", ".");
     }
 
+    public static void quickOnlineOfline() {
+        String providerUrl = 
"dubbo%3A%2F%2F30.5.120.251%3A20880%2Forg.apache.dubbo.samples.configcenter.api.DemoService%3Fapplication%3Dconfigcenter-provider%26dubbo%3D2.0.2%26group%3Dtest2%26specVersion%3D2.7.0-SNAPSHOT%26timestamp%3D1545282828049";
+
+        new Thread() {
+            @Override
+            public void run() {
+                try {
+                    while (true) {
+                        
createNode("/dubbo/org.apache.dubbo.samples.configcenter.api.DemoService/providers/"
 + providerUrl);
+                        Stat stat = 
client.checkExists().forPath("/dubbo/org.apache.dubbo.samples.configcenter.api.DemoService/providers/"
 + providerUrl);
+                        if (stat != null) {
+                            
deleteNode("/dubbo/org.apache.dubbo.samples.configcenter.api.DemoService/providers/"
 + providerUrl);
+                        }
+                        Thread.sleep(20);
+                    }
+                } catch (Exception e) {
+                    e.printStackTrace();
+                }
+            }
+        }.start();
+
+        new Thread() {
+            @Override
+            public void run() {
+                while (true) {
+                    try {
+                        Thread.sleep(100);
+                        Stat stat = 
client.checkExists().forPath("/dubbo/org.apache.dubbo.samples.configcenter.api.DemoService/providers/"
 + providerUrl);
+                        if (stat != null) {
+                            
deleteNode("/dubbo/org.apache.dubbo.samples.configcenter.api.DemoService/providers/"
 + providerUrl);
+                        }
+                        Thread.sleep(10);
+                    } catch (Exception e) {
+                        e.printStackTrace();
+                    }
+                }
+            }
+        }.start();
+
+    }
+
 }
diff --git 
a/dubbo-samples-configcenter/dubbo-samples-configcenter-xml/src/main/resources/META-INF/spring/configcenter-consumer.xml
 
b/dubbo-samples-configcenter/dubbo-samples-configcenter-xml/src/main/resources/META-INF/spring/configcenter-consumer.xml
index d5331fb..755e58c 100644
--- 
a/dubbo-samples-configcenter/dubbo-samples-configcenter-xml/src/main/resources/META-INF/spring/configcenter-consumer.xml
+++ 
b/dubbo-samples-configcenter/dubbo-samples-configcenter-xml/src/main/resources/META-INF/spring/configcenter-consumer.xml
@@ -27,8 +27,8 @@
     <!-- optional -->
     <dubbo:application name="configcenter-consumer"/>
 
-    <dubbo:config-center address="zookeeper://127.0.0.1:2181"/>
+    <dubbo:config-center highest-priority="false" 
address="zookeeper://127.0.0.1:2181"/>
 
-    <dubbo:reference id="demoService" 
interface="org.apache.dubbo.samples.configcenter.api.DemoService"/>
+    <dubbo:reference group="*" id="demoService" 
interface="org.apache.dubbo.samples.configcenter.api.DemoService"/>
 
 </beans>
\ No newline at end of file
diff --git 
a/dubbo-samples-configcenter/dubbo-samples-configcenter-xml/src/main/resources/META-INF/spring/configcenter-provider.xml
 
b/dubbo-samples-configcenter/dubbo-samples-configcenter-xml/src/main/resources/META-INF/spring/configcenter-provider.xml
index 669f90d..b29e040 100644
--- 
a/dubbo-samples-configcenter/dubbo-samples-configcenter-xml/src/main/resources/META-INF/spring/configcenter-provider.xml
+++ 
b/dubbo-samples-configcenter/dubbo-samples-configcenter-xml/src/main/resources/META-INF/spring/configcenter-provider.xml
@@ -27,9 +27,11 @@
     <!-- optional -->
     <dubbo:application name="configcenter-provider"/>
 
+    <!--<dubbo:registry address="zookeeper://127.0.0.1:2181"/>-->
+    <!--<dubbo:protocol port="-1"/>-->
+
     <dubbo:config-center address="zookeeper://127.0.0.1:2181"/>
 
     <bean id="demoService" 
class="org.apache.dubbo.samples.configcenter.impl.DemoServiceImpl"/>
-    <dubbo:service 
interface="org.apache.dubbo.samples.configcenter.api.DemoService" 
ref="demoService"/>
-
+    <dubbo:service group="test2" 
interface="org.apache.dubbo.samples.configcenter.api.DemoService" 
ref="demoService"/>
 </beans>
\ No newline at end of file
diff --git 
a/dubbo-samples-configcenter/dubbo-samples-configcenter-externalconfiguration/src/main/resources/yourconfigcenter/dubbo-properties-in-configcenter.properties
 
b/dubbo-samples-configcenter/dubbo-samples-configcenter-xml/src/main/resources/config-center.properties
similarity index 62%
copy from 
dubbo-samples-configcenter/dubbo-samples-configcenter-externalconfiguration/src/main/resources/yourconfigcenter/dubbo-properties-in-configcenter.properties
copy to 
dubbo-samples-configcenter/dubbo-samples-configcenter-xml/src/main/resources/config-center.properties
index 180ca9f..4f4946f 100644
--- 
a/dubbo-samples-configcenter/dubbo-samples-configcenter-externalconfiguration/src/main/resources/yourconfigcenter/dubbo-properties-in-configcenter.properties
+++ 
b/dubbo-samples-configcenter/dubbo-samples-configcenter-xml/src/main/resources/config-center.properties
@@ -1,24 +1,25 @@
-#
-#
 #   Licensed to the Apache Software Foundation (ASF) under one or more
 #   contributor license agreements.  See the NOTICE file distributed with
 #   this work for additional information regarding copyright ownership.
 #   The ASF licenses this file to You under the Apache License, Version 2.0
 #   (the "License"); you may not use this file except in compliance with
 #   the License.  You may obtain a copy of the License at
-#  
+#
 #       http://www.apache.org/licenses/LICENSE-2.0
-#  
+#
 #   Unless required by applicable law or agreed to in writing, software
 #   distributed under the License is distributed on an "AS IS" BASIS,
 #   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 #   See the License for the specific language governing permissions and
 #   limitations under the License.
-#  
-#
-dubbo.application.name=configcenter-annotation-demo
-dubbo.configcenter.address=zookeeper://127.0.0.1:2181
+# Add the following global external properties to 
`/dubbo/config/dubbo/dubbo.properties`
 dubbo.registry.address=zookeeper://127.0.0.1:2181
-dubbo.protocol.name=dubbo
 dubbo.protocol.port=20880
-dubbo.consumer.timeout=3000
\ No newline at end of file
+dubbo.metadataReport.address=zookeeper://127.0.0.1:2181
+dubbo.registryData.simpleProviderConfig=true
+dubbo.registryData.simpleConsumerConfig=true
+# Optional. Add the following application(Consumer) specific external 
properties
+# to `/dubbo/config/configcenter-consumer/dubbo.properties`
+dubbo.consumer.timeout=6666
+dubbo.application.qos.port=33333
+dubbo.reference.org.apache.dubbo.samples.configcenter.api.DemoService.timeout=9999
\ No newline at end of file
diff --git 
a/dubbo-samples-governance/dubbo-samples-applevel-override/src/main/java/org/apache/dubbo/samples/governance/ZKTools.java
 
b/dubbo-samples-governance/dubbo-samples-applevel-override/src/main/java/org/apache/dubbo/samples/governance/ZKTools.java
index ec2228c..ac3f123 100644
--- 
a/dubbo-samples-governance/dubbo-samples-applevel-override/src/main/java/org/apache/dubbo/samples/governance/ZKTools.java
+++ 
b/dubbo-samples-governance/dubbo-samples-applevel-override/src/main/java/org/apache/dubbo/samples/governance/ZKTools.java
@@ -36,6 +36,8 @@ public class ZKTools {
 
         generateAppLevelOverride();
         System.in.read();
+        generateServiceLevelOverride();
+        System.in.read();
         generateAppLevelOverrideConsumer();
     }
 
@@ -48,8 +50,7 @@ public class ZKTools {
                 "key: governance-appoverride-provider\n" +
                 "enabled: true\n" +
                 "configs:\n" +
-                "- addresses: [\"0.0.0.0:20880\"]\n" + "  side: provider\n" +
-                "  parameters:\n" + "    weight: 900\n" +
+                "- addresses: [\"0.0.0.0:20880\"]\n" + "  side: provider\n" + 
"  parameters:\n" + "    weight: 100\n" +
                 "...";
 
         System.out.println(str);
@@ -95,6 +96,22 @@ public class ZKTools {
         }
     }
 
+    public static void generateServiceLevelOverride() {
+        String str = "# Execute on demo-consumer only\n" + "# the traffic come 
out from governance-appoverride-consumer will be distributed evenly across all 
providers,\n" + "# because governance-appoverride-consumer will consider them 
having the same weight 100.\n" + "---\n" + "configVersion: v2.7\n" + "scope: 
service\n" + "key: org.apache.dubbo.samples.governance.api.DemoService\n" + 
"enabled: true\n" + "configs:\n" + "- addresses: [\"0.0.0.0:20881\"]\n" + "  
side: provider\n" + "  par [...]
+
+        System.out.println(str);
+
+        try {
+            String path = 
"/dubbo/config/org.apache.dubbo.samples.governance.api.DemoService/configurators";
+            if (client.checkExists().forPath(path) == null) {
+                
client.create().creatingParentsIfNeeded().withMode(CreateMode.PERSISTENT).forPath(path);
+            }
+            setData(path, str);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
     private static void setData(String path, String data) throws Exception {
         client.setData().forPath(path, data.getBytes());
     }
diff --git 
a/dubbo-samples-governance/dubbo-samples-applevel-override/src/main/resources/spring/dubbo-demo-consumer.xml
 
b/dubbo-samples-governance/dubbo-samples-applevel-override/src/main/resources/spring/dubbo-demo-consumer.xml
index d0728ea..f4ab886 100644
--- 
a/dubbo-samples-governance/dubbo-samples-applevel-override/src/main/resources/spring/dubbo-demo-consumer.xml
+++ 
b/dubbo-samples-governance/dubbo-samples-applevel-override/src/main/resources/spring/dubbo-demo-consumer.xml
@@ -31,7 +31,7 @@
     <!-- optional, use multicast registry center to discover service -->
     <dubbo:registry address="zookeeper://127.0.0.1:2181"/>
 
-    <dubbo:config-center enable="false" address="zookeeper://127.0.0.1:2181"/>
+    <dubbo:config-center highest-priority="false" 
address="zookeeper://127.0.0.1:2181"/>
 
     <!-- generate proxy for the remote service, then demoService can be used 
in the same way as the
     local regular interface -->
diff --git 
a/dubbo-samples-governance/dubbo-samples-applevel-override/src/main/resources/spring/dubbo-demo-provider.xml
 
b/dubbo-samples-governance/dubbo-samples-applevel-override/src/main/resources/spring/dubbo-demo-provider.xml
index ce54ed5..f880d14 100644
--- 
a/dubbo-samples-governance/dubbo-samples-applevel-override/src/main/resources/spring/dubbo-demo-provider.xml
+++ 
b/dubbo-samples-governance/dubbo-samples-applevel-override/src/main/resources/spring/dubbo-demo-provider.xml
@@ -33,7 +33,7 @@
     <!--optional, use dubbo protocol to export service on port 20880 -->
     <dubbo:protocol name="dubbo" port="-1"/>
 
-    <dubbo:config-center enable="false" address="zookeeper://127.0.0.1:2181"/>
+    <dubbo:config-center highest-priority="false" 
address="zookeeper://127.0.0.1:2181"/>
 
     <!-- service implementation, as same as regular local bean -->
     <bean id="demoService" 
class="org.apache.dubbo.samples.governance.impl.DemoServiceImpl"/>
diff --git 
a/dubbo-samples-governance/dubbo-samples-servicelevel-override/src/main/java/org/apache/dubbo/samples/governance/ZKTools.java
 
b/dubbo-samples-governance/dubbo-samples-servicelevel-override/src/main/java/org/apache/dubbo/samples/governance/ZKTools.java
index cf6a090..b1fd025 100644
--- 
a/dubbo-samples-governance/dubbo-samples-servicelevel-override/src/main/java/org/apache/dubbo/samples/governance/ZKTools.java
+++ 
b/dubbo-samples-governance/dubbo-samples-servicelevel-override/src/main/java/org/apache/dubbo/samples/governance/ZKTools.java
@@ -34,6 +34,7 @@ public class ZKTools {
         client.start();
 
         generateServiceLevelOverride();
+        generateApplicationLevelOverride();
     }
 
     public static void generateServiceLevelOverride() {
@@ -44,8 +45,7 @@ public class ZKTools {
                 "enabled: true\n" +
                 "configs:\n" +
                 "- addresses: [0.0.0.0]\n" +
-                "  side: consumer\n" +
-                "  parameters:\n" + "    timeout: 6000\n" +
+                "  side: consumer\n" + "  parameters:\n" + "    timeout: 
1000\n" +
                 "...\n";
 
         System.out.println(str);
@@ -61,6 +61,22 @@ public class ZKTools {
         }
     }
 
+    public static void generateApplicationLevelOverride() {
+        String str = "# All Consumers that consume the service 
org.apache.dubbo.samples.governance.api.DemoService will increase the timeout 
value to 6000\n" + "---\n" + "configVersion: v2.7\n" + "scope: application\n" + 
"key: governance-serviceoverride-consumer\n" + "enabled: true\n" + "configs:\n" 
+ "- addresses: [0.0.0.0]\n" + "  side: consumer\n" + "  parameters:\n" + "    
timeout: 5000\n" + "...\n";
+
+        System.out.println(str);
+
+        try {
+            String path = 
"/dubbo/config/governance-serviceoverride-consumer/configurators";
+            if (client.checkExists().forPath(path) == null) {
+                client.create().creatingParentsIfNeeded().forPath(path);
+            }
+            setData(path, str);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
     private static void setData(String path, String data) throws Exception {
         client.setData().forPath(path, data.getBytes());
     }
diff --git 
a/dubbo-samples-governance/dubbo-samples-tagrouter/src/main/java/org/apache/dubbo/samples/governance/BasicConsumer.java
 
b/dubbo-samples-governance/dubbo-samples-tagrouter/src/main/java/org/apache/dubbo/samples/governance/BasicConsumer.java
index 4109abb..4f9483e 100644
--- 
a/dubbo-samples-governance/dubbo-samples-tagrouter/src/main/java/org/apache/dubbo/samples/governance/BasicConsumer.java
+++ 
b/dubbo-samples-governance/dubbo-samples-tagrouter/src/main/java/org/apache/dubbo/samples/governance/BasicConsumer.java
@@ -40,12 +40,14 @@ public class BasicConsumer {
                 RpcContext.getContext().setAttachment(Constants.TAG_KEY, 
"tag1");
                 String hello = demoService.sayHello("world"); // call remote 
method
                 System.out.println(hello); // get result
-
+            } catch (Throwable throwable) {
+                throwable.printStackTrace();
+            }
+            try {
                 RpcContext.getContext().setAttachment(Constants.TAG_KEY, 
"tag2");
 //                
RpcContext.getContext().setAttachment(Constants.FORCE_USE_TAG, "true");
                 String hello2 = demoService2.sayHello("world again"); // call 
remote method
                 System.out.println(hello2); // get result
-
             } catch (Throwable throwable) {
                 throwable.printStackTrace();
             }
diff --git a/dubbo-samples-mock/pom.xml b/dubbo-samples-mock/pom.xml
index 051362d..4f29406 100644
--- a/dubbo-samples-mock/pom.xml
+++ b/dubbo-samples-mock/pom.xml
@@ -30,5 +30,12 @@
 
     <artifactId>dubbo-samples-mock</artifactId>
 
+    <dependencies>
+        <dependency>
+            <groupId>org.yaml</groupId>
+            <artifactId>snakeyaml</artifactId>
+            <version>1.20</version>
+        </dependency>
+    </dependencies>
 
 </project>
\ No newline at end of file
diff --git 
a/dubbo-samples-governance/dubbo-samples-servicelevel-override/src/main/java/org/apache/dubbo/samples/governance/ZKTools.java
 b/dubbo-samples-mock/src/main/java/org/apache/dubbo/samples/mock/ZKTools.java
similarity index 73%
copy from 
dubbo-samples-governance/dubbo-samples-servicelevel-override/src/main/java/org/apache/dubbo/samples/governance/ZKTools.java
copy to 
dubbo-samples-mock/src/main/java/org/apache/dubbo/samples/mock/ZKTools.java
index cf6a090..448d1c3 100644
--- 
a/dubbo-samples-governance/dubbo-samples-servicelevel-override/src/main/java/org/apache/dubbo/samples/governance/ZKTools.java
+++ 
b/dubbo-samples-mock/src/main/java/org/apache/dubbo/samples/mock/ZKTools.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.dubbo.samples.governance;
+package org.apache.dubbo.samples.mock;
 
 import org.apache.dubbo.common.utils.StringUtils;
 
@@ -29,29 +29,19 @@ public class ZKTools {
     private static CuratorFramework client;
 
     public static void main(String[] args) throws Exception {
-        client = CuratorFrameworkFactory.newClient("127.0.0.1:2181", 60 * 
1000, 60 * 1000,
-                new ExponentialBackoffRetry(6000, 3));
+        client = CuratorFrameworkFactory.newClient("127.0.0.1:2181", 60 * 
1000, 60 * 1000, new ExponentialBackoffRetry(6000, 3));
         client.start();
 
         generateServiceLevelOverride();
     }
 
     public static void generateServiceLevelOverride() {
-        String str = "# All Consumers that consume the service 
org.apache.dubbo.samples.governance.api.DemoService will increase the timeout 
value to 6000\n" +
-                "---\n" + "configVersion: v2.7\n" +
-                "scope: service\n" +
-                "key: org.apache.dubbo.samples.governance.api.DemoService\n" +
-                "enabled: true\n" +
-                "configs:\n" +
-                "- addresses: [0.0.0.0]\n" +
-                "  side: consumer\n" +
-                "  parameters:\n" + "    timeout: 6000\n" +
-                "...\n";
+        String str = "---\n" + "configVersion: v2.7\n" + "scope: service\n" + 
"key: org.apache.dubbo.samples.mock.api.DemoService\n" + "enabled: true\n" + 
"configs:\n" + "- addresses: [0.0.0.0]\n" + "  side: consumer\n" + "  
parameters:\n" + "    mock: return null\n" + "...\n";
 
         System.out.println(str);
 
         try {
-            String path = 
"/dubbo/config/org.apache.dubbo.samples.governance.api.DemoService/configurators";
+            String path = 
"/dubbo/config/org.apache.dubbo.samples.mock.api.DemoService/configurators";
             if (client.checkExists().forPath(path) == null) {
                 client.create().creatingParentsIfNeeded().forPath(path);
             }
diff --git a/dubbo-samples-mock/src/main/resources/spring/mock-consumer.xml 
b/dubbo-samples-mock/src/main/resources/spring/mock-consumer.xml
index 09389f9..3648ccb 100644
--- a/dubbo-samples-mock/src/main/resources/spring/mock-consumer.xml
+++ b/dubbo-samples-mock/src/main/resources/spring/mock-consumer.xml
@@ -26,8 +26,7 @@
     don't set it same as provider -->
     <dubbo:application name="demo-consumer"/>
 
-    <!-- use multicast registry center to discover service -->
-    <dubbo:registry group="aaa" address="zookeeper://127.0.0.1:2181"/>
+    <dubbo:registry address="zookeeper://127.0.0.1:2181"/>
 
     <!-- generate proxy for the remote service, then demoService can be used 
in the same way as the
     local regular interface -->
diff --git a/dubbo-samples-mock/src/main/resources/spring/mock-provider.xml 
b/dubbo-samples-mock/src/main/resources/spring/mock-provider.xml
index 4715272..de056ed 100644
--- a/dubbo-samples-mock/src/main/resources/spring/mock-provider.xml
+++ b/dubbo-samples-mock/src/main/resources/spring/mock-provider.xml
@@ -25,8 +25,6 @@
     <!-- provider's application name, used for tracing dependency relationship 
-->
     <dubbo:application name="demo-provider"/>
 
-    <!-- use multicast registry center to export service -->
-    <dubbo:registry group="aaa" address="zookeeper://127.0.0.1:2181"/>
     <dubbo:registry address="zookeeper://127.0.0.1:2181"/>
 
     <!-- use dubbo protocol to export service on port 20880 -->
diff --git a/pom.xml b/pom.xml
index 47136ba..4df253e 100644
--- a/pom.xml
+++ b/pom.xml
@@ -56,7 +56,7 @@
         <module>dubbo-samples-governance</module>
         <module>dubbo-samples-metadata-report</module>
         <module>dubbo-samples-simplified-registry</module>
-        <module>dubbo-samples-concurrency</module>
+        <module>dubbo-samples-chain</module>
     </modules>
 
     <properties>

Reply via email to