You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dubbo.apache.org by al...@apache.org on 2022/07/15 02:20:23 UTC

[dubbo-website] branch master updated: add 3.0 docs registry (#1234)

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

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


The following commit(s) were added to refs/heads/master by this push:
     new 64033e7085 add 3.0 docs registry (#1234)
64033e7085 is described below

commit 64033e7085d9280215f277575889a5b7c2532195
Author: ken.lj <ke...@gmail.com>
AuthorDate: Fri Jul 15 10:20:19 2022 +0800

    add 3.0 docs registry (#1234)
    
    * polish configuration docs
    
    * add 3.0 registry docs
---
 content/zh/blog/golang/_index.md                   |   2 +-
 content/zh/blog/integration/_index.md              |   2 +-
 content/zh/blog/news/_index.md                     |   2 +-
 content/zh/blog/others/_index.md                   |   2 +-
 content/zh/blog/releases/_index.md                 |   2 +-
 content/zh/contribution-guidelines/_index.md       |  85 +------
 content/zh/docs/quick-start.md                     | 281 +++++++++------------
 content/zh/docs3-building/docs/contact/_index.md   |  83 +++++-
 .../docs/contact}/committer/_index.md              |   0
 .../contact}/committer/apache-dubbo-page_dev.md    |   0
 .../contact}/committer/label-an-issue-guide_dev.md |   0
 .../contact}/committer/new-committer-guide_dev.md  |   0
 .../docs/contact}/committer/release-guide_dev.md   |   0
 .../docs/contact}/committer/website-guide_dev.md   |   0
 .../docs/contact}/contributor/_index.md            |   0
 .../contact}/contributor/become-a-committer_dev.md |   0
 .../contact}/contributor/cla-signing-guide_dev.md  |   0
 .../contributor/dubbo-extension-guide_dev.md       |   0
 .../mailing-list-subscription-guide_dev.md         |   0
 .../contributor/new-contributor-guide_dev.md       |   0
 .../contributor/reporting-security-issues_dev.md   |   0
 .../contributor/software-donation-guide_dev.md     |   0
 .../contributor/test-coverage-guide_dev.md         |   0
 content/zh/docs3-building/java-sdk/_index.md       |  11 +-
 .../docs3-building/java-sdk/contributing/_index.md |   8 -
 .../docs3-building/java-sdk/contributing/guide.md  |   6 -
 .../java-sdk/contributing/overview.md              |   6 -
 .../docs3-building/java-sdk/quick-start/_index.md  | 125 +--------
 .../zh/docs3-building/java-sdk/quick-start/idl.md  | 232 +++++++++++++++++
 .../java-sdk/quick-start/spring-boot.md            | 175 +++++++++++++
 .../reference-manual/config-center/_index.md       |   4 +-
 .../reference-manual/config-center/apollo/guide.md |   6 -
 .../config-center/apollo/overview.md               |   6 -
 .../reference-manual/config-center/nacos/_index.md |  47 ++++
 .../reference-manual/config-center/nacos/guide.md  |   6 -
 .../config-center/nacos/overview.md                |   6 -
 .../config-center/overview/_index.md               |  46 ----
 .../config-center/zookeeper/_index.md              |  16 +-
 .../config-center/zookeeper/guide.md               |   7 -
 .../config-center/zookeeper/overview.md            |   6 -
 .../java-sdk/reference-manual/graalvm/_index.md    |   2 +
 .../reference-manual/metadata-center/_index.md     |   4 +-
 .../java-sdk/reference-manual/protocol/_index.md   |   4 +-
 .../java-sdk/reference-manual/registry/_index.md   |   6 +-
 .../reference-manual/registry/multicast/_index.md  |  53 +++-
 .../reference-manual/registry/multicast/guide.md   |  56 ----
 .../registry/multicast/overview.md                 |   6 -
 .../registry/multiple-registry/_index.md           | 187 +++++++++++++-
 .../registry/multiple-registry/guide.md            |   7 -
 .../registry/multiple-registry/overview.md         |   6 -
 .../reference-manual/registry/nacos/_index.md      | 142 ++++++++++-
 .../reference-manual/registry/nacos/guide.md       | 194 --------------
 .../reference-manual/registry/nacos/overview.md    |   6 -
 .../reference-manual/registry/overview/_index.md   |  77 +++++-
 .../reference-manual/registry/redis/_index.md      |  71 +++++-
 .../reference-manual/registry/redis/guide.md       |  77 ------
 .../reference-manual/registry/redis/overview.md    |   6 -
 .../reference-manual/registry/zookeeper/_index.md  | 129 +++++++++-
 .../reference-manual/registry/zookeeper/guide.md   | 180 -------------
 .../registry/zookeeper/overview.md                 |   6 -
 .../java-sdk/reference-manual/spi/_index.md        |   2 +-
 static/imgs/v3/registry/aggregation.png            | Bin 0 -> 39102 bytes
 static/imgs/v3/registry/no-aggregation.png         | Bin 0 -> 35253 bytes
 63 files changed, 1344 insertions(+), 1049 deletions(-)

diff --git a/content/zh/blog/golang/_index.md b/content/zh/blog/golang/_index.md
index 28ffdd6a74..c8b7af844a 100644
--- a/content/zh/blog/golang/_index.md
+++ b/content/zh/blog/golang/_index.md
@@ -2,6 +2,6 @@
 ---
 title: "Golang"
 linkTitle: "Golang"
-weight: 40
+weight: 30
 ---
 
diff --git a/content/zh/blog/integration/_index.md b/content/zh/blog/integration/_index.md
index c675012a1f..549dc87422 100644
--- a/content/zh/blog/integration/_index.md
+++ b/content/zh/blog/integration/_index.md
@@ -2,7 +2,7 @@
 ---
 title: "生态集成"
 linkTitle: "生态集成"
-weight: 10
+weight: 40
 ---
 
 
diff --git a/content/zh/blog/news/_index.md b/content/zh/blog/news/_index.md
index 0414e5bcbb..aa803b904d 100644
--- a/content/zh/blog/news/_index.md
+++ b/content/zh/blog/news/_index.md
@@ -2,7 +2,7 @@
 ---
 title: "社区动态"
 linkTitle: "社区动态"
-weight: 30
+weight: 10
 ---
 
 
diff --git a/content/zh/blog/others/_index.md b/content/zh/blog/others/_index.md
index 85fc7cf0ac..6fc5bc5f23 100644
--- a/content/zh/blog/others/_index.md
+++ b/content/zh/blog/others/_index.md
@@ -2,7 +2,7 @@
 ---
 title: "其他"
 linkTitle: "其他"
-weight: 10
+weight: 50
 ---
 
 
diff --git a/content/zh/blog/releases/_index.md b/content/zh/blog/releases/_index.md
index 442953523b..95e34c2a1d 100644
--- a/content/zh/blog/releases/_index.md
+++ b/content/zh/blog/releases/_index.md
@@ -2,7 +2,7 @@
 ---
 title: "版本发布"
 linkTitle: "版本发布"
-weight: 50
+weight: 60
 ---
 
 
diff --git a/content/zh/contribution-guidelines/_index.md b/content/zh/contribution-guidelines/_index.md
old mode 100755
new mode 100644
index 8e1cdc9852..a11e97c84b
--- a/content/zh/contribution-guidelines/_index.md
+++ b/content/zh/contribution-guidelines/_index.md
@@ -4,88 +4,5 @@ type: docs
 title: "为 Dubbo 做贡献"
 linkTitle: "贡献指南"
 description: "Dubbo 贡献指南"
+_build: { render: link }
 ---
-
-
-## 为 Dubbo 做贡献
-
-Dubbo 是在非限制性的 Apache 2.0 许可下发布的,遵循标准的 Github 开发流程,使用Github追踪处理问题,并将 pull request 合并到 master 中。如果您想为 Dubbo 做贡献(即便是一些微小的),请不要犹豫,遵循下面的指导方针。
-
-### 联系我们
-
-#### 邮件列表
-
-
-邮件列表是讨论几乎所有与 Dubbo 有关事情的推荐方式。有关如何订阅的详细文档,请参阅[指南](https://github.com/apache/dubbo/wiki/Mailing-list-subscription-guide)。
-
-- [dev@dubbo.apache.org](mailto:dev-subscribe@dubbo.apache.org): 开发邮件列表,如果您在使用或开发Dubbo时遇到任何问题,您可以在此提出问题。
-- [commits@dubbo.apache.org](mailto:commits-subscribe@dubbo.apache.org): 所有提交将被发送到这个邮件列表。如果您对Dubbo的发展感兴趣,您可以订阅它。
-- [notification@dubbo.apache.org](mailto:notification-subscribe@dubbo.apache.org): 所有Github  [issue](https://github.com/apache/dubbo/issues)和[pull request](https://github.com/apache/dubbo/pulls)的更新都会被发送到这个邮件列表。
-
-### 报告问题
-
-在报告任何问题时请遵循[模版](https://github.com/apache/dubbo/issues/new?template=dubbo-issue-report-template.md)。
-
-### 代码约定
-我们的代码风格几乎和标准 Java 约定一致(流行IDE的默认设置满足这一点),主要有以下附加限制:
-
-* 如果当前行中有超过 120 个字符,则起一个新的行。
-
-* 确保所有新的 .java 文件都有一个简单的 JavaDoc 类注释,其中至少有一个标识创建日期的标签,最好至少有一个关于该类的解释说明。
-
-* 将ASF许可注释添加到所有新的 .java 文件(从项目中的现有文件复制)
-
-* 请确保没有将 @author 标记添加到您所贡献的文件中,因为 Apache 不使用 @author 标记,其他方式(如cvs)将公平地记录所有您的贡献。
-
-* 为代码添加一些 JavaDoc,如果您更改命名空间,则需要一些 XSD DOC 元素。
-
-* 对于新的特征或重要的修复程序,应该添加单元测试。
-
-* 如果没有其他人使用您的分支,请将它与 master(或主项目中的其他目标分支)同步。
-
-* 当编写提交消息时,请遵循这些约定,如果您正在修复一个现有问题,请在提交消息的末尾添加 Fixes XXX(其中XXX是问题编号)。
-
-### 贡献流程
-
-这是一个贡献者工作流程的大致说明:
-
-* 克隆当前项目
-* 从希望贡献的分支上创新新的分支,通常是 master 分支。
-* 提交您的更改。
-* 确保提交消息的格式正确。
-* 将新分支推送到您克隆的代码库中。
-* 执行检查表 [pull request模版](https://github.com/apache/dubbo/blob/master/PULL_REQUEST_TEMPLATE.md)。
-* 在提交 pull request 请求前, 请将您克隆的代码和远程代码库同步,这样您的 pull request 会简单清晰。具体操作如下:
-```
-git remote add upstream git@github.com:apache/dubbo.git
-git fetch upstream
-git rebase upstream/master
-git checkout -b your_awesome_patch
-... add some work
-git push origin your_awesome_patch
-```
-* 提交 pull request 请求到 apache/dubbo 并等待回复。
-
-谢谢您的贡献!
-
-### 代码风格
-
-
-我们提供了 IntelliJ idea 的模版文件[dubbo_codestyle_for_idea.xml](https://github.com/apache/dubbo/tree/master/codestyle/dubbo_codestyle_for_idea.xml),您可以将它导入到IDE。
-
-如果使用 Eclipse,可以通过参考该文件手动配置。
-
-**注意事项**
-
-使用 dubbo_codestyle_for_idea.xml 为你的 IDEA 设置代码格式是贡献代码前至关重要的一个步骤,否则你将会无法通过 Travis CI 的代码风格校验,下面几个步骤给你演示了如何配置代码格式:
-
-1. 进入菜单页 `Editor > Code Style`
-2. 在 Code Style 页面的 scheme 菜单中点击 manage profiles 选项
-在下拉列表中选择 `Import Scheme`, 接着选择 `IntelliJ IDEA code style XML` 导入 xml 文件
-3. 输入你的格式名称,方便在不同工程之间进行识别,最后别忘了 ⏎ 来保存更改.
-
-设置完成后,IDEA 会帮助你自动 reformat 代码
-
-
-
-
diff --git a/content/zh/docs/quick-start.md b/content/zh/docs/quick-start.md
index a572ce623d..b8f31ffd48 100644
--- a/content/zh/docs/quick-start.md
+++ b/content/zh/docs/quick-start.md
@@ -1,207 +1,172 @@
+
 ---
 type: docs
-title: "快速开始"
+title: "Spring Boot 快速开发 Dubbo 服务"
 linkTitle: "快速开始"
 weight: 3
-description: ""
+description: "示例演示了如何使用 Dubbo Spring Boot Starter 方式快速开发 Dubbo 应用。"
 ---
 
-服务是 Dubbo 中的核心概念,一个服务代表一组 RPC 方法的集合,服务是面向用户编程、服务发现机制等的基本单位。Dubbo 开发的基本流程是:用户定义 RPC 服务,通过约定的配置
-方式将 RPC 声明为 Dubbo 服务,然后就可以基于服务 API 进行编程了。对服务提供者来说是提供 RPC 服务的具体实现,而对服务消费者来说则是使用特定数据发起服务调用。
-
-下面从定义服务、编译服务、配置并加载服务三个方面说明如何快速的开发 Dubbo 服务。
-
-## 定义服务
-Dubbo3 推荐使用 IDL 定义跨语言服务,如您更习惯使用特定语言的服务定义方式,请移步[多语言](../languages)模块。
+> Dubbo 还提供了包括XML、API 等多种启动与接入方式,更多开发方式和配置细节可参见[配置手册](./references/configuration/)。
 
-```text
-syntax = "proto3";
+## 下载示例代码
+完整示例代码在 [dubbo-samples](https://github.com/apache/dubbo-samples/dubbo-samples-spring-boot) 中
 
-option java_multiple_files = true;
-option java_package = "org.apache.dubbo.demo";
-option java_outer_classname = "DemoServiceProto";
-option objc_class_prefix = "DEMOSRV";
+1. 下载源码
+```shell script
+git clone -b master https://github.com/apache/dubbo-samples.git
+```
+2. 进入示例目录
+```shell script
+cd dubbo-samples/dubbo-samples-spring-boot
+ls # 查看目录结构
+```
 
-package demoservice;
+## 快速运行示例
 
-// The demo service definition.
-service DemoService {
-  rpc SayHello (HelloRequest) returns (HelloReply) {}
-}
+1. 编译 Provider
+在 dubbo-samples-spring-boot 目录,进入 dubbo-samples-spring-boot-provider 目录并执行 maven 命令
+```shell script
+cd ./dubbo-samples-spring-boot-provider
+mvn clean package
+```
 
-// The request message containing the user's name.
-message HelloRequest {
-  string name = 1;
-}
+2. 运行 Provider
+```shell script
+java -jar ./target/dubbo-samples-spring-boot-provider-1.0-SNAPSHOT.jar
+```
 
-// The response message containing the greetings
-message HelloReply {
-  string message = 1;
-}
+3. 编译 Consumer
+进入 dubbo-samples-spring-boot-consumer 目录并执行 maven 命令
 
+```shell script
+cd ../dubbo-samples-spring-boot-consumer
+mvn clean package
 ```
 
-以上是使用 IDL 定义服务的一个简单示例,我们可以把它命名为 `DemoService.proto`,proto 文件中定义了 RPC 服务名称 `DemoService` 与方法签名
- `SayHello (HelloRequest) returns (HelloReply) {}`,同时还定义了方法的入参结构体、出参结构体 `HelloRequest` 与 `HelloReply`。
- IDL 格式的服务依赖 Protobuf 编译器,用来生成可以被用户调用的客户端与服务端编程 API,Dubbo 在原生 Protobuf Compiler 的基础上提供了适配多种语言的特有插件,用于适配 Dubbo 框架特有的 API 与编程模型。
- 
-> 使用 Dubbo3 IDL 定义的服务只允许一个入参与出参,这种形式的服务签名有两个优势,一是对多语言实现更友好,二是可以保证服务的向后兼容性,依赖于 Protobuf 序列化的兼容性,我们可以很容易的调整传输的数据结构如增、删字段等,完全不用担心接口的兼容性。
+4. 运行 consumer
+```shell script
+java -jar ./target/dubbo-samples-spring-boot-consumer-1.0-SNAPSHOT.jar
+```
 
-## 编译服务
-根据当前采用的语言,配置相应的 Protobuf 插件,编译后将生产语言相关的服务定义 stub。
+## 详细解释
 
-### Java
-Java 语言生成的 stub 如下,核心是一个接口定义
-```java
-@javax.annotation.Generated(
-value = "by Dubbo generator",
-comments = "Source: DemoService.proto")
-public interface DemoService {
-    static final String JAVA_SERVICE_NAME = "org.apache.dubbo.demo.DemoService";
-    static final String SERVICE_NAME = "demoservice.DemoService";
+### 定义服务接口
 
-    org.apache.dubbo.demo.HelloReply sayHello(org.apache.dubbo.demo.HelloRequest request);
+dubbo-samples-spring-boot-interface/DemoService.java
 
-    CompletableFuture<org.apache.dubbo.demo.HelloReply> sayHelloAsync(org.apache.dubbo.demo.HelloRequest request);
-}
-```
+```java
+package org.apache.dubbo.samples.basic.api;
 
-### Golang
-
-Go 语言生成的 stub 如下,这个 stub 里存了用户定义的接口和数据的类型。
-
-```go
-func _DUBBO_Greeter_SayHello_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(HelloRequest)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	base := srv.(dgrpc.Dubbo3GrpcService)
-	args := []interface{}{}
-	args = append(args, in)
-	invo := invocation.NewRPCInvocation("SayHello", args, nil)
-	if interceptor == nil {
-		result := base.GetProxyImpl().Invoke(ctx, invo)
-		return result.Result(), result.Error()
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/main.Greeter/SayHello",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		result := base.GetProxyImpl().Invoke(context.Background(), invo)
-		return result.Result(), result.Error()
-	}
-	return interceptor(ctx, in, info, handler)
+public interface DemoService {
+    String sayHello(String name);
 }
 ```
 
+### 提供方实现接口并暴露服务
 
-## 配置并加载服务
-提供端负责提供具体的 Dubbo 服务实现,也就是遵循 RPC 签名所约束的格式,去实现具体的业务逻辑代码。在实现服务之后,要将服务实现注册为标准的 Dubbo 服务,
-之后 Dubbo 框架就能根据接收到的请求转发给服务实现,执行方法,并将结果返回。
-
-消费端的配置会更简单一些,只需要声明 IDL 定义的服务为标准的 Dubbo 服务,框架就可以帮助开发者生成相应的 proxy,开发者将完全面向 proxy 编程,
-基本上 Dubbo 所有语言的实现都保证了 proxy 依据 IDL 服务定义暴露标准化的接口。
+dubbo-samples-spring-boot-provider/DemoServiceImpl.java
 
-### Java
-提供端,实现服务
 ```java
+@DubboService
 public class DemoServiceImpl implements DemoService {
-    private static final Logger logger = LoggerFactory.getLogger(DemoServiceImpl.class);
-
     @Override
-    public HelloReply sayHello(HelloRequest request) {
-        logger.info("Hello " + request.getName() + ", request from consumer: " + RpcContext.getContext().getRemoteAddress());
-        return HelloReply.newBuilder()
-                .setMessage("Hello " + request.getName() + ", response from provider: "
-                        + RpcContext.getContext().getLocalAddress())
-                .build();
-    }
-
-    @Override
-    public CompletableFuture<HelloReply> sayHelloAsync(HelloRequest request) {
-        return CompletableFuture.completedFuture(sayHello(request));
+    public String sayHello(String name) {
+        System.out.println("Hello " + name + ", request from consumer: " + RpcContext.getContext().getRemoteAddress());
+        return "Hello " + name;
     }
 }
 ```
 
-提供端,注册服务(以 Spring XML 为例)
-```xml
-<bean id="demoServiceImpl" class="org.apache.dubbo.demo.provider.DemoServiceImpl"/>
-<dubbo:service serialization="protobuf" interface="org.apache.dubbo.demo.DemoService" ref="demoServiceImpl"/>
+### 配置 application.yml 文件
+
+dubbo-samples-spring-boot-provider/resources/application.yml
+
+```yaml
+dubbo:
+  application:
+    name: dubbo-springboot-demo-provider
+  protocol:
+    name: dubbo
+    port: -1
+  registry:
+    id: zk-registry
+    address: zookeeper://127.0.0.1:2181
+  config-center:
+    address: zookeeper://127.0.0.1:2181
+  metadata-report:
+    address: zookeeper://127.0.0.1:2181
 ```
 
-消费端,引用服务
-```xml
-<dubbo:reference scope="remote" id="demoService" check="false" interface="org.apache.dubbo.demo.DemoService"/>
-```
+### 定义 Spring Boot 主函数
+
+dubbo-samples-spring-boot-provider/ProviderApplication.java
 
-消费端,使用服务 proxy
 ```java
-public void callService() throws Exception {
-    ...
-    DemoService demoService = context.getBean("demoService", DemoService.class);
-    HelloRequest request = HelloRequest.newBuilder().setName("Hello").build();
-    HelloReply reply = demoService.sayHello(request);
-    System.out.println("result: " + reply.getMessage());
+@SpringBootApplication
+@EnableDubbo
+public class ProviderApplication {
+    public static void main(String[] args) throws Exception {
+        new EmbeddedZooKeeper(2181, false).start();
+
+        SpringApplication.run(ProviderApplication.class, args);
+        System.out.println("dubbo service started");
+        new CountDownLatch(1).await();
+    }
 }
 ```
+其中,`@EnableDubbo` 必须配置。
 
-### Golang
+### 引用远程服务
 
-提供端,实现服务
+dubbo-samples-spring-boot-consumer/ConsumerApplication.java
 
-```go
-type User struct {
-	ID   string
-	Name string
-	Age  int32
-	Time time.Time
-}
-
-type UserProvider struct {
-}
-
-func (u *UserProvider) GetUser(ctx context.Context, req []interface{}) (*User, error) {
-	gxlog.CInfo("req:%#v", req)
-	rsp := User{"A001", "Alex Stocks", 18, time.Now()}
-	gxlog.CInfo("rsp:%#v", rsp)
-	return &rsp, nil
+```java
+public class ConsumerApplication {
+    @DubboReference
+    private DemoService demoService;
 }
+```
 
-func (u *UserProvider) Reference() string {
-	return "UserProvider"
-}
+### 定义 application.yml
+
+dubbo-samples-spring-boot-consumer/application.yml
+
+```yaml
+dubbo:
+  application:
+    name: dubbo-springboot-demo-consumer
+  protocol:
+    name: dubbo
+    port: -1
+  registry:
+    id: zk-registry
+    address: zookeeper://127.0.0.1:2181
+  config-center:
+    address: zookeeper://127.0.0.1:2181
+  metadata-report:
+    address: zookeeper://127.0.0.1:2181
+```
 
-func (u User) JavaClassName() string {
-	return "org.apache.dubbo.User"
-}
+### 加载 Spring 配置,并调用远程服务
 
-func main() {
-    hessian.RegisterPOJO(&User{})
-	config.SetProviderService(new(UserProvider))
-}
-```
+dubbo-samples-spring-boot-consumer/ConsumerApplication.java
 
-消费端,使用服务 proxy
-
-```go
-func main() {
-	config.Load()
-	user := &pkg.User{}
-	err := userProvider.GetUser(context.TODO(), []interface{}{"A001"}, user)
-	if err != nil {
-		os.Exit(1)
-		return
-	}
-	gxlog.CInfo("response result: %v\n", user)
+```java
+@SpringBootApplication
+@Service
+@EnableDubbo
+public class ConsumerApplication {
+    @DubboReference
+    private DemoService demoService;
+
+    public static void main(String[] args) {
+        ConfigurableApplicationContext context = SpringApplication.run(ConsumerApplication.class, args);
+        ConsumerApplication application = context.getBean(ConsumerApplication.class);
+        String result = application.doSayHello("world");
+        System.out.println("result: " + result);
+    }
 }
 ```
 
-
-## 查看完整示例
-* [Java IDL Quick Start](../languages/java/quick-start)
-* [Golang IDL Quick Start](../languages/golang/quick-start)
-* [Java 语言特定用法](../languages/java/java-specific)
-* [Golang 语言特定用法](../languages/golang/go-specific)
+其中,`@EnableDubbo` 必须配置。
\ No newline at end of file
diff --git a/content/zh/docs3-building/docs/contact/_index.md b/content/zh/docs3-building/docs/contact/_index.md
index 5a921e1334..9d693dc04c 100755
--- a/content/zh/docs3-building/docs/contact/_index.md
+++ b/content/zh/docs3-building/docs/contact/_index.md
@@ -3,9 +3,88 @@
 type: docs
 title: "联系社区"
 linkTitle: "联系社区"
-description: ""
-weight: 6
+description: "联系社区,Dubbo 社区贡献指南"
 ---
 
+## 为 Dubbo 做贡献
+
+Dubbo 是在非限制性的 Apache 2.0 许可下发布的,遵循标准的 Github 开发流程,使用Github追踪处理问题,并将 pull request 合并到 master 中。如果您想为 Dubbo 做贡献(即便是一些微小的),请不要犹豫,遵循下面的指导方针。
+
+### 联系我们
+
+#### 邮件列表
+
+
+邮件列表是讨论几乎所有与 Dubbo 有关事情的推荐方式。有关如何订阅的详细文档,请参阅[指南](https://github.com/apache/dubbo/wiki/Mailing-list-subscription-guide)。
+
+- [dev@dubbo.apache.org](mailto:dev-subscribe@dubbo.apache.org): 开发邮件列表,如果您在使用或开发Dubbo时遇到任何问题,您可以在此提出问题。
+- [commits@dubbo.apache.org](mailto:commits-subscribe@dubbo.apache.org): 所有提交将被发送到这个邮件列表。如果您对Dubbo的发展感兴趣,您可以订阅它。
+- [notification@dubbo.apache.org](mailto:notification-subscribe@dubbo.apache.org): 所有Github  [issue](https://github.com/apache/dubbo/issues)和[pull request](https://github.com/apache/dubbo/pulls)的更新都会被发送到这个邮件列表。
+
+### 报告问题
+
+在报告任何问题时请遵循[模版](https://github.com/apache/dubbo/issues/new?template=dubbo-issue-report-template.md)。
+
+### 代码约定
+我们的代码风格几乎和标准 Java 约定一致(流行IDE的默认设置满足这一点),主要有以下附加限制:
+
+* 如果当前行中有超过 120 个字符,则起一个新的行。
+
+* 确保所有新的 .java 文件都有一个简单的 JavaDoc 类注释,其中至少有一个标识创建日期的标签,最好至少有一个关于该类的解释说明。
+
+* 将ASF许可注释添加到所有新的 .java 文件(从项目中的现有文件复制)
+
+* 请确保没有将 @author 标记添加到您所贡献的文件中,因为 Apache 不使用 @author 标记,其他方式(如cvs)将公平地记录所有您的贡献。
+
+* 为代码添加一些 JavaDoc,如果您更改命名空间,则需要一些 XSD DOC 元素。
+
+* 对于新的特征或重要的修复程序,应该添加单元测试。
+
+* 如果没有其他人使用您的分支,请将它与 master(或主项目中的其他目标分支)同步。
+
+* 当编写提交消息时,请遵循这些约定,如果您正在修复一个现有问题,请在提交消息的末尾添加 Fixes XXX(其中XXX是问题编号)。
+
+### 贡献流程
+
+这是一个贡献者工作流程的大致说明:
+
+* 克隆当前项目
+* 从希望贡献的分支上创新新的分支,通常是 master 分支。
+* 提交您的更改。
+* 确保提交消息的格式正确。
+* 将新分支推送到您克隆的代码库中。
+* 执行检查表 [pull request模版](https://github.com/apache/dubbo/blob/master/PULL_REQUEST_TEMPLATE.md)。
+* 在提交 pull request 请求前, 请将您克隆的代码和远程代码库同步,这样您的 pull request 会简单清晰。具体操作如下:
+```
+git remote add upstream git@github.com:apache/dubbo.git
+git fetch upstream
+git rebase upstream/master
+git checkout -b your_awesome_patch
+... add some work
+git push origin your_awesome_patch
+```
+* 提交 pull request 请求到 apache/dubbo 并等待回复。
+
+谢谢您的贡献!
+
+### 代码风格
+
+
+我们提供了 IntelliJ idea 的模版文件[dubbo_codestyle_for_idea.xml](https://github.com/apache/dubbo/tree/master/codestyle/dubbo_codestyle_for_idea.xml),您可以将它导入到IDE。
+
+如果使用 Eclipse,可以通过参考该文件手动配置。
+
+**注意事项**
+
+使用 dubbo_codestyle_for_idea.xml 为你的 IDEA 设置代码格式是贡献代码前至关重要的一个步骤,否则你将会无法通过 Travis CI 的代码风格校验,下面几个步骤给你演示了如何配置代码格式:
+
+1. 进入菜单页 `Editor > Code Style`
+2. 在 Code Style 页面的 scheme 菜单中点击 manage profiles 选项
+在下拉列表中选择 `Import Scheme`, 接着选择 `IntelliJ IDEA code style XML` 导入 xml 文件
+3. 输入你的格式名称,方便在不同工程之间进行识别,最后别忘了 ⏎ 来保存更改.
+
+设置完成后,IDEA 会帮助你自动 reformat 代码
+
+
 
 
diff --git a/content/zh/contribution-guidelines/committer/_index.md b/content/zh/docs3-building/docs/contact/committer/_index.md
similarity index 100%
rename from content/zh/contribution-guidelines/committer/_index.md
rename to content/zh/docs3-building/docs/contact/committer/_index.md
diff --git a/content/zh/contribution-guidelines/committer/apache-dubbo-page_dev.md b/content/zh/docs3-building/docs/contact/committer/apache-dubbo-page_dev.md
similarity index 100%
rename from content/zh/contribution-guidelines/committer/apache-dubbo-page_dev.md
rename to content/zh/docs3-building/docs/contact/committer/apache-dubbo-page_dev.md
diff --git a/content/zh/contribution-guidelines/committer/label-an-issue-guide_dev.md b/content/zh/docs3-building/docs/contact/committer/label-an-issue-guide_dev.md
similarity index 100%
rename from content/zh/contribution-guidelines/committer/label-an-issue-guide_dev.md
rename to content/zh/docs3-building/docs/contact/committer/label-an-issue-guide_dev.md
diff --git a/content/zh/contribution-guidelines/committer/new-committer-guide_dev.md b/content/zh/docs3-building/docs/contact/committer/new-committer-guide_dev.md
similarity index 100%
rename from content/zh/contribution-guidelines/committer/new-committer-guide_dev.md
rename to content/zh/docs3-building/docs/contact/committer/new-committer-guide_dev.md
diff --git a/content/zh/contribution-guidelines/committer/release-guide_dev.md b/content/zh/docs3-building/docs/contact/committer/release-guide_dev.md
similarity index 100%
rename from content/zh/contribution-guidelines/committer/release-guide_dev.md
rename to content/zh/docs3-building/docs/contact/committer/release-guide_dev.md
diff --git a/content/zh/contribution-guidelines/committer/website-guide_dev.md b/content/zh/docs3-building/docs/contact/committer/website-guide_dev.md
similarity index 100%
rename from content/zh/contribution-guidelines/committer/website-guide_dev.md
rename to content/zh/docs3-building/docs/contact/committer/website-guide_dev.md
diff --git a/content/zh/contribution-guidelines/contributor/_index.md b/content/zh/docs3-building/docs/contact/contributor/_index.md
similarity index 100%
rename from content/zh/contribution-guidelines/contributor/_index.md
rename to content/zh/docs3-building/docs/contact/contributor/_index.md
diff --git a/content/zh/contribution-guidelines/contributor/become-a-committer_dev.md b/content/zh/docs3-building/docs/contact/contributor/become-a-committer_dev.md
similarity index 100%
rename from content/zh/contribution-guidelines/contributor/become-a-committer_dev.md
rename to content/zh/docs3-building/docs/contact/contributor/become-a-committer_dev.md
diff --git a/content/zh/contribution-guidelines/contributor/cla-signing-guide_dev.md b/content/zh/docs3-building/docs/contact/contributor/cla-signing-guide_dev.md
similarity index 100%
rename from content/zh/contribution-guidelines/contributor/cla-signing-guide_dev.md
rename to content/zh/docs3-building/docs/contact/contributor/cla-signing-guide_dev.md
diff --git a/content/zh/contribution-guidelines/contributor/dubbo-extension-guide_dev.md b/content/zh/docs3-building/docs/contact/contributor/dubbo-extension-guide_dev.md
similarity index 100%
rename from content/zh/contribution-guidelines/contributor/dubbo-extension-guide_dev.md
rename to content/zh/docs3-building/docs/contact/contributor/dubbo-extension-guide_dev.md
diff --git a/content/zh/contribution-guidelines/contributor/mailing-list-subscription-guide_dev.md b/content/zh/docs3-building/docs/contact/contributor/mailing-list-subscription-guide_dev.md
similarity index 100%
rename from content/zh/contribution-guidelines/contributor/mailing-list-subscription-guide_dev.md
rename to content/zh/docs3-building/docs/contact/contributor/mailing-list-subscription-guide_dev.md
diff --git a/content/zh/contribution-guidelines/contributor/new-contributor-guide_dev.md b/content/zh/docs3-building/docs/contact/contributor/new-contributor-guide_dev.md
similarity index 100%
rename from content/zh/contribution-guidelines/contributor/new-contributor-guide_dev.md
rename to content/zh/docs3-building/docs/contact/contributor/new-contributor-guide_dev.md
diff --git a/content/zh/contribution-guidelines/contributor/reporting-security-issues_dev.md b/content/zh/docs3-building/docs/contact/contributor/reporting-security-issues_dev.md
similarity index 100%
rename from content/zh/contribution-guidelines/contributor/reporting-security-issues_dev.md
rename to content/zh/docs3-building/docs/contact/contributor/reporting-security-issues_dev.md
diff --git a/content/zh/contribution-guidelines/contributor/software-donation-guide_dev.md b/content/zh/docs3-building/docs/contact/contributor/software-donation-guide_dev.md
similarity index 100%
rename from content/zh/contribution-guidelines/contributor/software-donation-guide_dev.md
rename to content/zh/docs3-building/docs/contact/contributor/software-donation-guide_dev.md
diff --git a/content/zh/contribution-guidelines/contributor/test-coverage-guide_dev.md b/content/zh/docs3-building/docs/contact/contributor/test-coverage-guide_dev.md
similarity index 100%
rename from content/zh/contribution-guidelines/contributor/test-coverage-guide_dev.md
rename to content/zh/docs3-building/docs/contact/contributor/test-coverage-guide_dev.md
diff --git a/content/zh/docs3-building/java-sdk/_index.md b/content/zh/docs3-building/java-sdk/_index.md
index eaaa2dacd9..8293f4ee5e 100755
--- a/content/zh/docs3-building/java-sdk/_index.md
+++ b/content/zh/docs3-building/java-sdk/_index.md
@@ -7,17 +7,14 @@ weight: 3
 #hide_summary: true
 content:
   - 快速开始:
-    - "[Spring Boot 快速开始](quick-start/)"
-  - 概念与架构:
-    - "[性能与基准测试](concepts-and-architecture/)"
+    - "[Spring Boot 快速开发 Dubbo 服务](quick-start/spring-boot/)"
+    - "[配置参考手册](reference-manual/config/)"
   - 高级特性:
-    - "[常用高级配置方式](advanced-features-and-usage/)"
+    - "[扩展 Filter、Router 拦截流量](advanced-features-and-usage/)"
   - 参考手册:
-    - "[可扩展性:Filter、Router 等](reference-manual/)"
-    - "[元数据中心与服务测试](reference-manual/)"
+    - "[注册中心配置指南](reference-manual/registry/)"
   - 升级与兼容性:
     - "[3.0 迁移指南](upgrades-and-compatibility/)"
-    - "[Triple 协议与Stream 流式接口](upgrades-and-compatibility/)"
 ---
 
 {{% docs/content_box %}}
diff --git a/content/zh/docs3-building/java-sdk/contributing/_index.md b/content/zh/docs3-building/java-sdk/contributing/_index.md
deleted file mode 100755
index 24ba359409..0000000000
--- a/content/zh/docs3-building/java-sdk/contributing/_index.md
+++ /dev/null
@@ -1,8 +0,0 @@
-
----
-type: docs
-title: "参与贡献"
-linkTitle: "参与贡献"
-weight: 7
----
-
diff --git a/content/zh/docs3-building/java-sdk/contributing/guide.md b/content/zh/docs3-building/java-sdk/contributing/guide.md
deleted file mode 100644
index 16c6cd0db6..0000000000
--- a/content/zh/docs3-building/java-sdk/contributing/guide.md
+++ /dev/null
@@ -1,6 +0,0 @@
----
-type: docs
-title: "贡献指南"
-linkTitle: "贡献指南"
-weight: 2
----
diff --git a/content/zh/docs3-building/java-sdk/contributing/overview.md b/content/zh/docs3-building/java-sdk/contributing/overview.md
deleted file mode 100644
index c087fc3b6f..0000000000
--- a/content/zh/docs3-building/java-sdk/contributing/overview.md
+++ /dev/null
@@ -1,6 +0,0 @@
----
-type: docs
-title: "概述"
-linkTitle: "概述"
-weight: 1
----
diff --git a/content/zh/docs3-building/java-sdk/quick-start/_index.md b/content/zh/docs3-building/java-sdk/quick-start/_index.md
index 2c3544598d..60a8b622d7 100755
--- a/content/zh/docs3-building/java-sdk/quick-start/_index.md
+++ b/content/zh/docs3-building/java-sdk/quick-start/_index.md
@@ -4,128 +4,5 @@ type: docs
 title: "快速入门"
 linkTitle: "快速入门"
 weight: 2
+description: ""
 ---
-
-这篇教程会通过一个简单的示例工程来演示如何使用 Dubbo Java
-
-## 前置条件
-- [JDK](https://jdk.java.net/) 版本 >= 8
-- 已安装 [Maven](https://maven.apache.org/)
-- 已安装并启动 [Zookeeper](https://zookeeper.apache.org/)
-
-## 获取示例工程的代码
-示例工程是 [Dubbo-Samples](https://github.com/apache/dubbo-samples/tree/master/dubbo-samples-triple/src) 的一部分。
-1. [下载源码 zip 包](https://github.com/apache/dubbo-samples/archive/refs/heads/master.zip)或 clone 示例工程
-    ```
-   $ git clone --depth 1 https://github.com/apache/dubbo-samples.git
-   ```
-2. 切换到示例工程
-   ```
-   $ cd dubbo-samples-triple
-   ```
-   
-## 运行示例工程
-在 `dubbo-samples-triple` 目录下,
-1. 编译工程
-    ```
-   $ mvn clean install -Dmaven.test.skip=true
-   ```
-2. 启动 Server
-   ```
-   $  mvn org.codehaus.mojo:exec-maven-plugin:3.0.0:java -Dexec.mainClass="org.apache.dubbo.sample.tri.stub.TriStubServer"
-   Dubbo triple stub server started, port=50052
-   ```
-3. 在另一个终端启动 Client
-   ```
-   $ mvn org.codehaus.mojo:exec-maven-plugin:3.0.0:java -Dexec.mainClass="org.apache.dubbo.sample.tri.stub.TriStubClient"
-   INFO stub.TriStubClient: tri-stub Start unary
-   INFO stub.TriStubClient: tri-stub Unary reply <-message: "hello,name"
-   ```
-恭喜,一个简单的客户端-服务端 Dubbo 应用运行成功了
-
-## 服务提供方
-
-### `Service`注解暴露服务
-
-```java
-@DubboService
-public class AnnotationServiceImpl implements AnnotationService {
-    @Override
-    public String sayHello(String name) {
-        return "annotation: hello, " + name;
-    }
-}
-```
-
-使用
-
-### 增加应用共享配置
-
-```properties
-# dubbo-provider.properties
-dubbo.application.name=annotation-provider
-dubbo.registry.address=zookeeper://127.0.0.1:2181
-dubbo.protocol.name=dubbo
-dubbo.protocol.port=20880
-```
-
-### 指定Spring扫描路径
-
-```java
-@Configuration
-@EnableDubbo(scanBasePackages = "org.apache.dubbo.samples.simple.annotation.impl")
-@PropertySource("classpath:/spring/dubbo-provider.properties")
-static public class ProviderConfiguration {
-
-}
-```
-
-## 服务消费方
-
-### `Reference`注解引用服务
-
-```java
-@Component("annotationAction")
-public class AnnotationAction {
-
-    @Reference
-    private AnnotationService annotationService;
-
-    public String doSayHello(String name) {
-        return annotationService.sayHello(name);
-    }
-}
-
-```
-
-### 增加应用共享配置
-
-```properties
-# dubbo-consumer.properties
-dubbo.application.name=annotation-consumer
-dubbo.registry.address=zookeeper://127.0.0.1:2181
-dubbo.consumer.timeout=3000
-```
-
-### 指定Spring扫描路径
-
-```java
-@Configuration
-@EnableDubbo(scanBasePackages = "org.apache.dubbo.samples.simple.annotation.action")
-@PropertySource("classpath:/spring/dubbo-consumer.properties")
-@ComponentScan(value = {"org.apache.dubbo.samples.simple.annotation.action"})
-static public class ConsumerConfiguration {
-
-}
-```
-
-### 调用服务
-
-```java
-public static void main(String[] args) throws Exception {
-    AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(ConsumerConfiguration.class);
-    context.start();
-    final AnnotationAction annotationAction = (AnnotationAction) context.getBean("annotationAction");
-    String hello = annotationAction.doSayHello("world");
-}
-```
\ No newline at end of file
diff --git a/content/zh/docs3-building/java-sdk/quick-start/idl.md b/content/zh/docs3-building/java-sdk/quick-start/idl.md
new file mode 100755
index 0000000000..c5f5e41fc9
--- /dev/null
+++ b/content/zh/docs3-building/java-sdk/quick-start/idl.md
@@ -0,0 +1,232 @@
+---
+type: docs
+title: "IDL 定义跨语言服务"
+linkTitle: "IDL 定义跨语言服务"
+weight: 2
+description: "从零演示如何基于 IDL 方式来定义 Dubbo 服务并使用 Triple 协议"
+---
+
+使用 IDL 定义服务具有更好的跨语言友好性,对于 Dubbo3 新用户而言,我们推荐使用这种方式。
+然而 Triple 协议并不是和 IDL 强绑定的,也可以使用 Java Interface + Pojo 的方式定义服务并启用 Triple 协议,具体可参见[示例](https://github.com/apache/dubbo-samples/tree/master/dubbo-samples-triple/src/main/java/org/apache/dubbo/sample/tri/pojo)。
+
+更多 Triple 和 IDL 使用方式,请参考[官方示例](https://github.com/apache/dubbo-samples/tree/master/dubbo-samples-triple)
+
+### 前置条件
+- [JDK](https://jdk.java.net/) 版本 >= 8
+- 已安装 [Maven](https://maven.apache.org/)
+
+### 创建工程
+1. 首先创建一个空的 maven 工程
+    ```
+   $ mvn archetype:generate                                \
+        -DgroupId=org.apache.dubbo                          \
+        -DartifactId=tri-stub-demo                          \
+        -DarchetypeArtifactId=maven-archetype-quickstart    \
+        -DarchetypeVersion=1.4                              \
+        -DarchetypeGroupId=org.apache.maven.archetypes      \
+        -Dversion=1.0-SNAPSHOT
+   ```
+2. 切换到工程目录
+    ```
+   $ cd tri-stub-demo
+   ```
+3. 在 `pom.xml` 中设置 JDK 版本,添加 Dubbo 依赖和插件
+    ```xml
+    <properties>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+        <maven.compiler.source>1.8</maven.compiler.source>
+        <maven.compiler.target>1.8</maven.compiler.target>
+    </properties>
+   
+    <dependencies>
+       <dependency>
+           <groupId>junit</groupId>
+           <artifactId>junit</artifactId>
+           <version>4.13</version>
+           <scope>test</scope>
+       </dependency>
+       <dependency>
+           <groupId>org.apache.dubbo</groupId>
+           <artifactId>dubbo</artifactId>
+           <version>3.0.8</version>
+       </dependency>
+       <dependency>
+        <groupId>org.apache.dubbo</groupId>
+        <artifactId>dubbo-dependencies-zookeeper-curator5</artifactId>
+        <type>pom</type>
+        <version>3.0.8</version>
+       </dependency>
+        <dependency>
+            <groupId>com.google.protobuf</groupId>
+            <artifactId>protobuf-java</artifactId>
+            <version>3.19.4</version>
+        </dependency>
+    </dependencies>
+   
+    <build>
+        <extensions>
+            <extension>
+                <groupId>kr.motd.maven</groupId>
+                <artifactId>os-maven-plugin</artifactId>
+                <version>1.6.1</version>
+            </extension>
+        </extensions>
+        <plugins>
+            <plugin>
+                <groupId>org.xolstice.maven.plugins</groupId>
+                <artifactId>protobuf-maven-plugin</artifactId>
+                <version>0.6.1</version>
+                <configuration>
+                    <protocArtifact>com.google.protobuf:protoc:3.19.4:exe:${os.detected.classifier}</protocArtifact>
+                    <protocPlugins>
+                        <protocPlugin>
+                            <id>dubbo</id>
+                            <groupId>org.apache.dubbo</groupId>
+                            <artifactId>dubbo-compiler</artifactId>
+                            <version>0.0.4.1-SNAPSHOT</version>
+                            <mainClass>org.apache.dubbo.gen.tri.Dubbo3TripleGenerator</mainClass>
+                        </protocPlugin>
+                    </protocPlugins>
+                </configuration>
+                <executions>
+                    <execution>
+                        <goals>
+                            <goal>compile</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+    </build>
+   ```
+4. 添加接口定义文件`src/main/proto/hello.proto`,Dubbo 使用 [Protobuf](https://developers.google.com/protocol-buffers) 作为 IDL
+    ```protobuf
+    syntax = "proto3";
+   
+    option java_multiple_files = true;
+    option java_package = "org.apache.dubbo.hello";
+    option java_outer_classname = "HelloWorldProto";
+    option objc_class_prefix = "HLW";
+
+    package helloworld;
+
+    message HelloRequest {
+        string name = 1;
+    }
+
+    message HelloReply {
+        string message = 1;
+    }
+    service Greeter{
+        rpc greet(HelloRequest) returns (HelloReply);
+    }
+
+    ```
+5. 编译 IDL
+    ```
+    $ mvn clean install
+    ```
+   编译成功后,可以看到`target/generated-sources/protobuf/java` 目录下生成了代码文件
+    ```
+   $ ls org/apache/dubbo/hello/
+    DubboGreeterTriple.java    HelloReply.java            HelloRequest.java          HelloWorldProto.java
+    Greeter.java               HelloReplyOrBuilder.java   HelloRequestOrBuilder.java
+   ```
+
+6. 添加服务端接口实现`src/main/java/org/apache/dubbo/GreeterImpl.java`
+   ```java
+   package org.apache.dubbo;
+
+   import org.apache.dubbo.hello.DubboGreeterTriple;
+   import org.apache.dubbo.hello.HelloReply;
+   import org.apache.dubbo.hello.HelloRequest;
+
+   public class GreeterImpl extends DubboGreeterTriple.GreeterImplBase {
+      @Override
+      public HelloReply greet(HelloRequest request) {
+         return HelloReply.newBuilder()
+         .setMessage("Hello," + request.getName() + "!")
+         .build();
+      }
+   }
+   ```
+7. 添加服务端启动类 `src/main/java/org/apache/dubbo/MyDubboServer.java`
+    ```java
+   package org.apache.dubbo;
+
+   import org.apache.dubbo.common.constants.CommonConstants;
+   import org.apache.dubbo.config.ApplicationConfig;
+   import org.apache.dubbo.config.ProtocolConfig;
+   import org.apache.dubbo.config.RegistryConfig;
+   import org.apache.dubbo.config.ServiceConfig;
+   import org.apache.dubbo.config.bootstrap.DubboBootstrap;
+   import org.apache.dubbo.hello.Greeter;
+
+   import java.io.IOException;
+
+   public class MyDubboServer {
+
+       public static void main(String[] args) throws IOException {
+           ServiceConfig<Greeter> service = new ServiceConfig<>();
+           service.setInterface(Greeter.class);
+           service.setRef(new GreeterImpl());
+
+           DubboBootstrap bootstrap = DubboBootstrap.getInstance();
+           bootstrap.application(new ApplicationConfig("tri-stub-server"))
+                   .registry(new RegistryConfig("multicast://127.0.0.1:2181"))
+                   .protocol(new ProtocolConfig(CommonConstants.TRIPLE, 50051))
+                   .service(service)
+                   .start();
+           System.out.println("Dubbo triple stub server started");
+           System.in.read();
+       }
+   }
+    ```
+
+8. 添加客户端启动类`src/main/java/org/apache/dubbo/MyDubboClient.java`
+   ```java
+   package org.apache.dubbo;
+
+   import org.apache.dubbo.common.constants.CommonConstants;
+   import org.apache.dubbo.config.ApplicationConfig;
+   import org.apache.dubbo.config.ReferenceConfig;
+   import org.apache.dubbo.config.RegistryConfig;
+   import org.apache.dubbo.config.bootstrap.DubboBootstrap;
+   import org.apache.dubbo.hello.Greeter;
+   import org.apache.dubbo.hello.HelloReply;
+   import org.apache.dubbo.hello.HelloRequest;
+
+   public class MyDubboClient {
+      public static void main(String[] args) {
+         DubboBootstrap bootstrap = DubboBootstrap.getInstance();
+         ReferenceConfig<Greeter> ref = new ReferenceConfig<>();
+         ref.setInterface(Greeter.class);
+         ref.setProtocol(CommonConstants.TRIPLE);
+         ref.setProxy(CommonConstants.NATIVE_STUB);
+         ref.setTimeout(3000);
+         bootstrap.application(new ApplicationConfig("tri-stub-client"))
+            .registry(new RegistryConfig("zookeeper://127.0.0.1:2181"))
+            .reference(ref)
+            .start();
+
+         Greeter greeter = ref.get();
+         HelloRequest request = HelloRequest.newBuilder().setName("Demo").build();
+         HelloReply reply = greeter.greet(request);
+         System.out.println("Received reply:" + reply);
+       }
+   }
+   ```
+9. 编译代码
+   ```
+   $ mvn clean install
+   ```
+10. 启动服务端
+   ```
+   $ mvn org.codehaus.mojo:exec-maven-plugin:3.0.0:java -Dexec.mainClass="org.apache.dubbo.MyDubboServer"
+   Dubbo triple stub server started
+   ```
+11. 打开新的终端,启动客户端
+   ```
+   $ mvn org.codehaus.mojo:exec-maven-plugin:3.0.0:java -Dexec.mainClass="org.apache.dubbo.MyDubboClient"
+   Received reply:message: "Hello,Demo!"
+   ```
diff --git a/content/zh/docs3-building/java-sdk/quick-start/spring-boot.md b/content/zh/docs3-building/java-sdk/quick-start/spring-boot.md
new file mode 100755
index 0000000000..4f6de87c74
--- /dev/null
+++ b/content/zh/docs3-building/java-sdk/quick-start/spring-boot.md
@@ -0,0 +1,175 @@
+
+---
+type: docs
+title: "Spring Boot"
+linkTitle: "Spring Boot 开发服务"
+weight: 1
+description: "示例演示了如何使用 Spring Boot 方式快速开发 Dubbo 应用。"
+---
+
+> Dubbo 还提供了包括[XML](../../reference-manual/config/xml)、[API](../../reference-manual/config/api)等多种启动与接入方式,更多开发方式和配置细节可参见[配置手册](../../reference-manual/config/)。
+
+## 下载示例代码
+完整示例代码在 [dubbo-samples](https://github.com/apache/dubbo-samples/dubbo-samples-spring-boot) 中
+
+1. 下载源码
+```shell script
+git clone -b master https://github.com/apache/dubbo-samples.git
+```
+2. 进入示例目录
+```shell script
+cd dubbo-samples/dubbo-samples-spring-boot
+ls # 查看目录结构
+```
+
+## 快速运行示例
+
+1. 编译 Provider
+在 dubbo-samples-spring-boot 目录,进入 dubbo-samples-spring-boot-provider 目录并执行 maven 命令
+```shell script
+cd ./dubbo-samples-spring-boot-provider
+mvn clean package
+```
+
+2. 运行 Provider
+```shell script
+java -jar ./target/dubbo-samples-spring-boot-provider-1.0-SNAPSHOT.jar
+```
+
+3. 编译 Consumer
+进入 dubbo-samples-spring-boot-consumer 目录并执行 maven 命令
+
+```shell script
+cd ../dubbo-samples-spring-boot-consumer
+mvn clean package
+```
+
+4. 运行 consumer
+```shell script
+java -jar ./target/dubbo-samples-spring-boot-consumer-1.0-SNAPSHOT.jar
+```
+
+## 详细解释
+
+### 示例架构
+
+
+### 定义服务接口
+
+dubbo-samples-spring-boot-interface/DemoService.java
+
+```java
+package org.apache.dubbo.samples.basic.api;
+
+public interface DemoService {
+    String sayHello(String name);
+}
+```
+
+### 提供方实现接口并暴露服务
+
+dubbo-samples-spring-boot-provider/DemoServiceImpl.java
+
+```java
+@DubboService
+public class DemoServiceImpl implements DemoService {
+    @Override
+    public String sayHello(String name) {
+        System.out.println("Hello " + name + ", request from consumer: " + RpcContext.getContext().getRemoteAddress());
+        return "Hello " + name;
+    }
+}
+```
+
+### 配置 application.yml 文件
+
+dubbo-samples-spring-boot-provider/resources/application.yml
+
+```yaml
+dubbo:
+  application:
+    name: dubbo-springboot-demo-provider
+  protocol:
+    name: dubbo
+    port: -1
+  registry:
+    id: zk-registry
+    address: zookeeper://127.0.0.1:2181
+  config-center:
+    address: zookeeper://127.0.0.1:2181
+  metadata-report:
+    address: zookeeper://127.0.0.1:2181
+```
+
+### 定义 Spring Boot 主函数
+
+dubbo-samples-spring-boot-provider/ProviderApplication.java
+
+```java
+@SpringBootApplication
+@EnableDubbo
+public class ProviderApplication {
+    public static void main(String[] args) throws Exception {
+        new EmbeddedZooKeeper(2181, false).start();
+
+        SpringApplication.run(ProviderApplication.class, args);
+        System.out.println("dubbo service started");
+        new CountDownLatch(1).await();
+    }
+}
+```
+其中,`@EnableDubbo` 必须配置。
+
+### 引用远程服务
+
+dubbo-samples-spring-boot-consumer/ConsumerApplication.java
+
+```java
+public class ConsumerApplication {
+    @DubboReference
+    private DemoService demoService;
+}
+```
+
+### 定义 application.yml
+
+dubbo-samples-spring-boot-consumer/application.yml
+
+```yaml
+dubbo:
+  application:
+    name: dubbo-springboot-demo-consumer
+  protocol:
+    name: dubbo
+    port: -1
+  registry:
+    id: zk-registry
+    address: zookeeper://127.0.0.1:2181
+  config-center:
+    address: zookeeper://127.0.0.1:2181
+  metadata-report:
+    address: zookeeper://127.0.0.1:2181
+```
+
+### 加载 Spring 配置,并调用远程服务
+
+dubbo-samples-spring-boot-consumer/ConsumerApplication.java
+
+```java
+@SpringBootApplication
+@Service
+@EnableDubbo
+public class ConsumerApplication {
+    @DubboReference
+    private DemoService demoService;
+
+    public static void main(String[] args) {
+        ConfigurableApplicationContext context = SpringApplication.run(ConsumerApplication.class, args);
+        ConsumerApplication application = context.getBean(ConsumerApplication.class);
+        String result = application.doSayHello("world");
+        System.out.println("result: " + result);
+    }
+}
+```
+
+其中,`@EnableDubbo` 必须配置。
\ No newline at end of file
diff --git a/content/zh/docs3-building/java-sdk/reference-manual/config-center/_index.md b/content/zh/docs3-building/java-sdk/reference-manual/config-center/_index.md
index 3d139af023..89456c223c 100644
--- a/content/zh/docs3-building/java-sdk/reference-manual/config-center/_index.md
+++ b/content/zh/docs3-building/java-sdk/reference-manual/config-center/_index.md
@@ -1,7 +1,7 @@
 ---
 type: docs
-title: "配置中心参考手册"
-linkTitle: "配置中心参考手册"
+title: "配置中心"
+linkTitle: "配置中心"
 weight: 7
 description: ""
 ---
diff --git a/content/zh/docs3-building/java-sdk/reference-manual/config-center/apollo/guide.md b/content/zh/docs3-building/java-sdk/reference-manual/config-center/apollo/guide.md
deleted file mode 100644
index 13dc994973..0000000000
--- a/content/zh/docs3-building/java-sdk/reference-manual/config-center/apollo/guide.md
+++ /dev/null
@@ -1,6 +0,0 @@
----
-type: docs
-title: "使用说明"
-linkTitle: "使用说明"
-weight: 2
----
diff --git a/content/zh/docs3-building/java-sdk/reference-manual/config-center/apollo/overview.md b/content/zh/docs3-building/java-sdk/reference-manual/config-center/apollo/overview.md
deleted file mode 100644
index c087fc3b6f..0000000000
--- a/content/zh/docs3-building/java-sdk/reference-manual/config-center/apollo/overview.md
+++ /dev/null
@@ -1,6 +0,0 @@
----
-type: docs
-title: "概述"
-linkTitle: "概述"
-weight: 1
----
diff --git a/content/zh/docs3-building/java-sdk/reference-manual/config-center/nacos/_index.md b/content/zh/docs3-building/java-sdk/reference-manual/config-center/nacos/_index.md
index 7fed8cf789..04db208d6a 100644
--- a/content/zh/docs3-building/java-sdk/reference-manual/config-center/nacos/_index.md
+++ b/content/zh/docs3-building/java-sdk/reference-manual/config-center/nacos/_index.md
@@ -5,3 +5,50 @@ linkTitle: "Nacos"
 weight: 3
 description: ""
 ---
+
+## 外部化配置
+请参考文档 [外部化配置](../configuration/external-config)
+
+## 动态配置
+[TODO 待完善]
+
+## 服务治理
+
+#### Zookeeper
+
+默认节点结构:
+
+![zk-configcenter-governance](/imgs/user/zk-configcenter-governance.jpg)
+
+- namespace,用于不同配置的环境隔离。
+- config,Dubbo 约定的固定节点,不可更改,所有配置和服务治理规则都存储在此节点下。
+- dubbo,所有服务治理规则都是全局性的,dubbo 为默认节点
+- configurators/tag-router/condition-router/migration,不同的服务治理规则类型,node value 存储具体规则内容
+
+#### Apollo
+
+所有的服务治理规则都是全局性的,默认从公共命名空间 `dubbo` 读取和订阅:
+
+![apollo-configcenter-governance.jpg](/imgs/user/apollo-configcenter-governance.jpg)
+
+不同的规则以不同的 key 后缀区分:
+
+- configurators,[覆盖规则](../../examples/config-rule)
+- tag-router,[标签路由](../../examples/routing-rule)
+- condition-router,[条件路由](../../examples/condition-router)
+- migration, [迁移规则](../../examples/todo)
+
+#### Nacos
+
+所有的服务治理规则都是全局的,默认从 namespace: `public` 下进行读取, 通过 dataId: `interface name` 以及 group: `dubbo` 去读取和订阅:
+
+![nacos-configcenter-governance.jpg](/imgs/user/nacos-configcenter-governance.png)
+
+不同的规则以 dataId 的后缀区分:
+
+- configurators,[覆盖规则](../../examples/config-rule)
+- tag-router,[标签路由](../../examples/routing-rule)
+- condition-router,[条件路由](../../examples/condition-router)
+- migration, [迁移规则](../../examples/todo)
+
+
diff --git a/content/zh/docs3-building/java-sdk/reference-manual/config-center/nacos/guide.md b/content/zh/docs3-building/java-sdk/reference-manual/config-center/nacos/guide.md
deleted file mode 100644
index 13dc994973..0000000000
--- a/content/zh/docs3-building/java-sdk/reference-manual/config-center/nacos/guide.md
+++ /dev/null
@@ -1,6 +0,0 @@
----
-type: docs
-title: "使用说明"
-linkTitle: "使用说明"
-weight: 2
----
diff --git a/content/zh/docs3-building/java-sdk/reference-manual/config-center/nacos/overview.md b/content/zh/docs3-building/java-sdk/reference-manual/config-center/nacos/overview.md
deleted file mode 100644
index c087fc3b6f..0000000000
--- a/content/zh/docs3-building/java-sdk/reference-manual/config-center/nacos/overview.md
+++ /dev/null
@@ -1,6 +0,0 @@
----
-type: docs
-title: "概述"
-linkTitle: "概述"
-weight: 1
----
diff --git a/content/zh/docs3-building/java-sdk/reference-manual/config-center/overview/_index.md b/content/zh/docs3-building/java-sdk/reference-manual/config-center/overview/_index.md
index 40ea6666d9..9b9a8f97a0 100644
--- a/content/zh/docs3-building/java-sdk/reference-manual/config-center/overview/_index.md
+++ b/content/zh/docs3-building/java-sdk/reference-manual/config-center/overview/_index.md
@@ -31,49 +31,3 @@ configCenter.setAddress("zookeeper://127.0.0.1:2181");
 ```
 
 > 为了兼容 2.6.x 版本配置,在使用 Zookeeper 作为注册中心,且没有显示配置配置中心的情况下,Dubbo 框架会默认将此 Zookeeper 用作配置中心,但将只作服务治理用途。
-
-## 外部化配置
-请参考文档 [外部化配置](../configuration/external-config)
-
-## 动态配置
-[TODO 待完善]
-
-## 服务治理
-
-#### Zookeeper
-
-默认节点结构:
-
-![zk-configcenter-governance](/imgs/user/zk-configcenter-governance.jpg)
-
-- namespace,用于不同配置的环境隔离。
-- config,Dubbo 约定的固定节点,不可更改,所有配置和服务治理规则都存储在此节点下。
-- dubbo,所有服务治理规则都是全局性的,dubbo 为默认节点
-- configurators/tag-router/condition-router/migration,不同的服务治理规则类型,node value 存储具体规则内容
-
-#### Apollo
-
-所有的服务治理规则都是全局性的,默认从公共命名空间 `dubbo` 读取和订阅:
-
-![apollo-configcenter-governance.jpg](/imgs/user/apollo-configcenter-governance.jpg)
-
-不同的规则以不同的 key 后缀区分:
-
-- configurators,[覆盖规则](../../examples/config-rule)
-- tag-router,[标签路由](../../examples/routing-rule)
-- condition-router,[条件路由](../../examples/condition-router)
-- migration, [迁移规则](../../examples/todo)
-
-#### Nacos
-
-所有的服务治理规则都是全局的,默认从 namespace: `public` 下进行读取, 通过 dataId: `interface name` 以及 group: `dubbo` 去读取和订阅:
-
-![nacos-configcenter-governance.jpg](/imgs/user/nacos-configcenter-governance.png)
-
-不同的规则以 dataId 的后缀区分:
-
-- configurators,[覆盖规则](../../examples/config-rule)
-- tag-router,[标签路由](../../examples/routing-rule)
-- condition-router,[条件路由](../../examples/condition-router)
-- migration, [迁移规则](../../examples/todo)
-
diff --git a/content/zh/docs3-building/java-sdk/reference-manual/config-center/zookeeper/_index.md b/content/zh/docs3-building/java-sdk/reference-manual/config-center/zookeeper/_index.md
index 2864a6f0b1..71843e8c8a 100644
--- a/content/zh/docs3-building/java-sdk/reference-manual/config-center/zookeeper/_index.md
+++ b/content/zh/docs3-building/java-sdk/reference-manual/config-center/zookeeper/_index.md
@@ -3,5 +3,19 @@ type: docs
 title: "Zookeeper"
 linkTitle: "Zookeeper"
 weight: 2
-description: ""
+description: "使用 Zookeeper 作为配置中心"
 ---
+
+## 开启 Zookeeper 配置中心
+使用以下任一配置方式,启用 Zookeeper 配置中心
+```yaml
+
+```
+
+## 高级配置
+
+### 隔离
+###
+### 隔离
+
+## 工作原理
diff --git a/content/zh/docs3-building/java-sdk/reference-manual/config-center/zookeeper/guide.md b/content/zh/docs3-building/java-sdk/reference-manual/config-center/zookeeper/guide.md
deleted file mode 100644
index 37430b9214..0000000000
--- a/content/zh/docs3-building/java-sdk/reference-manual/config-center/zookeeper/guide.md
+++ /dev/null
@@ -1,7 +0,0 @@
----
-type: docs
-title: "使用说明"
-linkTitle: "使用说明"
-weight: 2
----
-
diff --git a/content/zh/docs3-building/java-sdk/reference-manual/config-center/zookeeper/overview.md b/content/zh/docs3-building/java-sdk/reference-manual/config-center/zookeeper/overview.md
deleted file mode 100644
index c087fc3b6f..0000000000
--- a/content/zh/docs3-building/java-sdk/reference-manual/config-center/zookeeper/overview.md
+++ /dev/null
@@ -1,6 +0,0 @@
----
-type: docs
-title: "概述"
-linkTitle: "概述"
-weight: 1
----
diff --git a/content/zh/docs3-building/java-sdk/reference-manual/graalvm/_index.md b/content/zh/docs3-building/java-sdk/reference-manual/graalvm/_index.md
index 1412a54a32..6af206dcf2 100644
--- a/content/zh/docs3-building/java-sdk/reference-manual/graalvm/_index.md
+++ b/content/zh/docs3-building/java-sdk/reference-manual/graalvm/_index.md
@@ -2,6 +2,8 @@
 type: docs
 title: "Dubbo 集成 Graalvm参考手册"
 linkTitle: "Dubbo 集成 Graalvm参考手册"
+toc_hide: true
+hide_summary: true
 weight: 9
 description: ""
 ---
diff --git a/content/zh/docs3-building/java-sdk/reference-manual/metadata-center/_index.md b/content/zh/docs3-building/java-sdk/reference-manual/metadata-center/_index.md
index f3fad3427b..b0e38f433b 100644
--- a/content/zh/docs3-building/java-sdk/reference-manual/metadata-center/_index.md
+++ b/content/zh/docs3-building/java-sdk/reference-manual/metadata-center/_index.md
@@ -1,7 +1,7 @@
 ---
 type: docs
-title: "元数据中心参考手册"
-linkTitle: "元数据中心参考手册"
+title: "元数据中心"
+linkTitle: "元数据中心"
 weight: 6
 description: ""
 ---
diff --git a/content/zh/docs3-building/java-sdk/reference-manual/protocol/_index.md b/content/zh/docs3-building/java-sdk/reference-manual/protocol/_index.md
index 259d37856d..45bcd28825 100755
--- a/content/zh/docs3-building/java-sdk/reference-manual/protocol/_index.md
+++ b/content/zh/docs3-building/java-sdk/reference-manual/protocol/_index.md
@@ -1,8 +1,8 @@
 
 ---
 type: docs
-title: "RPC 协议参考手册"
-linkTitle: "RPC 协议参考手册"
+title: "RPC 协议"
+linkTitle: "RPC 协议"
 weight: 4
 ---
 
diff --git a/content/zh/docs3-building/java-sdk/reference-manual/registry/_index.md b/content/zh/docs3-building/java-sdk/reference-manual/registry/_index.md
index 1c0c3c1997..29a42257b0 100644
--- a/content/zh/docs3-building/java-sdk/reference-manual/registry/_index.md
+++ b/content/zh/docs3-building/java-sdk/reference-manual/registry/_index.md
@@ -1,7 +1,7 @@
 ---
 type: docs
-title: "注册中心参考手册"
-linkTitle: "注册中心参考手册"
+title: "注册中心说明"
+linkTitle: "注册中心说明"
 weight: 5
-description: ""
+description: "Dubbo 注册中心的设计与工作方式,涵盖了 Zookeeper、Nacos 等 Dubbo 适配的主流注册中心"
 ---
diff --git a/content/zh/docs3-building/java-sdk/reference-manual/registry/multicast/_index.md b/content/zh/docs3-building/java-sdk/reference-manual/registry/multicast/_index.md
index dcf9708c30..088e39a805 100644
--- a/content/zh/docs3-building/java-sdk/reference-manual/registry/multicast/_index.md
+++ b/content/zh/docs3-building/java-sdk/reference-manual/registry/multicast/_index.md
@@ -1,7 +1,52 @@
 ---
 type: docs
-title: "广播"
-linkTitle: "广播"
-weight: 5
-description: ""
+title: "Mulicast"
+linkTitle: "Mulicast"
+weight: 4
+description: "Multicast 广播注册中心(限开发阶段使用)。"
 ---
+
+Multicast 注册中心不需要启动任何中心节点,只要广播地址一样,就可以互相发现。
+
+![/user-guide/images/multicast.jpg](/imgs/user/multicast.jpg)
+
+## 1 使用说明
+
+```xml
+<dubbo:registry address="multicast://224.5.6.7:1234" />
+```
+
+或
+
+```xml
+<dubbo:registry protocol="multicast" address="224.5.6.7:1234" />
+```
+### 注意:
+为了减少广播量,Dubbo 缺省使用单播发送提供者地址信息给消费者。
+如果一个机器上同时启了多个消费者进程,消费者需声明 `unicast=false`,否则只会有一个消费者能收到消息; 当服务者和消费者运行在同一台机器上,消费者同样需要声明`unicast=false`,否则消费者无法收到消息,导致No provider available for the service异常:
+
+```xml
+<dubbo:application name="demo-consumer">
+    <dubbo:parameter key="unicast" value="false" />
+</dubbo:application>
+```
+
+或
+
+```xml
+<dubbo:consumer>
+    <dubbo:parameter key="unicast" value="false" />
+</dubbo:consumer>
+```
+
+
+## 2 工作原理
+
+### 2.1 基本流程
+0.  提供方启动时广播自己的地址
+1.  消费方启动时广播订阅请求
+2.  提供方收到订阅请求时,单播自己的地址给订阅者,如果设置了  `unicast=false`,则广播给订阅者
+3.  消费方收到提供方地址时,连接该地址进行 RPC 调用。
+
+### 2.2 使用限制
+组播受网络结构限制,只适合小规模应用或开发阶段使用。组播地址段: 224.0.0.0 - 239.255.255.255
diff --git a/content/zh/docs3-building/java-sdk/reference-manual/registry/multicast/guide.md b/content/zh/docs3-building/java-sdk/reference-manual/registry/multicast/guide.md
deleted file mode 100644
index 7f56c2e6a3..0000000000
--- a/content/zh/docs3-building/java-sdk/reference-manual/registry/multicast/guide.md
+++ /dev/null
@@ -1,56 +0,0 @@
----
-type: docs
-title: "使用说明"
-linkTitle: "使用说明"
-weight: 2
----
-
-## 特性说明
-Multicast 注册中心不需要启动任何中心节点,只要广播地址一样,就可以互相发现。
-
-![/user-guide/images/multicast.jpg](/imgs/user/multicast.jpg)
-
-#### 使用方
-
-- 提供方
-- 消费方
-- 提供方
-
-#### 步骤:
-0.  提供方启动时广播自己的地址
-1.  消费方启动时广播订阅请求
-2.  提供方收到订阅请求时,单播自己的地址给订阅者,如果设置了  `unicast=false`,则广播给订阅者
-3.  消费方收到提供方地址时,连接该地址进行 RPC 调用。
-
-#### 提示:
-组播受网络结构限制,只适合小规模应用或开发阶段使用。组播地址段: 224.0.0.0 - 239.255.255.255
-
-## 使用场景
-## 使用方式
-
-```xml
-<dubbo:registry address="multicast://224.5.6.7:1234" />
-```
-
-或
-
-```xml
-<dubbo:registry protocol="multicast" address="224.5.6.7:1234" />
-```
-#### 注意:
-为了减少广播量,Dubbo 缺省使用单播发送提供者地址信息给消费者。
-如果一个机器上同时启了多个消费者进程,消费者需声明 `unicast=false`,否则只会有一个消费者能收到消息; 当服务者和消费者运行在同一台机器上,消费者同样需要声明`unicast=false`,否则消费者无法收到消息,导致No provider available for the service异常:
-
-```xml
-<dubbo:application name="demo-consumer">
-    <dubbo:parameter key="unicast" value="false" />
-</dubbo:application>
-```
-
-或
-
-```xml
-<dubbo:consumer>
-    <dubbo:parameter key="unicast" value="false" />
-</dubbo:consumer>
-```
diff --git a/content/zh/docs3-building/java-sdk/reference-manual/registry/multicast/overview.md b/content/zh/docs3-building/java-sdk/reference-manual/registry/multicast/overview.md
deleted file mode 100644
index c087fc3b6f..0000000000
--- a/content/zh/docs3-building/java-sdk/reference-manual/registry/multicast/overview.md
+++ /dev/null
@@ -1,6 +0,0 @@
----
-type: docs
-title: "概述"
-linkTitle: "概述"
-weight: 1
----
diff --git a/content/zh/docs3-building/java-sdk/reference-manual/registry/multiple-registry/_index.md b/content/zh/docs3-building/java-sdk/reference-manual/registry/multiple-registry/_index.md
index 6ed4ddc4e4..c51092b26e 100644
--- a/content/zh/docs3-building/java-sdk/reference-manual/registry/multiple-registry/_index.md
+++ b/content/zh/docs3-building/java-sdk/reference-manual/registry/multiple-registry/_index.md
@@ -3,5 +3,190 @@ type: docs
 title: "多注册中心"
 linkTitle: "多注册中心"
 weight: 6
-description: ""
+description: "本文介绍了 Dubbo 的多注册中心支持及使用场景,如何通过多注册/多订阅实现跨区域服务部署、服务迁移等,也描述了同机房有限等跨机房流量调度的实现方式。"
 ---
+
+## 1 关联服务与多注册中心
+
+### 1.1 全局默认注册中心
+
+Dubbo 注册中心和服务是独立配置的,通常开发者不用设置服务和注册中心组件之间的关联关系,Dubbo 框架会将自动执行以下动作:
+* 对于所有的 Service 服务,向所有全局默认注册中心注册服务地址。
+* 对于所有的 Reference 服务,从所有全局默认注册中心订阅服务地址。
+
+```yml
+# application.yml (Spring Boot)
+dubbo
+ registries
+  beijingRegistry
+   address: zookeeper://localhost:2181
+  shanghaiRegistry
+   address: zookeeper://localhost:2182
+```
+
+```java
+@DubboService
+public class DemoServiceImpl implements DemoService {}
+
+@DubboService
+public class HelloServiceImpl implements HelloService {}
+```
+
+以上以 Spring Boot 开发为例(XML、API 方式类似)配置了两个全局默认注册中心 beijingRegistry 和 shanghaiRegistry,服务 DemoService 与 HelloService 会分别注册到两个默认注册中心。
+
+除了上面讲到的框架自动为服务设置全局注册中心之外,有两种方式可以灵活调整服务与多注册中心间的关联。
+
+### 1.2 设置全局默认注册中心
+```yml
+# application.yml (Spring Boot)
+dubbo
+ registries
+  beijingRegistry
+   address: zookeeper://localhost:2181
+   default: true
+  shanghaiRegistry
+   address: zookeeper://localhost:2182
+   default: false
+```
+
+`default` 用来设置全局默认注册中心,默认值为 `true` 即被视作全局注册中心。未指定注册中心 id 的服务将自动注册或订阅全局默认注册中心。
+
+### 1.2 显示关联服务与注册中心
+
+通过在 Dubbo 服务定义组件上增加 registry 配置,将服务与注册中心关联起来。
+
+```java
+@DubboServiceregistry = {"beijingRegistry"}
+public class DemoServiceImpl implements DemoService {}
+
+@DubboServiceregistry = {"shanghaiRegistry"}
+public class HelloServiceImpl implements HelloService {}
+```
+
+增加以上配置后,DemoService 将只注册到 beijingRegistry,而 HelloService 将注册到 shanghaiRegistry。
+
+## 2 多注册中心订阅
+
+服务订阅由于涉及到地址聚合和路由选址,因此逻辑会更加复杂一些。从单个服务订阅的视角,如果存在多注册中心订阅的情况,则可以根据注册中心间的地址是否聚合分为两种场景。
+
+### 2.1 多注册中心地址不聚合
+
+```xml
+<dubbo:registry id="hangzhouRegistry" address="10.20.141.150:9090" />
+<dubbo:registry id="qingdaoRegistry" address="10.20.141.151:9010" />
+```
+
+如以上所示独立配置的注册中心组件,地址列表在消费端默认是完全隔离的,负载均衡选址要经过两步:
+1. 注册中心集群间选址,选定一个集群
+2. 注册中心集群内选址,在集群内进行地址筛选
+
+![multi-registris-no-aggregation](/imgs/v3/registry/no-aggregation.png)
+
+下面我们着重分析下如何控制 **注册中心集群间选址**,可选的策略有如下几种
+**随机**
+每次请求都随机的分配到一个注册中心集群
+
+> 随机的过程中会有可用性检查,即每个集群要确保至少有一个地址可用才有可能被选到。
+
+**preferred 优先**
+```xml
+<dubbo:registry id="hangzhouRegistry" address="10.20.141.150:9090" preferred="true"/>
+<dubbo:registry id="qingdaoRegistry" address="10.20.141.151:9010" />
+```
+如果有注册中心集群配置了 `preferred="true"`,则所有流量都会被路由到这个集群。
+
+**weighted**
+```xml
+<dubbo:registry id="hangzhouRegistry" address="10.20.141.150:9090" weight="100"/>
+<dubbo:registry id="qingdaoRegistry" address="10.20.141.151:9010" weight="10" />
+```
+
+基于权重的随机负载均衡,以上集群间会有大概 10:1 的流量分布。
+
+**同 zone 优先**
+```xml
+<dubbo:registry id="hangzhouRegistry" address="10.20.141.150:9090" zone="hangzhou" />
+<dubbo:registry id="qingdaoRegistry" address="10.20.141.151:9010" zone="qingdao" />
+```
+
+```java
+RpcContext.getContext().setAttachment("registry_zone", "qingdao");
+```
+
+根据 Invocation 中带的流量参数或者在当前节点通过 context 上下文设置的参数,流量会被精确的引导到对应的集群。
+
+### 2.1 多注册中心地址聚合
+```xml
+<dubbo:registry address="multiple://127.0.0.1:2181?separator=;&reference-registry=zookeeper://address11?backup=address12,address13;zookeeper://address21?backup=address22,address23" />
+```
+
+这里增加了一个特殊的 multiple 协议开头的注册中心,其中:
+* `multiple://127.0.0.1:2181` 并没有什么具体含义,只是一个特定格式的占位符,地址可以随意指定
+* `reference-registry` 指定了要聚合的注册中心集群的列表,示例中有两个集群,分别是 `zookeeper://address11?backup=address12,address13` 和 `zookeeper://address21?backup=address22,address23`,其中还特别指定了集群分隔符 `separator=";"`
+
+如下图所示,不同注册中心集群的地址会被聚合到一个地址池后在消费端做负载均衡或路由选址。
+
+![multi-registris-aggregation](/imgs/v3/registry/aggregation.png)
+
+在 3.1.0 版本及之后,还支持每个注册中心集群上设置特定的 attachments 属性,以实现对该注册中心集群下的地址做特定标记,后续配合 Router 组件扩展如 TagRouter 等就可以实现跨机房间的流量治理能力。
+
+```xml
+<dubbo:registry address="multiple://127.0.0.1:2181?separator=;&reference-registry=zookeeper://address11?attachments=zone=hangzhou,tag=middleware;zookeeper://address21" />
+```
+
+增加 `attachments=zone=hangzhou,tag=middleware` 后,所有来自该注册中心的 URL 地址将自动携带 `zone` 和 `tag` 两个标识,方便消费端更灵活的做流量治理。
+
+## 3 场景示例
+
+### 3.1 场景一:跨区域注册服务
+
+比如:中文站有些服务来不及在青岛部署,只在杭州部署,而青岛的其它应用需要引用此服务,就可以将服务同时注册到两个注册中心。
+
+```xml
+<dubbo:registry id="hangzhouRegistry" address="10.20.141.150:9090" />
+<dubbo:registry id="qingdaoRegistry" address="10.20.141.151:9010" default="false" />
+<!-- 向多个注册中心注册 -->
+<dubbo:service interface="com.alibaba.hello.api.HelloService" version="1.0.0" ref="helloService" registry="hangzhouRegistry,qingdaoRegistry" />
+```
+
+### 3.2 场景二:根据业务实现隔离
+
+CRM 有些服务是专门为国际站设计的,有些服务是专门为中文站设计的。
+
+```xml
+<!-- 多注册中心配置 -->
+<dubbo:registry id="chinaRegistry" address="10.20.141.150:9090" />
+<dubbo:registry id="intlRegistry" address="10.20.154.177:9010" default="false" />
+<!-- 向中文站注册中心注册 -->
+<dubbo:service interface="com.alibaba.hello.api.HelloService" version="1.0.0" ref="helloService" registry="chinaRegistry" />
+<!-- 向国际站注册中心注册 -->
+<dubbo:service interface="com.alibaba.hello.api.DemoService" version="1.0.0" ref="demoService" registry="intlRegistry" />
+```
+
+### 3.3 场景三:
+
+CRM 需同时调用中文站和国际站的 PC2 服务,PC2 在中文站和国际站均有部署,接口及版本号都一样,但连的数据库不一样。
+
+```xml
+<!-- 多注册中心配置 -->
+<dubbo:registry id="chinaRegistry" address="10.20.141.150:9090" />
+<dubbo:registry id="intlRegistry" address="10.20.154.177:9010" default="false" />
+<!-- 引用中文站服务 -->
+<dubbo:reference id="chinaHelloService" interface="com.alibaba.hello.api.HelloService" version="1.0.0" registry="chinaRegistry" />
+<!-- 引用国际站站服务 -->
+<dubbo:reference id="intlHelloService" interface="com.alibaba.hello.api.HelloService" version="1.0.0" registry="intlRegistry" />
+```
+
+如果只是测试环境临时需要连接两个不同注册中心,使用竖号分隔多个不同注册中心地址:
+
+```xml
+<!-- 多注册中心配置,竖号分隔表示同时连接多个不同注册中心,同一注册中心的多个集群地址用逗号分隔 -->
+<dubbo:registry address="10.20.141.150:9090|10.20.154.177:9010" />
+<!-- 引用服务 -->
+<dubbo:reference id="helloService" interface="com.alibaba.hello.api.HelloService" version="1.0.0" />
+```
+
+
+
+
+
diff --git a/content/zh/docs3-building/java-sdk/reference-manual/registry/multiple-registry/guide.md b/content/zh/docs3-building/java-sdk/reference-manual/registry/multiple-registry/guide.md
deleted file mode 100644
index 37430b9214..0000000000
--- a/content/zh/docs3-building/java-sdk/reference-manual/registry/multiple-registry/guide.md
+++ /dev/null
@@ -1,7 +0,0 @@
----
-type: docs
-title: "使用说明"
-linkTitle: "使用说明"
-weight: 2
----
-
diff --git a/content/zh/docs3-building/java-sdk/reference-manual/registry/multiple-registry/overview.md b/content/zh/docs3-building/java-sdk/reference-manual/registry/multiple-registry/overview.md
deleted file mode 100644
index c087fc3b6f..0000000000
--- a/content/zh/docs3-building/java-sdk/reference-manual/registry/multiple-registry/overview.md
+++ /dev/null
@@ -1,6 +0,0 @@
----
-type: docs
-title: "概述"
-linkTitle: "概述"
-weight: 1
----
diff --git a/content/zh/docs3-building/java-sdk/reference-manual/registry/nacos/_index.md b/content/zh/docs3-building/java-sdk/reference-manual/registry/nacos/_index.md
index 7fed8cf789..e88c790b78 100644
--- a/content/zh/docs3-building/java-sdk/reference-manual/registry/nacos/_index.md
+++ b/content/zh/docs3-building/java-sdk/reference-manual/registry/nacos/_index.md
@@ -3,5 +3,145 @@ type: docs
 title: "Nacos"
 linkTitle: "Nacos"
 weight: 3
-description: ""
+description: "Nacos 注册中心的基本使用和工作原理。"
 ---
+
+## 1 前置条件
+* 了解 [Dubbo 基本开发步骤](../../../quick-start/spring-boot/)
+* 安装并启动 [Nacos 服务](https://nacos.io/zh-cn/docs/quick-start.html)
+
+## 2 使用说明
+在此查看[完整示例代码](https://github.com/apache/dubbo-samples/tree/master/dubbo-samples-nacos/dubbo-samples-nacos-registry/)
+
+### 2.1 增加依赖
+```xml
+<dependencies>
+    <dependency>
+        <groupId>org.apache.dubbo</groupId>
+        <artifactId>dubbo</artifactId>
+        <version>3.0.9</version>
+    </dependency>
+    <!-- Introduce Nacos dependency, or you can add Nacos dependency directly as shown blow-->
+    <dependency>
+        <groupId>org.apache.dubbo</groupId>
+        <artifactId>dubbo-registry-nacos</artifactId>
+        <version>3.0.9</version>
+    </dependency>
+    <!--
+    <dependency>
+      <groupId>com.alibaba.nacos</groupId>
+      <artifactId>nacos-client</artifactId>
+      <version></version>
+    </dependency>
+    -->
+</dependencies>
+```
+
+增加 Dubbo 与 Nacos 依赖
+
+### 2.2 配置并启用 Nacos
+
+```yaml
+# application.yml (Spring Boot)
+dubbo
+ registry
+   address: nacos://localhost:8848
+```
+或
+```properties
+# dubbo.properties
+dubbo.registry.address=nacos://localhost:8848
+```
+或
+```xml
+<dubbo:registry address="nacos://localhost:8848" />
+```
+
+启用应用,查看注册后的效果或工作原理,请查看 [工作原理](#4-工作原理)。
+
+## 3 高级配置
+
+### 3.1 认证
+
+```yaml
+# application.yml (Spring Boot)
+dubbo
+ registry
+   address: nacos://localhost:8848?username=nacos&password=nacos
+```
+
+或
+
+```properties
+# dubbo.properties
+dubbo.registry.address: nacos://nacos:nacos@localhost:8848
+```
+
+### 3.1 自定义命名空间
+
+```yaml
+# application.yml (Spring Boot)
+dubbo
+ registry
+   address: nacos://localhost:8848?namespace=5cbb70a5-xxx-xxx-xxx-d43479ae0932
+```
+
+或者
+
+```yaml
+# application.yml (Spring Boot)
+dubbo
+ registry
+   address: nacos://localhost:8848
+   parameters.namespace: 5cbb70a5-xxx-xxx-xxx-d43479ae0932
+```
+
+### 3.2 自定义分组
+
+```yaml
+# application.yml
+dubbo
+ registry
+   address: nacos://localhost:8848
+   group: dubbo
+```
+
+> 如果不配置的话,group 是由 Nacos 默认指定。group 和 namespace 在 Nacos 中代表不同的隔离层次,通常来说 namespace 用来隔离不同的用户或环境,group 用来对同一环境内的数据做进一步归组。
+
+### 3.3 更多配置
+在nacos-server@`1.0.0`版本后,支持客户端通过上报一些包含特定的元数据的实例到服务端来控制实例的一些行为。
+
+   例如:
+
+   `preserved.heart.beat.timeout`   : 该实例在不发送心跳后,从健康到不健康的时间。(单位:毫秒)
+   `preserved.ip.delete.timeout`    : 该实例在不发送心跳后,被服务端下掉该实例的时间。(单位:毫秒)
+   `preserved.heart.beat.interval`  : 该实例在客户端上报心跳的间隔时间。(单位:毫秒)
+   `preserved.instance.id.generator`: 该实例的id生成策略,值为`snowflake`时,从0开始增加。
+   `preserved.register.source`      : 保留键,目前未使用。
+
+  这些参数都可以类似 `namespace` 的方式通过通过参数扩展配置到 Nacos,如
+
+  ```properties
+  dubbo.registry.parameters.preserved.heart.beat.timeout=5000
+  ```
+
+## 4 工作原理
+
+以下仅为展示 Nacos 作为 Dubbo 注册中心的工作原理,Dubbo 服务运维建议使用 [Dubbo Admin](https://github.com/apache/dubbo-admin)
+
+### 4.1 Dubbo2 注册数据
+
+随后,重启您的 Dubbo 应用,Dubbo 的服务提供和消费信息在 Nacos 控制台中可以显示:
+
+![dubbo-registry-nacos-1.png](/imgs/blog/dubbo-registry-nacos-1.png)
+
+如图所示,服务名前缀为 `providers:` 的信息为服务提供者的元信息,`consumers:` 则代表服务消费者的元信息。点击“**详情**”可查看服务状态详情:
+
+![image-dubbo-registry-nacos-2.png](/imgs/blog/dubbo-registry-nacos-2.png)
+
+### 4.2 Dubbo3 注册数据
+应用级服务发现的 "服务名" 为应用名
+
+
+
+> Dubbo3 默认采用 "应用级服务发现 + 接口级服务发现" 的双注册模式,因此会发现应用级服务(应用名)和接口级服务(接口名)同时出现在 Nacos 控制台,可以通过配置 `dubbo.registry.register-mode=instance/interface/all` 来改变注册行为。
\ No newline at end of file
diff --git a/content/zh/docs3-building/java-sdk/reference-manual/registry/nacos/guide.md b/content/zh/docs3-building/java-sdk/reference-manual/registry/nacos/guide.md
deleted file mode 100644
index 3da379bdf2..0000000000
--- a/content/zh/docs3-building/java-sdk/reference-manual/registry/nacos/guide.md
+++ /dev/null
@@ -1,194 +0,0 @@
----
-type: docs
-title: "Nacos 注册中心"
-linkTitle: "Nacos"
-weight: 1
-description: "Nacos 注册中心参考手册"
----
-## 特性说明
-Nacos 是 Dubbo 生态系统中重要的注册中心实现,其中 [`dubbo-registry-nacos`](https://github.com/apache/dubbo/tree/3.0/dubbo-registry/dubbo-registry-nacos) 则是 Dubbo 融合 Nacos 注册中心的实现。
-
-#### 预备工作
-
-Dubbo 使用 nacos 注册中心之前,需先成功启动nacos server,操作步骤请参考 [nacos快速入门](https://nacos.io/zh-cn/docs/quick-start.html) 。<br>
-
-当Dubbo使用`3.0.0`及以上版本时,需要使用Nacos `2.0.0`及以上版本。
-
-#### Nacos通用参数说明
-
-参数名 | 中文描述| 默认值
----|---|---
-username|连接Nacos Server的用户名|nacos
-paasword|连接Nacos Server的密码|nacos
-backup|备用地址|空
-namespace|命名空间的ID|public
-group|分组名称|DEFAULT_GROUP
-register-consumer-url|是否注册消费端|false
-com.alibaba.nacos.naming.log.filename|初始化日志文件名|naming.log
-endpoint|连接Nacos Server指定的连接点,可参考[文档](https://nacos.io/zh-cn/blog/address-server.html)|空
-endpointPort|连接Nacos Server指定的连接点端口,可以参考[文档](https://nacos.io/zh-cn/blog/address-server.html)|空
-endpointQueryParams|endpoint查参数询|空
-isUseCloudNamespaceParsing|是否解析云环境中的namespace参数|true
-isUseEndpointParsingRule|是否开启endpoint 参数规则解析|true
-namingLoadCacheAtStart|启动时是否优先读取本地缓存|true
-namingCacheRegistryDir|指定缓存子目录,位置为 .../nacos/{SUB_DIR}/naming|空
-namingClientBeatThreadCount|客户端心跳的线程池大小|机器的CPU数的一半
-namingPollingThreadCount|客户端定时轮询数据更新的线程池大小|机器的CPU数的一半
-namingRequestDomainMaxRetryCount|client通过HTTP向Nacos Server请求的重试次数|3
-namingPushEmptyProtection|在服务没有有效(健康)实例时,是否开启保护,开启后则会使用旧的服务实例|false
-push.receiver.udp.port|客户端UDP的端口|空
-
-## 使用场景
-
-## 使用方式
-#### 快速上手
-Dubbo 融合 Nacos 成为注册中心的操作步骤非常简单,大致步骤可分为“增加 Maven 依赖”以及“配置注册中心”。
-
-
-#### 增加 Maven 依赖
-
-首先,您需要将 `dubbo-registry-nacos` 的 Maven 依赖添加到您的项目 `pom.xml` 文件中。
-
-**注**:Dubbo `3.0.0`及以上版本,dubbo-registry-nacos引入nacos-client`2.0.0`及以上版本。
-```xml
-<dependencies>
-    ...
-    <!-- Dubbo Nacos registry dependency -->
-    <dependency>
-        <groupId>org.apache.dubbo</groupId>
-        <artifactId>dubbo-registry-nacos</artifactId>
-        <version>3.0.7</version>
-    </dependency>   
-    
-    <!-- Dubbo dependency -->
-    <dependency>
-        <groupId>org.apache.dubbo</groupId>
-        <artifactId>dubbo</artifactId>
-        <version>3.0.7</version>
-    </dependency>
-    ...
-</dependencies>
-```
-
-当项目中添加  `dubbo-registry-nacos` 后,您无需显式地编程实现服务发现和注册逻辑,实际实现由该三方包提供,接下来配置 Naocs 注册中心。
-
-#### 配置注册中心
-
-如果 Dubbo 应用使用 Spring Framework 装配,将有两种配置方法可选,分别为:[Dubbo Spring 外部化配置](https://mercyblitz.github.io/2018/01/18/Dubbo-%E5%A4%96%E9%83%A8%E5%8C%96%E9%85%8D%E7%BD%AE/)以及 Spring XML 配置文件,推荐前者。
-
-
-#### Dubbo Spring 外部化配置
-
-Dubbo Spring [外部化配置](https://mercyblitz.github.io/2018/01/18/Dubbo-%E5%A4%96%E9%83%A8%E5%8C%96%E9%85%8D%E7%BD%AE/) 是由 Dubbo 2.5.8 引入的新特性,可通过 Spring `Environment` 属性自动地生成并绑定 Dubbo 配置 Bean,实现配置简化,并且降低微服务开发门槛。
-
-当 Dubbo 使用 Nacos 为注册中心,假设启动服务器IP `10.20.153.10`,端口号`8848`,则在 Dubbo 外部化配置文件中添加以下配置:
-
-```properties
-## 其他属性保持不变
-
-## application 
-dubbo.application.name=your-dubbo-application
-
-## Nacos registry address
-dubbo.registry.address=nacos://10.20.153.10:8848
-
-##如果要使用其他nacos参数,可以使用以下2中方式
-#第一种方式
-#dubbo.registry.address=nacos://localhost:8848?username=nacos&password=nacos&namespace=5cbb70a5-xxx-xxx-xxx-d43479ae0932&group=demo
-
-#第二种方式
-#dubbo.registry.address=nacos://localhost:8848
-#dubbo.registry.parameters.username=nacos
-#dubbo.registry.parameters.password=nacos
-#dubbo.registry.parameters.namespace=5cbb70a5-xxx-xxx-xxx-d43479ae0932
-#dubbo.registry.parameters.group=demo
-...
-```
-关于 nacos 配置参数请参考 nacos 通用参数说明
-
-注:Dubbo3.0.0版本以后,增加了是否注册消费者的参数,如果需要将消费者注册到 nacos 注册中心上,需要将参数 (register-consumer-url)设置为true,默认是false。
-
-设置方式如下:
-```properties
-##设置是否注册消费者的参数,可以使用以下2中方式
-#第一种方式
-#dubbo.registry.address=nacos://localhost:8848?register-consumer-url=true
-
-#第二种方式
-#dubbo.registry.address=nacos://localhost:8848
-#dubbo.registry.parameters.register-consumer-url=true
-
-```
-
-随后,重启您的 Dubbo 应用,Dubbo 的服务提供和消费信息在 Nacos 控制台中可以显示:
-
-![image-dubbo-registry-nacos-6.png](/static/imgs/blog/dubbo-registry-nacos-6.png)
-
-
-如图所示,服务名前缀为 `providers:` 的信息为服务提供者的元信息,`consumers:` 则代表服务消费者的元信息。点击“**详情**”可查看`providers:` 服务状态详情:
-
-![image-dubbo-registry-nacos-7.png](/static/imgs/blog/dubbo-registry-nacos-7.png)
-
-`consumers:` 服务状态详情:
-
-![image-dubbo-registry-nacos-8.png](/static/imgs/blog/dubbo-registry-nacos-8.png)
-
-
-如果您正在使用 Spring XML 配置文件装配 Dubbo 注册中心的话,请参考下一节。
-
-#### Spring XML 配置文件
-
-当 Dubbo 使用 Nacos 为注册中心,假设启动服务器IP `10.20.153.10`,端口号`8848`,在 Spring Bean 在 XML 文件中添加以下配置:
-
-```xml
-<?xml version="1.0" encoding="UTF-8"?>
-<beans xmlns="http://www.springframework.org/schema/beans"
-       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-       xmlns:dubbo="http://dubbo.apache.org/schema/dubbo"
-       xsi:schemaLocation="http://www.springframework.org/schema/beans        http://www.springframework.org/schema/beans/spring-beans-4.3.xsd        http://dubbo.apache.org/schema/dubbo        http://dubbo.apache.org/schema/dubbo/dubbo.xsd">
-
-    <!-- 提供方应用信息,用于计算依赖关系 -->
-    <dubbo:application name="nacos-demo-xml"/>
-
-    <!-- 使用 Nacos 注册中心 -->
-<dubbo:registry address="nacos:// 10.20.153.10:8848" username="nacos" password="nacos"/>
-
-<!-- 如果要使用其他nacos参数可以使用下面方式 -->
-	<!-- 当参数在xsd中有定义时,可用以下方式 -->
-	<!-- <dubbo:registry address="nacos:// 10.20.153.10:8848" username="nacos" password="nacos" group="demo" /> -->
-
-	<!-- 或者使用以下方式,将参数配置在address中 -->
-<!-- <dubbo:registry address="nacos://10.20.153.10:8848?namespace=5cbb70a5-xxx-xxx-xxx-d43479ae0932" username="nacos" password="nacos" /> -->
-...
-</beans>
-```
-
-关于 nacos 配置参数请参考 nacos 通用参数说明
-
-**注**:Dubbo3.0.0版本以后,增加了是否注册消费者的参数,如果需要将消费者注册到 nacos 注册中心上,需要将参数 (register-consumer-url) 设置为 true,默认是 false。设置方式如下:
-
-```xml
-<?xml version="1.0" encoding="UTF-8"?>
-<beans xmlns="http://www.springframework.org/schema/beans"
-       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-       xmlns:dubbo="http://dubbo.apache.org/schema/dubbo"
-       xsi:schemaLocation="http://www.springframework.org/schema/beans        http://www.springframework.org/schema/beans/spring-beans-4.3.xsd        http://dubbo.apache.org/schema/dubbo        http://dubbo.apache.org/schema/dubbo/dubbo.xsd">
-
-	...
-    <!-- 使用 Nacos 注册中心 -->
-<dubbo:registry address="nacos:// 10.20.153.10:8848?register-consumer-url=true" username="nacos" password="nacos"/>
-...
-</beans>
-```
-
-重启 Dubbo 应用后,在 Nacos 的控制台同样上可看到服务提供者和消费者的的注册元信息:
-
-![image-dubbo-registry-nacos-9.png](/static/imgs/blog/dubbo-registry-nacos-9.png)
-
-如图所示,服务名前缀为 `providers:` 的信息为服务提供者的元信息,`consumers:` 则代表服务消费者的元信息。点击“**详情**”可查看`providers:` 服务状态详情:
-
-![image-dubbo-registry-nacos-10.png](/static/imgs/blog/dubbo-registry-nacos-10.png)
-
-`consumers:` 服务状态详情:
-
-![image-dubbo-registry-nacos-11.png](/static/imgs/blog/dubbo-registry-nacos-11.png)
diff --git a/content/zh/docs3-building/java-sdk/reference-manual/registry/nacos/overview.md b/content/zh/docs3-building/java-sdk/reference-manual/registry/nacos/overview.md
deleted file mode 100644
index c087fc3b6f..0000000000
--- a/content/zh/docs3-building/java-sdk/reference-manual/registry/nacos/overview.md
+++ /dev/null
@@ -1,6 +0,0 @@
----
-type: docs
-title: "概述"
-linkTitle: "概述"
-weight: 1
----
diff --git a/content/zh/docs3-building/java-sdk/reference-manual/registry/overview/_index.md b/content/zh/docs3-building/java-sdk/reference-manual/registry/overview/_index.md
index 15061f9901..7b993c803e 100644
--- a/content/zh/docs3-building/java-sdk/reference-manual/registry/overview/_index.md
+++ b/content/zh/docs3-building/java-sdk/reference-manual/registry/overview/_index.md
@@ -1,6 +1,79 @@
 ---
 type: docs
-title: "注册中心概述"
-linkTitle: "注册中心概述"
+title: "概述"
+linkTitle: "概述"
 weight: 1
+description: ""
 ---
+
+注册中心是 Dubbo 服务治理的核心组件,Dubbo 依赖注册中心的协调实现服务(地址)发现,自动化的服务发现是微服务实现动态扩缩容、负载均衡、、流量治理的基础。Dubbo 的服务发现机制经历了 Dubbo2 时代的接口级服务发现、Dubbo3 时代的应用级服务发现,具体可参见 [服务发现机制]() 解析了解具体演进过程。
+
+## 基本使用
+开发应用时必须指定 Dubbo 注册中心(registry)组件,配置很简单,只需指定注册中心的集群地址即可:
+
+以 Spring Boot 开发为例,在 application.yml 增加 registry 配置项目
+
+```yaml
+dubbo
+ registry
+  address: {protocol}://{cluster-address}
+```
+其中,protocol 为选择的配置中心类型,cluster-address 为访问注册中心的集群地址,如
+
+`address: nacos://localshot:8848`
+
+如需集群格式地址可使用 backup 参数
+
+`address: nacos://localshot:8848?backup=localshot:8846,localshot:8847`
+
+> 应用必须指定 Dubbo 注册中心,即使不启用注册中心也要配置(可通过设置地址为空 address='N/A' )。
+
+除了 其余根据每个配置中心的不同,可以参考 [registry 配置参考手册]()或通过 parameters 参数进行扩展。
+
+## 配置中心与元数据中心
+配置中心、元数据中心是实现 Dubbo 高阶服务治理能力的基础组件,相比于注册中心通常这两个组件的配置是可选的。
+
+为了兼容 2.6 及老版本的配置,对于部分注册中心类型(如 Zookeeper、Nacos 等),Dubbo 会同时将其用作元数据中心和配置中心。
+
+```yaml
+dubbo
+ registry
+  address: nacos://localhost:8848
+```
+
+框架解析后的默认行为
+
+```yaml
+dubbo
+ registry
+  address: nacos://localhost:8848
+ config-center
+  address: nacos://localhost:8848
+ metadata-report
+  address: nacos://localhost:8848
+```
+
+可以通过以下两个参数来调整或控制默认行为
+
+```yaml
+dubbo
+ registry
+  address: nacos://localhost:8848
+  use-as-config-center: false
+  use-as-metadata-report: false
+```
+
+## 注册中心生态
+Dubbo 主干目前支持的主流注册中心实现包括
+* Zookeeper
+* Nacos
+* Redis
+
+同时也支持 Kubernetes、Mesh 体系的服务发现。
+
+另外,[Dubbo 扩展生态](https://github.com/apache/dubbo-spi-extensions) 还提供了 Consul、Eureka、Etcd 等注册中心扩展实现。也欢迎通过 [registry spi 扩展](../../spi./) 贡献更多的注册中心实现到 Dubbo 生态。
+
+Dubbo 还支持在一个应用中 [指定多个注册中心](../multiple-registry/),并将服务根据注册中心分组,这样做使得服务分组管理或服务迁移变得更容易。
+
+
+
diff --git a/content/zh/docs3-building/java-sdk/reference-manual/registry/redis/_index.md b/content/zh/docs3-building/java-sdk/reference-manual/registry/redis/_index.md
index 34200f8139..3f6ce57611 100644
--- a/content/zh/docs3-building/java-sdk/reference-manual/registry/redis/_index.md
+++ b/content/zh/docs3-building/java-sdk/reference-manual/registry/redis/_index.md
@@ -2,6 +2,73 @@
 type: docs
 title: "Redis"
 linkTitle: "Redis"
-weight: 4
-description: ""
+weight: 5
+description: "Redis 注册中心的基本使用和工作原理。"
 ---
+
+## 前置条件
+* 了解 [Dubbo 基本开发步骤](../../../quick-start/spring-boot/)
+* 安装并启动 [Redis](http://redis.io) 服务
+
+## 使用说明
+
+```xml
+<dubbo:registry address="redis://10.20.153.10:6379" />
+```
+
+或
+
+```xml
+<dubbo:registry address="redis://10.20.153.10:6379?backup=10.20.153.11:6379,10.20.153.12:6379" />
+```
+
+或
+
+```xml
+<dubbo:registry protocol="redis" address="10.20.153.10:6379" />
+```
+
+或
+
+```xml
+<dubbo:registry protocol="redis" address="10.20.153.10:6379,10.20.153.11:6379,10.20.153.12:6379" />
+```
+
+## 选项
+
+* 可通过 `<dubbo:registry group="dubbo" />` 设置 redis 中 key 的前缀,缺省为 `dubbo`。
+* 可通过 `<dubbo:registry cluster="replicate" />` 设置 redis 集群策略,缺省为 `failover`:
+    * `failover`: 只写入和读取任意一台,失败时重试另一台,需要服务器端自行配置数据同步
+    * `replicate`: 在客户端同时写入所有服务器,只读取单台,服务器端不需要同步,注册中心集群增大,性能压力也会更大
+
+
+## 工作原理
+
+基于 Redis [^1] 实现的注册中心。
+
+Redis 过期数据通过心跳的方式检测脏数据,服务器时间必须同步,并且对服务器有一定压力,否则过期检测会不准确
+
+![/user-guide/images/dubbo-redis-registry.jpg](/imgs/user/dubbo-redis-registry.jpg)
+
+使用 Redis 的 Key/Map 结构存储数据结构:
+
+* 主 Key 为服务名和类型
+* Map 中的 Key 为 URL 地址
+* Map 中的 Value 为过期时间,用于判断脏数据,脏数据由监控中心删除 [^3]
+
+使用 Redis 的 Publish/Subscribe 事件通知数据变更:
+
+* 通过事件的值区分事件类型:`register`, `unregister`, `subscribe`, `unsubscribe`
+* 普通消费者直接订阅指定服务提供者的 Key,只会收到指定服务的 `register`, `unregister` 事件
+* 监控中心通过 `psubscribe` 功能订阅 `/dubbo/*`,会收到所有服务的所有变更事件
+
+调用过程:
+
+0. 服务提供方启动时,向 `Key:/dubbo/com.foo.BarService/providers` 下,添加当前提供者的地址
+1. 并向 `Channel:/dubbo/com.foo.BarService/providers` 发送 `register` 事件
+2. 服务消费方启动时,从 `Channel:/dubbo/com.foo.BarService/providers` 订阅 `register` 和 `unregister` 事件
+3. 并向 `Key:/dubbo/com.foo.BarService/consumers` 下,添加当前消费者的地址
+4. 服务消费方收到 `register` 和 `unregister` 事件后,从 `Key:/dubbo/com.foo.BarService/providers` 下获取提供者地址列表
+5. 服务监控中心启动时,从 `Channel:/dubbo/*` 订阅 `register` 和 `unregister`,以及 `subscribe` 和`unsubsribe `事件
+6. 服务监控中心收到 `register` 和 `unregister` 事件后,从 `Key:/dubbo/com.foo.BarService/providers` 下获取提供者地址列表
+7. 服务监控中心收到 `subscribe` 和 `unsubsribe` 事件后,从 `Key:/dubbo/com.foo.BarService/consumers` 下获取消费者地址列表
diff --git a/content/zh/docs3-building/java-sdk/reference-manual/registry/redis/guide.md b/content/zh/docs3-building/java-sdk/reference-manual/registry/redis/guide.md
deleted file mode 100644
index 1966ea7a00..0000000000
--- a/content/zh/docs3-building/java-sdk/reference-manual/registry/redis/guide.md
+++ /dev/null
@@ -1,77 +0,0 @@
----
-type: docs
-title: "使用说明"
-linkTitle: "使用说明"
-weight: 2
----
-## 特性说明
-基于 Redis 实现的注册中心。 从 `2.1.0` 版本开始支持。
-
-[Redis](http://redis.io) 是一个高效的 KV 存储服务器。
-
-Redis 过期数据通过心跳的方式检测脏数据,服务器时间必须同步,并且对服务器有一定压力,否则过期检测会不准确。
-
-
-![/user-guide/images/dubbo-redis-registry.jpg](/imgs/user/dubbo-redis-registry.jpg)
-
-使用 Redis 的 Key/Map 结构存储数据结构:
-
-* 主 Key 为服务名和类型
-* Map 中的 Key 为 URL 地址
-* Map 中的 Value 为过期时间,用于判断脏数据,脏数据由监控中心删除
-
-使用 Redis 的 Publish/Subscribe 事件通知数据变更:
-
-* 通过事件的值区分事件类型:`register`, `unregister`, `subscribe`, `unsubscribe`
-* 普通消费者直接订阅指定服务提供者的 Key,只会收到指定服务的 `register`, `unregister` 事件
-* 监控中心通过 `psubscribe` 功能订阅 `/dubbo/*`,会收到所有服务的所有变更事件
-
-调用过程:
-
-0. 服务提供方启动时,向 `Key:/dubbo/com.foo.BarService/providers` 下,添加当前提供者的地址
-1. 并向 `Channel:/dubbo/com.foo.BarService/providers` 发送 `register` 事件
-2. 服务消费方启动时,从 `Channel:/dubbo/com.foo.BarService/providers` 订阅 `register` 和 `unregister` 事件
-3. 并向 `Key:/dubbo/com.foo.BarService/consumers` 下,添加当前消费者的地址
-4. 服务消费方收到 `register` 和 `unregister` 事件后,从 `Key:/dubbo/com.foo.BarService/providers` 下获取提供者地址列表
-5. 服务监控中心启动时,从 `Channel:/dubbo/*` 订阅 `register` 和 `unregister`,以及 `subscribe` 和`unsubsribe `事件
-6. 服务监控中心收到 `register` 和 `unregister` 事件后,从 `Key:/dubbo/com.foo.BarService/providers` 下获取提供者地址列表
-7. 服务监控中心收到 `subscribe` 和 `unsubsribe` 事件后,从 `Key:/dubbo/com.foo.BarService/consumers` 下获取消费者地址列表
-
-#### 可靠性声明
-阿里内部并没有采用 Redis 做为注册中心,而是使用自己实现的基于数据库的注册中心,即:Redis 注册中心并没有在阿里内部长时间运行的可靠性保障,此 Redis 桥接实现只为开源版本提供,其可靠性依赖于 Redis 本身的可靠性。
-
-
-#### 安装
-[Redis安装手册]( ../../../admin/install/redis.md),只需搭一个原生的 Redis 服务器,并将 [Quick Start](../../preface/usage.md) 中 Provider 和 Consumer 里的 `conf/dubbo.properties` 中的 `dubbo.registry.address` 的值改为 `redis://127.0.0.1:6379` 即可使用。
-
-#### 选项
-
-* 可通过 `<dubbo:registry group="dubbo" />` 设置 redis 中 key 的前缀,缺省为 `dubbo`。
-* 可通过 `<dubbo:registry cluster="replicate" />` 设置 redis 集群策略,缺省为 `failover`:
-  * `failover`: 只写入和读取任意一台,失败时重试另一台,需要服务器端自行配置数据同步
-  * `replicate`: 在客户端同时写入所有服务器,只读取单台,服务器端不需要同步,注册中心集群增大,性能压力也会更大
-
-## 使用场景
-缓存,任务队列,分布式锁,数据过期处理等
-## 使用方式
-```xml
-<dubbo:registry address="redis://10.20.153.10:6379" />
-```
-
-或
-
-```xml
-<dubbo:registry address="redis://10.20.153.10:6379?backup=10.20.153.11:6379,10.20.153.12:6379" />
-```
-
-或
-
-```xml
-<dubbo:registry protocol="redis" address="10.20.153.10:6379" />
-```
-
-或
-
-```xml
-<dubbo:registry protocol="redis" address="10.20.153.10:6379,10.20.153.11:6379,10.20.153.12:6379" />
-```
diff --git a/content/zh/docs3-building/java-sdk/reference-manual/registry/redis/overview.md b/content/zh/docs3-building/java-sdk/reference-manual/registry/redis/overview.md
deleted file mode 100644
index c087fc3b6f..0000000000
--- a/content/zh/docs3-building/java-sdk/reference-manual/registry/redis/overview.md
+++ /dev/null
@@ -1,6 +0,0 @@
----
-type: docs
-title: "概述"
-linkTitle: "概述"
-weight: 1
----
diff --git a/content/zh/docs3-building/java-sdk/reference-manual/registry/zookeeper/_index.md b/content/zh/docs3-building/java-sdk/reference-manual/registry/zookeeper/_index.md
index 2864a6f0b1..8b14eecaae 100644
--- a/content/zh/docs3-building/java-sdk/reference-manual/registry/zookeeper/_index.md
+++ b/content/zh/docs3-building/java-sdk/reference-manual/registry/zookeeper/_index.md
@@ -3,5 +3,132 @@ type: docs
 title: "Zookeeper"
 linkTitle: "Zookeeper"
 weight: 2
-description: ""
+description: "Zookeeper 注册中心的基本使用和工作原理。"
 ---
+
+## 1 前置条件
+* 了解 [Dubbo 基本开发步骤](../../../quick-start/spring-boot/)
+* 安装并启动 [Zookeeper](https://zookeeper.apache.org/)
+
+## 2 使用说明
+在此查看[完整示例代码](https://github.com/apache/dubbo-samples/tree/master/dubbo-samples-zookeeper)
+
+### 2.1 增加 Maven 依赖
+```xml
+<properties>
+    <dubbo.version>3.0.8</dubbo.version>
+</properties>
+
+<dependencies>
+    <dependency>
+        <groupId>org.apache.dubbo</groupId>
+        <artifactId>dubbo</artifactId>
+        <version>${dubbo.version}</version>
+    </dependency>
+    <!-- This dependency helps to introduce Curator and Zookeeper dependencies that are necessary for Dubbo to work with zookeeper as transitive dependencies  -->
+    <dependency>
+        <groupId>org.apache.dubbo</groupId>
+        <artifactId>dubbo-dependencies-zookeeper</artifactId>
+        <version>${dubbo.version}</version>
+        <type>pom</type>
+    </dependency>
+</dependencies>
+```
+
+`dubbo-dependencies-zookeeper` 将自动为应用增加 Zookeeper 相关客户端的依赖,减少用户使用 Zookeeper 成本,如使用中遇到版本兼容问题,用户也可以不使用 `dubbo-dependencies-zookeeper`,而是自行添加 Curator、Zookeeper Client 等依赖。
+
+由于 Dubbo 使用 Curator 作为与 Zookeeper Server 交互的编程客户端,因此,要特别注意 Zookeeper Server 与 Dubbo 版本依赖的兼容性
+
+|Zookeeper Server 版本|Dubbo 版本|Dubbo Zookeeper 依赖包|说明|
+|-----|-----|-----|-----|
+|3.4.x 及以下|3.0.x 及以上|dubbo-dependencies-zookeeper|传递依赖 Curator 4.x 、Zookeeper 3.4.x|
+|3.5.x 及以上|3.0.x 及以上|dubbo-dependencies-zookeeper-curator5|传递依赖 Curator 5.x 、Zookeeper 3.7.x|
+|3.4.x 及以上|2.7.x 及以下|dubbo-dependencies-zookeeper|传递依赖 Curator 4.x 、Zookeeper 3.4.x|
+|3.5.x 及以上|2.7.x 及以下|无|须自行添加 Curator、Zookeeper 等相关客户端依赖|
+
+### 2.2 配置并启用 Zookeeper
+```yaml
+# application.yml
+dubbo
+ registry
+   address: zookeeper://localhost:2181
+```
+或
+```properties
+# dubbo.properties
+dubbo.registry.address=zookeeper://localhost:2181
+```
+或
+```xml
+<dubbo:registry address="zookeeper://localhost:2181" />
+```
+
+`address` 是启用 zookeeper 注册中心唯一必须指定的属性,而在生产环境下,`address` 通常被指定为集群地址,如
+
+`address=zookeeper://10.20.153.10:2181?backup=10.20.153.11:2181,10.20.153.12:2181`
+
+protocol 与 address 分开配置的模式也可以,如
+
+`<dubbo:registry protocol="zookeeper" address="10.20.153.10:2181,10.20.153.11:2181,10.20.153.12:2181" />`
+
+## 3 高级配置
+### 3.1 认证与鉴权
+
+如果 Zookeeper 开启认证,Dubbo 支持指定 username、password 的方式传入身份标识。
+
+```yaml
+# application.yml
+dubbo
+ registry
+   address: zookeeper://localhost:2181
+   username: hello
+   password: 1234
+```
+
+也可以直接将参数扩展在 address 上 `address=zookeeper://hello:1234@localhost:2181`
+
+### 3.2 分组隔离
+通过指定 `group` 属性,可以在同一个 Zookeeper 集群内实现微服务地址的逻辑隔离。比如可以在一套集群内隔离出多套开发环境,在地址发现层面实现隔离。
+
+```yaml
+# application.yml
+dubbo
+ registry
+   address: zookeeper://localhost:2181
+   group: daily1
+```
+### 3.3 其他扩展配置
+配置连接、会话过期时间
+```yaml
+# application.yml
+dubbo
+ registry
+   address: zookeeper://localhost:2181
+   timeout: 30 * 1000* # 连接超时时间,默认 30s
+   session: 60 * 1000* # 会话超时时间,默认 60s
+```
+
+Zookeeper 注册中心还支持其他一些控制参数,具体可参见[Registry 配置项手册](../../config/properties#registry)
+
+## 4 工作原理
+### 4.1 Dubbo2 节点结构
+
+![/user-guide/images/zookeeper.jpg](/imgs/user/zookeeper.jpg)
+
+流程:
+* 服务提供者启动时:  向 `/dubbo/com.foo.BarService/providers` 目录下写入自己的 URL 地址。
+* 服务消费者启动时: 订阅 `/dubbo/com.foo.BarService/providers` 目录下的提供者 URL 地址。并向 `/dubbo/com.foo.BarService/consumers` 目录下写入自己的 URL 地址
+* 监控中心启动时:   订阅 `/dubbo/com.foo.BarService` 目录下的所有提供者和消费者 URL 地址。
+
+支持以下功能:
+
+* 当提供者出现断电等异常停机时,注册中心能自动删除提供者信息
+* 当注册中心重启时,能自动恢复注册数据,以及订阅请求
+* 当会话过期时,能自动恢复注册数据,以及订阅请求
+* 当设置 `<dubbo:registry check="false" />` 时,记录失败注册和订阅请求,后台定时重试
+* 可通过 `<dubbo:registry username="admin" password="1234" />` 设置 zookeeper 登录信息
+* 可通过 `<dubbo:registry group="dubbo" />` 设置 zookeeper 的根节点,不配置将使用默认的根节点。
+* 支持 `*` 号通配符 `<dubbo:reference group="*" version="*" />`,可订阅服务的所有分组和所有版本的提供者
+
+### 4.2 Dubbo3 节点结构
+
diff --git a/content/zh/docs3-building/java-sdk/reference-manual/registry/zookeeper/guide.md b/content/zh/docs3-building/java-sdk/reference-manual/registry/zookeeper/guide.md
deleted file mode 100644
index 4411ab12ce..0000000000
--- a/content/zh/docs3-building/java-sdk/reference-manual/registry/zookeeper/guide.md
+++ /dev/null
@@ -1,180 +0,0 @@
----
-type: docs
-title: "使用说明"
-linkTitle: "使用说明"
-weight: 2
----
-## 特性说明
-[Zookeeper](http://zookeeper.apache.org) 是 Apache Hadoop 的子项目,是一个树型的目录服务,支持变更推送,适合作为 Dubbo 服务的注册中心,工业强度较高,可用于生产环境,并推荐使用。
-
-建议使用 `2.3.3` 以上版本的 zookeeper 注册中心客户端。
-
-![/user-guide/images/zookeeper.jpg](/imgs/user/zookeeper.jpg)
-
-流程:
-* 服务提供者启动时:  向 `/dubbo/com.foo.BarService/providers` 目录下写入自己的 URL 地址。
-* 服务消费者启动时: 订阅 `/dubbo/com.foo.BarService/providers` 目录下的提供者 URL 地址。并向 `/dubbo/com.foo.BarService/consumers` 目录下写入自己的 URL 地址
-* 监控中心启动时:   订阅 `/dubbo/com.foo.BarService` 目录下的所有提供者和消费者 URL 地址。
-
-支持以下功能:
-
-* 当提供者出现断电等异常停机时,注册中心能自动删除提供者信息
-* 当注册中心重启时,能自动恢复注册数据,以及订阅请求
-* 当会话过期时,能自动恢复注册数据,以及订阅请求
-* 当设置 `<dubbo:registry check="false" />` 时,记录失败注册和订阅请求,后台定时重试
-* 可通过 `<dubbo:registry username="admin" password="1234" />` 设置 zookeeper 登录信息
-* 可通过 `<dubbo:registry group="dubbo" />` 设置 zookeeper 的根节点,不配置将使用默认的根节点。
-* 支持 `*` 号通配符 `<dubbo:reference group="*" version="*" />`,可订阅服务的所有分组和所有版本的提供者
-
-#### 安装
-
-[Zookeeper安装手册](../../../docsv2.7/admin/install/zookeeper),只需搭一个原生的 Zookeeper 服务器,并将 [Quick Start](../../../quick-start) 中 Provider 和 Consumer 里的 `conf/dubbo.properties` 中的 `dubbo.registry.address` 的值改为 `zookeeper://127.0.0.1:2181` 即可使用。
-
-声明类型:
-- 可靠性
-- 兼容性
-
-#### 可靠性声明
-
-阿里内部并没有采用 Zookeeper 做为注册中心,而是使用自己实现的基于数据库的注册中心,即:Zookeeper 注册中心并没有在阿里内部长时间运行的可靠性保障,此 Zookeeper 桥接实现只为开源版本提供,其可靠性依赖于 Zookeeper 本身的可靠性。
-
-#### 兼容性声明
-
-因 `2.0.8` 最初设计的 zookeeper 存储结构不能扩充不同类型的数据,`2.0.9` 版本做了调整,所以不兼容,需全部改用 `2.0.9` 版本才行,以后的版本会保持兼容 `2.0.9`。`2.2.0` 版本改为基于 zkclient 实现,需增加 zkclient 的依赖包,`2.3.0` 版本增加了基于 curator 的实现,作为可选实现策略。
-
-## 使用场景
-
-数据发布/订阅,负载均衡,分布式协调/通知,分布式锁,分布式队列,集群管理等
-
-## 使用方式
-
- provider 和 consumer 中增加 zookeeper 客户端 jar 包依赖或直接[下载](https://repo1.maven.org/maven2/org/apache/zookeeper/zookeeper)。
-
-在 provider 和 consumer 中增加 zookeeper 客户端 jar 包依赖:
-```xml
-<dependency>
-    <groupId>org.apache.zookeeper</groupId>
-    <artifactId>zookeeper</artifactId>
-    <version>3.8.0</version>
-</dependency>
-```
-#### 说明
-Dubbo 支持 zkclient 和 curator 两种 Zookeeper 客户端实现:
-
-**在2.7.x的版本中已经移除了zkclient的实现,如果要使用zkclient客户端,需要自行拓展**
-
-客户端:
-- curator 客户端
-- zkclient 客户端
-
-#### 使用 zkclient 客户端
-
-从 `2.2.0` 版本开始缺省为 zkclient 实现,以提升 zookeeper 客户端的健壮性。[zkclient](https://github.com/sgroschupf/zkclient) 是 Datameer 开源的一个 Zookeeper 客户端实现。
-
-缺省配置:
-
-```xml
-<dubbo:registry ... client="zkclient" />
-```
-
-或:
-
-```sh
-dubbo.registry.client=zkclient
-```
-
-或:
-
-```sh
-zookeeper://10.20.153.10:2181?client=zkclient
-```
-
-需依赖或直接[下载](https://repo1.maven.org/maven2/com/github/sgroschupf/zkclient):
-
-```xml
-<dependency>
-    <groupId>com.github.sgroschupf</groupId>
-    <artifactId>zkclient</artifactId>
-    <version>0.11</version>
-</dependency>
-```
-#### 使用 curator 客户端
-
-从 `2.3.0` 版本开始支持可选 curator 实现。[Curator](https://github.com/apache/curator) 是 Netflix 开源的一个 Zookeeper 客户端实现。
-
-如果需要改为 curator 实现,请配置:
-
-```xml
-<dubbo:registry ... client="curator" />
-```
-
-或:
-
-```sh
-dubbo.registry.client=curator
-```
-
-或:
-
-```sh
-zookeeper://10.20.153.10:2181?client=curator
-```
-
-需依赖或直接下载[curator-framework](https://repo1.maven.org/maven2/org/apache/curator/curator-framework/), [curator-recipes](https://repo1.maven.org/maven2/org/apache/curator/curator-recipes/):
-
-```xml
-<properties>
-    <curator.version>5.2.1</curator.version>
-</properties>
-
-<dependency>
-    <groupId>org.apache.curator</groupId>
-    <artifactId>curator-framework</artifactId>
-    <version>${curator.version}</version>
-</dependency>
-<dependency>
-    <groupId>org.apache.curator</groupId>
-    <artifactId>curator-recipes</artifactId>
-    <version>${curator.version}</version>
-</dependency>
-<dependency>
-    <groupId>org.apache.curator</groupId>
-    <artifactId>curator-x-discovery</artifactId>
-    <version>${curator.version}</version>
-</dependency>
-```
-Zookeeper 配置
-- 单机配置
-- 集群配置
-
-Zookeeper 单机配置:
-
-```xml
-<dubbo:registry address="zookeeper://10.20.153.10:2181" />
-```
-
-或:
-
-```xml
-<dubbo:registry protocol="zookeeper" address="10.20.153.10:2181" />
-```
-
-Zookeeper 集群配置:
-
-```xml
-
-<dubbo:registry address="zookeeper://10.20.153.10:2181?backup=10.20.153.11:2181,10.20.153.12:2181" />
-```
-
-或:
-
-```xml
-<dubbo:registry protocol="zookeeper" address="10.20.153.10:2181,10.20.153.11:2181,10.20.153.12:2181" />
-```
-
-同一 Zookeeper 分成多组注册中心:
-
-```xml
-<dubbo:registry id="chinaRegistry" protocol="zookeeper" address="10.20.153.10:2181" group="china" />
-<dubbo:registry id="intlRegistry" protocol="zookeeper" address="10.20.153.10:2181" group="intl" />
-```
diff --git a/content/zh/docs3-building/java-sdk/reference-manual/registry/zookeeper/overview.md b/content/zh/docs3-building/java-sdk/reference-manual/registry/zookeeper/overview.md
deleted file mode 100644
index c087fc3b6f..0000000000
--- a/content/zh/docs3-building/java-sdk/reference-manual/registry/zookeeper/overview.md
+++ /dev/null
@@ -1,6 +0,0 @@
----
-type: docs
-title: "概述"
-linkTitle: "概述"
-weight: 1
----
diff --git a/content/zh/docs3-building/java-sdk/reference-manual/spi/_index.md b/content/zh/docs3-building/java-sdk/reference-manual/spi/_index.md
index 4201d07472..d444ad54af 100755
--- a/content/zh/docs3-building/java-sdk/reference-manual/spi/_index.md
+++ b/content/zh/docs3-building/java-sdk/reference-manual/spi/_index.md
@@ -3,6 +3,6 @@
 type: docs
 title: "SPI扩展使用手册"
 linkTitle: "SPI扩展使用手册"
-weight: 2
+weight: 9
 ---
 
diff --git a/static/imgs/v3/registry/aggregation.png b/static/imgs/v3/registry/aggregation.png
new file mode 100644
index 0000000000..d64a164ecd
Binary files /dev/null and b/static/imgs/v3/registry/aggregation.png differ
diff --git a/static/imgs/v3/registry/no-aggregation.png b/static/imgs/v3/registry/no-aggregation.png
new file mode 100644
index 0000000000..e749852690
Binary files /dev/null and b/static/imgs/v3/registry/no-aggregation.png differ