You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dubbo.apache.org by la...@apache.org on 2021/08/21 07:18:09 UTC

[dubbo-go-samples] branch config-enhance updated: Config enhance v3 (#203)

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

laurence pushed a commit to branch config-enhance
in repository https://gitbox.apache.org/repos/asf/dubbo-go-samples.git


The following commit(s) were added to refs/heads/config-enhance by this push:
     new 21b18de  Config enhance v3 (#203)
21b18de is described below

commit 21b18deb612a1c30643fb6a133ee18c938f72018
Author: Laurence <45...@users.noreply.github.com>
AuthorDate: Sat Aug 21 15:18:02 2021 +0800

    Config enhance v3 (#203)
    
    * fix
    
    * fix: init helloworld and registry zk
    
    * fix: change general to rpc
---
 .gitignore                                         |   4 +-
 .run/helloworld-go-client.run.xml                  |   7 +-
 ...client.run.xml => helloworld-go-server.run.xml} |   9 +-
 .run/registry/registry-zookeeper-go-client.run.xml |   2 +-
 .run/registry/registry-zookeeper-go-server.run.xml |   2 +-
 .run/triple-codec-extension-client.run.xml         |   4 +-
 .run/triple-codec-extension-server.run.xml         |   4 +-
 .run/triple-msgpack-client.run.xml                 |   4 +-
 .run/triple-msgpack-server.run.xml                 |   4 +-
 .run/triple-server.run.xml                         |   4 +-
 .run/triple/gojava-go-client.run.xml               |   8 +-
 .run/triple/gojava-go-server.run.xml               |   8 +-
 .run/triple/triple-stream-client.run.xml           |   8 +-
 .run/triple/triple-unary-client.run.xml            |   8 +-
 .run/triple/triplego-hessian-client.run.xml        |   4 +-
 .run/triple/triplego-hessian-server.run.xml        |   4 +-
 api/generate.sh                                    |   4 +
 .../helloworld.pb.go => api/samples_api.pb.go      | 219 ++++++++++-----------
 .../helloworld.proto => api/samples_api.proto      |   2 +-
 async/README.md                                    |  46 -----
 async/README_zh.md                                 |  45 -----
 async/go-client/cmd/client.go                      |  68 -------
 async/go-client/conf/client.yml                    |  61 ------
 async/go-client/conf/log.yml                       |  28 ---
 async/go-client/pkg/user.go                        |  79 --------
 async/go-server/cmd/server.go                      |  79 --------
 async/go-server/conf/client.yml                    |  61 ------
 async/go-server/conf/log.yml                       |  28 ---
 async/go-server/conf/server.yml                    |  55 ------
 async/go-server/docker/docker-compose.yml          |   9 -
 async/go-server/docker/docker-health-check.sh      |  10 -
 async/go-server/pkg/user.go                        |  62 ------
 async/go-server/tests/integration/main_test.go     |  89 ---------
 .../tests/integration/userprovider_test.go         |  54 -----
 attachment/README.md                               |  35 ----
 attachment/README_zh.md                            |  37 ----
 attachment/go-client/cmd/client.go                 |  69 -------
 attachment/go-client/conf/client.yml               |  59 ------
 attachment/go-client/conf/log.yml                  |  27 ---
 attachment/go-client/pkg/user.go                   |  42 ----
 attachment/go-server/cmd/server.go                 |  80 --------
 attachment/go-server/conf/client.yml               |  59 ------
 attachment/go-server/conf/log.yml                  |  27 ---
 attachment/go-server/conf/server.yml               |  55 ------
 attachment/go-server/docker/docker-compose.yml     |   9 -
 attachment/go-server/docker/docker-health-check.sh |  10 -
 attachment/go-server/pkg/user.go                   |  71 -------
 .../go-server/tests/integration/main_test.go       |  71 -------
 .../tests/integration/userprovider_test.go         |  49 -----
 .../stream-client/dubbogo-client/cmd/env.sh        |   2 -
 .../dubbo3/pb/dubbogo-java/protobuf/protobuf.mk    |  26 ---
 generic/README.md                                  |   6 +-
 generic/README_zh.md                               |   6 +-
 go.mod                                             |  11 +-
 go.sum                                             |  15 +-
 helloworld/README.md                               |  11 +-
 helloworld/README_zh.md                            |  11 +-
 helloworld/go-client/cmd/client.go                 |  35 ++--
 .../go-client/conf/{client.yml => dubbogo.yml}     |   2 +-
 helloworld/go-server/cmd/server.go                 |  26 ++-
 .../go-server/conf/{server.yml => dubbogo.yml}     |   2 +-
 helloworld/go-server/pkg/greeter.go                |  45 -----
 helloworld/java-client/pom.xml                     |   2 +-
 helloworld/java-server/pom.xml                     |   2 +-
 .../helloworld}/docker/docker-compose.yml          |   0
 .../helloworld}/tests/integration/main_test.go     |   2 +-
 .../tests/integration/userprovider_test.go         |   2 +-
 .../registry/zookeeper}/docker/docker-compose.yml  |   0
 .../zookeeper}/docker/docker-health-check.sh       |   0
 .../zookeeper}/tests/integration/main_test.go      |   0
 .../tests/integration/userprovider_test.go         |   0
 logger/go-server/cmd/server.go                     |   2 +-
 registry/zookeeper/go-client/cmd/client.go         |  39 ++--
 registry/zookeeper/go-client/conf/application.yml  |  20 --
 .../zookeeper/go-client/conf/dubbogo.yml           |   2 +-
 registry/zookeeper/go-client/pkg/user.go           |  48 -----
 registry/zookeeper/go-server/cmd/server.go         |  28 +--
 .../zookeeper/go-server/conf/dubbogo.yml           |   2 +-
 registry/zookeeper/go-server/conf/server.yml       |  24 ---
 registry/zookeeper/go-server/pkg/user.go           |  57 ------
 {general => rpc}/dubbo/go-client/cmd/client.go     |   0
 {general => rpc}/dubbo/go-client/conf/client.yml   |   0
 .../go-server => rpc/dubbo/go-client}/conf/log.yml |   0
 {general => rpc}/dubbo/go-client/pkg/user.go       |   0
 {general => rpc}/dubbo/go-server/cmd/server.go     |   0
 {general => rpc}/dubbo/go-server/conf/client.yml   |   0
 .../go-client => rpc/dubbo/go-server}/conf/log.yml |   0
 {general => rpc}/dubbo/go-server/conf/server.yml   |   0
 .../dubbo}/go-server/docker/docker-compose.yml     |   0
 .../dubbo}/go-server/docker/docker-health-check.sh |   0
 {general => rpc}/dubbo/go-server/pkg/user.go       |   0
 .../dubbo/go-server/pkg/user_provider.go           |   0
 .../dubbo/go-server/tests/integration/main_test.go |   0
 .../tests/integration/userprovider_test.go         |   0
 .../dubbo/java-client}/2.6/pom.xml                 |   0
 .../src/main/java/org/apache/dubbo/Consumer.java   |   0
 .../src/main/java/org/apache/dubbo/Gender.java     |   0
 .../2.6}/src/main/java/org/apache/dubbo/User.java  |   0
 .../main/java/org/apache/dubbo/UserProvider.java   |   0
 .../resources/META-INF/spring/dubbo.consumer.xml   |   0
 .../2.6}/src/main/resources/log4j.properties       |   0
 .../dubbo/java-client}/2.7/pom.xml                 |   0
 .../src/main/java/org/apache/dubbo/Consumer.java   |   0
 .../src/main/java/org/apache/dubbo/Gender.java     |   0
 .../2.7}/src/main/java/org/apache/dubbo/User.java  |   0
 .../main/java/org/apache/dubbo/UserProvider.java   |   0
 .../resources/META-INF/spring/dubbo.consumer.xml   |   0
 .../2.7/src/main/resources}/log4j.properties       |   0
 .../dubbo/java-server}/2.6/pom.xml                 |   0
 .../src/main/java/org/apache/dubbo/Gender.java     |   0
 .../src/main/java/org/apache/dubbo/Provider.java   |   0
 .../src/main/java/org/apache/dubbo/Response.java   |   0
 .../2.6}/src/main/java/org/apache/dubbo/User.java  |   0
 .../main/java/org/apache/dubbo/UserProvider.java   |   0
 .../org/apache/dubbo/UserProviderAnotherImpl.java  |   0
 .../java/org/apache/dubbo/UserProviderImpl.java    |   0
 .../resources/META-INF/spring/dubbo.provider.xml   |   0
 .../2.6}/src/main/resources/log4j.properties       |   0
 .../dubbo/java-server}/2.7/pom.xml                 |   0
 .../src/main/java/org/apache/dubbo/Gender.java     |   0
 .../src/main/java/org/apache/dubbo/Provider.java   |   0
 .../src/main/java/org/apache/dubbo/Response.java   |   0
 .../2.7}/src/main/java/org/apache/dubbo/User.java  |   0
 .../main/java/org/apache/dubbo/UserProvider.java   |   0
 .../org/apache/dubbo/UserProviderAnotherImpl.java  |   0
 .../java/org/apache/dubbo/UserProviderImpl.java    |   0
 .../resources/META-INF/spring/dubbo.provider.xml   |   0
 .../2.7/src/main/resources}/log4j.properties       |   0
 {general => rpc}/dubbo3/README.md                  |   6 +-
 {general => rpc}/dubbo3/README_zh.md               |   6 +-
 .../dubbo3/codec-extension/go-client/cmd/client.go |   0
 .../codec-extension/go-client}/codec/codec.go      |   0
 .../codec-extension/go-client/conf/client.yml      |   0
 .../dubbo3/codec-extension/go-client}/conf/log.yml |   0
 .../dubbo3/codec-extension}/go-client/pkg/hello.go |   0
 .../dubbo3/codec-extension/go-server/cmd/server.go |   0
 .../codec-extension/go-server}/codec/codec.go      |   0
 .../codec-extension/go-server/conf/client.yml      |   0
 .../dubbo3/codec-extension/go-server}/conf/log.yml |   0
 .../codec-extension/go-server/conf/server.yml      |   0
 .../go-server}/docker/docker-compose.yml           |   0
 .../go-server}/docker/docker-health-check.sh       |   0
 .../codec-extension/go-server/pkg/greeter.go       |   0
 .../go-server/tests/integration/codec.go           |   0
 .../go-server/tests/integration/main_test.go       |   0
 .../tests/integration/userprovider_test.go         |   0
 {general => rpc}/dubbo3/hessian2/README.md         |   2 +-
 {general => rpc}/dubbo3/hessian2/README_zh.md      |   0
 .../dubbo3/hessian2/go-client/cmd/client.go        |   0
 .../dubbo3/hessian2/go-client/conf/client.yml      |   0
 .../dubbo3/hessian2/go-client}/conf/log.yml        |   0
 .../dubbo3/hessian2/go-client/pkg/hello.go         |   0
 .../dubbo3/hessian2/go-server/cmd/server.go        |   0
 .../dubbo3/hessian2/go-server/conf/client.yml      |   0
 .../dubbo3/hessian2}/go-server/conf/log.yml        |   0
 .../dubbo3/hessian2/go-server/conf/server.yml      |   0
 .../hessian2}/go-server/docker/docker-compose.yml  |   0
 .../go-server/docker/docker-health-check.sh        |   0
 .../dubbo3/hessian2/go-server/pkg/greeter.go       |   0
 .../go-server/tests/integration/main_test.go       |   0
 .../tests/integration/userprovider_test.go         |   0
 .../org/apache/dubbo/sample/hello/Helloworld.java  |   0
 .../dubbo3/hessian2/java-client/pom.xml            |   0
 .../dubbo3/hessian2}/java-client/run.sh            |   0
 .../com/apache/dubbo/sample/basic/ApiConsumer.java |   0
 .../com/apache/dubbo/sample/basic/IGreeter.java    |   0
 .../java/com/apache/dubbo/sample/basic/User.java   |   0
 .../java-client}/src/main/proto/helloworld.proto   |   0
 .../src/main/resources/log4j.properties            |   0
 .../org/apache/dubbo/sample/hello/Helloworld.java  |   0
 .../dubbo3/hessian2/java-server/pom.xml            |   0
 .../dubbo3/hessian2}/java-server/run.sh            |   0
 .../com/apache/dubbo/sample/basic/ApiProvider.java |   0
 .../com/apache/dubbo/sample/basic/IGreeter.java    |   0
 .../apache/dubbo/sample/basic/IGreeter1Impl.java   |   0
 .../java/com/apache/dubbo/sample/basic/User.java   |   0
 .../java-server}/src/main/proto/helloworld.proto   |   0
 .../src/main/resources/log4j.properties            |   0
 .../dubbo3/msgpack/go-client/cmd/client.go         |   0
 .../dubbo3/msgpack/go-client/conf/client.yml       |   0
 .../dubbo3/msgpack/go-client/conf/log.yml          |   0
 .../dubbo3/msgpack}/go-client/pkg/hello.go         |   0
 .../dubbo3/msgpack/go-server/cmd/server.go         |   0
 .../dubbo3/msgpack/go-server/conf/client.yml       |   0
 .../dubbo3/msgpack}/go-server/conf/log.yml         |   0
 .../dubbo3/msgpack/go-server/conf/server.yml       |   0
 .../msgpack/go-server}/docker/docker-compose.yml   |   0
 .../go-server/docker/docker-health-check.sh        |   0
 .../dubbo3/msgpack/go-server/pkg/greeter.go        |   0
 .../go-server/tests/integration/main_test.go       |   0
 .../tests/integration/userprovider_test.go         |   0
 {general => rpc}/dubbo3/pb/dubbogo-grpc/README.md  |  16 +-
 .../dubbo3/pb/dubbogo-grpc/README_zh.md            |  12 +-
 .../dubbogo-grpc/protobuf/dubbo3/helloworld.pb.go  |   0
 .../dubbogo-grpc/protobuf/dubbo3/helloworld.proto  |   0
 .../pb/dubbogo-grpc/protobuf/dubbo3/protobuf.mk    |   0
 .../pb/dubbogo-grpc/protobuf/grpc/helloworld.pb.go |   0
 .../pb/dubbogo-grpc/protobuf/grpc/helloworld.proto |   0
 .../server/dubbogo-server/cmd/server.go            |   0
 .../server/dubbogo-server/conf/client.yml          |   0
 .../server/dubbogo-server}/conf/log.yml            |   0
 .../server/dubbogo-server/conf/server.yml          |   0
 .../dubbogo-server}/docker/docker-compose.yml      |   0
 .../dubbogo-server}/docker/docker-health-check.sh  |   0
 .../server/dubbogo-server/pkg/greeter.go           |   0
 .../integration/grpc_test_proto/helloworld.pb.go   |   0
 .../dubbogo-server/tests/integration/main_test.go  |   0
 .../tests/integration/userprovider_test.go         |   0
 .../pb/dubbogo-grpc/server/grpcgo-server/main.go   |   0
 .../stream-client/dubbogo-client/cmd/client.go     |   0
 .../stream-client/dubbogo-client}/cmd/env.sh       |   0
 .../stream-client/dubbogo-client/conf/client.yml   |   0
 .../stream-client/dubbogo-client}/conf/log.yml     |   0
 .../stream-client/grpcgo-client/main.go            |   0
 .../unary-client/dubbogo-client/cmd/client.go      |   0
 .../unary-client/dubbogo-client/conf/client.yml    |   0
 .../unary-client/dubbogo-client}/conf/log.yml      |   0
 .../unary-client/grpcgo-client/main.go             |   0
 {general => rpc}/dubbo3/pb/dubbogo-java/README.md  |   2 +-
 .../dubbo3/pb/dubbogo-java/README_zh.md            |   2 +-
 .../dubbo3/pb/dubbogo-java/go-client/cmd/client.go |   0
 .../dubbo3/pb/dubbogo-java/go-client/cmd/env.sh    |   0
 .../pb/dubbogo-java/go-client}/conf/client.yml     |   0
 .../dubbo3/pb/dubbogo-java/go-client}/conf/log.yml |   0
 .../dubbo3/pb/dubbogo-java/go-server/cmd/env.sh    |   0
 .../dubbo3/pb/dubbogo-java/go-server/cmd/server.go |   0
 .../pb/dubbogo-java/go-server}/conf/client.yml     |   0
 .../dubbo3/pb/dubbogo-java/go-server}/conf/log.yml |   0
 .../pb/dubbogo-java/go-server/conf/server.yml      |   0
 .../go-server/docker/docker-compose.yml            |   0
 .../pb/dubbogo-java/go-server/pkg/greeter.go       |   0
 .../go-server/tests/integration/main_test.go       |   0
 .../tests/integration/userprovider_test.go         |   0
 .../org/apache/dubbo/sample/hello/Helloworld.java  |  79 ++++++--
 .../dubbo3/pb/dubbogo-java/java-client/pom.xml     |   0
 .../dubbo3/pb/dubbogo-java}/java-client/run.sh     |   0
 .../com/apache/dubbo/sample/basic/ApiConsumer.java |   0
 .../com/apache/dubbo/sample/basic/IGreeter.java    |   0
 .../java-client}/src/main/proto/helloworld.proto   |   0
 .../src/main/resources/log4j.properties            |   0
 .../org/apache/dubbo/sample/hello/Helloworld.java  |  79 ++++++--
 .../dubbo3/pb/dubbogo-java/java-server/pom.xml     |   0
 .../dubbo3/pb/dubbogo-java}/java-server/run.sh     |   0
 .../com/apache/dubbo/sample/basic/ApiProvider.java |   0
 .../com/apache/dubbo/sample/basic/IGreeter.java    |   0
 .../apache/dubbo/sample/basic/IGreeter1Impl.java   |   0
 .../java-server}/src/main/proto/helloworld.proto   |   0
 .../src/main/resources/log4j.properties            |   0
 .../pb/dubbogo-java}/protobuf/helloworld.pb.go     |   0
 .../pb/dubbogo-java}/protobuf/helloworld.proto     |   0
 .../dubbo3/pb/dubbogo-java}/protobuf/protobuf.mk   |   0
 {general => rpc}/grpc/go-client/cmd/client.go      |   0
 {general => rpc}/grpc/go-client/conf/client.yml    |   0
 {general => rpc}/grpc/go-client/conf/log.yml       |   0
 {general => rpc}/grpc/go-server/cmd/server.go      |   0
 {general => rpc}/grpc/go-server/conf/client.yml    |   0
 {general => rpc}/grpc/go-server/conf/log.yml       |   0
 {general => rpc}/grpc/go-server/conf/server.yml    |   0
 .../grpc/go-server/docker/docker-compose.yml       |   0
 .../grpc}/go-server/docker/docker-health-check.sh  |   0
 {general => rpc}/grpc/go-server/pkg/greeter.go     |   0
 .../go-server/tests/integration/greeter_test.go    |   0
 .../grpc/go-server/tests/integration/main_test.go  |   0
 {general => rpc}/grpc/protobuf/helloworld.pb.go    |   0
 {general => rpc}/grpc/protobuf/helloworld.proto    |   0
 {general => rpc}/grpc/protobuf/protobuf.mk         |   0
 .../grpc/stream/go-client/app/Makefile             |   0
 .../grpc/stream/go-client/app/client.go            |   0
 .../grpc/stream/go-client}/app/helloworld.pb.go    |   0
 .../grpc/stream/go-client}/app/helloworld.proto    |   0
 .../grpc/stream/go-client/app}/version.go          |   0
 .../grpc/stream/go-client/assembly/bin/load.sh     |   0
 .../go-client/assembly/common/app.properties       |   0
 .../grpc/stream/go-client/assembly/common/build.sh |   0
 .../grpc/stream/go-client/assembly/linux/dev.sh    |   0
 .../stream/go-client/assembly/linux/release.sh     |   0
 .../grpc/stream/go-client/assembly/linux/test.sh   |   0
 .../grpc/stream/go-client/assembly/mac/dev.sh      |   0
 .../grpc/stream/go-client/assembly/mac/release.sh  |   0
 .../grpc/stream/go-client/assembly/mac/test.sh     |   0
 .../grpc/stream/go-client/assembly/windows/dev.sh  |   0
 .../stream/go-client/assembly/windows/release.sh   |   0
 .../grpc/stream/go-client/assembly/windows/test.sh |   0
 .../grpc/stream/go-client/profiles/dev/client.yml  |   0
 .../grpc/stream/go-client/profiles/dev}/log.yml    |   0
 .../stream/go-client}/profiles/release/log.yml     |   0
 .../grpc/stream/go-client/profiles/test/client.yml |   0
 .../grpc/stream/go-client}/profiles/test/log.yml   |   0
 .../grpc/stream/go-server/app/greeter.go           |   0
 .../grpc/stream/go-server}/app/helloworld.pb.go    |   0
 .../grpc/stream/go-server}/app/helloworld.proto    |   0
 .../grpc/stream/go-server/app/server.go            |   0
 .../grpc/stream/go-server/app}/version.go          |   0
 .../grpc/stream/go-server/assembly/bin/load.sh     |   0
 .../go-server/assembly/common/app.properties       |   0
 .../grpc/stream/go-server/assembly/common/build.sh |   0
 .../grpc/stream/go-server/assembly/linux/dev.sh    |   0
 .../stream/go-server/assembly/linux/release.sh     |   0
 .../grpc/stream/go-server/assembly/linux/test.sh   |   0
 .../grpc/stream/go-server/assembly/mac/dev.sh      |   0
 .../grpc/stream/go-server/assembly/mac/release.sh  |   0
 .../grpc/stream/go-server/assembly/mac/test.sh     |   0
 .../grpc/stream/go-server/assembly/windows/dev.sh  |   0
 .../stream/go-server/assembly/windows/release.sh   |   0
 .../grpc/stream/go-server/assembly/windows/test.sh |   0
 .../grpc/stream/go-server/profiles/dev}/log.yml    |   0
 .../grpc/stream/go-server/profiles/dev/server.yml  |   0
 .../stream/go-server}/profiles/release/log.yml     |   0
 .../stream/go-server/profiles/release/server.yml   |   0
 .../grpc/stream/go-server}/profiles/test/log.yml   |   0
 .../grpc/stream/go-server/profiles/test/server.yml |   0
 {general => rpc}/jsonrpc/go-client/cmd/client.go   |   0
 {general => rpc}/jsonrpc/go-client/conf/client.yml |   0
 .../dev => rpc/jsonrpc/go-client/conf}/log.yml     |   0
 {general => rpc}/jsonrpc/go-client/pkg/user.go     |   0
 {general => rpc}/jsonrpc/go-server/cmd/server.go   |   0
 .../dev => rpc/jsonrpc/go-server/conf}/log.yml     |   0
 {general => rpc}/jsonrpc/go-server/conf/server.yml |   0
 {general => rpc}/jsonrpc/go-server/pkg/user.go     |   0
 .../jsonrpc/go-server/pkg/user_provider.go         |   0
 .../jsonrpc/go-server/pkg/user_provider1.go        |   0
 .../jsonrpc/go-server/pkg/user_provider2.go        |   0
 {general => rpc}/jsonrpc/java-client/build.sh      |   0
 {general => rpc}/jsonrpc/java-client/pom.xml       |   0
 .../java-client/src/main/assembly/assembly.xml     |   0
 .../src/main/assembly/conf}/dubbo.properties       |   0
 .../src/main/assembly/conf}/log4j.properties       |   0
 .../src/main/java/com/ikurento/user/Consumer.java  |   0
 .../src/main/java/com/ikurento/user/Gender.java    |   0
 .../src/main/java/com/ikurento/user/User.java      |   0
 .../main/java/com/ikurento/user/UserProvider.java  |   0
 .../resources/META-INF/spring/dubbo.consumer.xml   |   0
 .../src/main/resources/META-INF/spring/service.xml |   0
 .../src/main/resources}/dubbo.properties           |   0
 .../src/main/resources/log4j.properties            |   0
 {general => rpc}/jsonrpc/java-server/build.sh      |   0
 {general => rpc}/jsonrpc/java-server/pom.xml       |   0
 .../jsonrpc/java-server/script/debug.sh            |   0
 .../java-server/src/main/assembly/assembly.xml     |   0
 .../src/main/assembly/conf/dubbo.properties        |   0
 .../src/main/assembly/conf}/log4j.properties       |   0
 .../src/main/java/com/ikurento/user/Gender.java    |   0
 .../src/main/java/com/ikurento/user/Provider.java  |   0
 .../src/main/java/com/ikurento/user/Response.java  |   0
 .../src/main/java/com/ikurento/user/User.java      |   0
 .../main/java/com/ikurento/user/UserProvider.java  |   0
 .../com/ikurento/user/UserProviderAnotherImpl.java |   0
 .../java/com/ikurento/user/UserProviderImpl.java   |   0
 .../resources/META-INF/spring/dubbo.provider.xml   |   0
 .../src/main/resources/log4j.properties            |   0
 {general => rpc}/rest/README.md                    |   0
 {general => rpc}/rest/README_zh.md                 |   0
 {general => rpc}/rest/go-client/cmd/client.go      |   0
 .../app => rpc/rest/go-client/cmd}/version.go      |   0
 {general => rpc}/rest/go-client/conf/client.yml    |   0
 .../go-server => rpc/rest/go-client}/conf/log.yml  |   0
 .../rest/go-client}/docker/docker-compose.yml      |   0
 {general => rpc}/rest/go-client/pkg/user.go        |   0
 {general => rpc}/rest/go-server/cmd/server.go      |   0
 .../app => rpc/rest/go-server/cmd}/version.go      |   0
 .../go-client => rpc/rest/go-server}/conf/log.yml  |   0
 {general => rpc}/rest/go-server/conf/server.yml    |   0
 .../rest}/go-server/docker/docker-compose.yml      |   0
 {general => rpc}/rest/go-server/pkg/user.go        |   0
 .../rest/go-server/pkg/user_provider.go            |   0
 .../rest/go-server/pkg/user_provider1.go           |   0
 .../rest/go-server/pkg/user_provider2.go           |   0
 367 files changed, 409 insertions(+), 2006 deletions(-)

diff --git a/.gitignore b/.gitignore
index 69d1d44..dc0df65 100644
--- a/.gitignore
+++ b/.gitignore
@@ -34,5 +34,5 @@ coverage.txt
 .settings/
 
 # java build
-general/dubbo3/pb/dubbogo-java/java-client/build/
-general/dubbo3/pb/dubbogo-java/java-server/build/
\ No newline at end of file
+general/dubbo3/api/dubbogo-java/java-client/build/
+general/dubbo3/api/dubbogo-java/java-server/build/
\ No newline at end of file
diff --git a/.run/helloworld-go-client.run.xml b/.run/helloworld-go-client.run.xml
index 3e9c396..05170fc 100644
--- a/.run/helloworld-go-client.run.xml
+++ b/.run/helloworld-go-client.run.xml
@@ -1,15 +1,14 @@
 <component name="ProjectRunConfigurationManager">
-  <configuration default="false" name="helloworld-go-client" type="GoApplicationRunConfiguration" factoryName="Go Application" singleton="false">
+  <configuration default="false" name="helloworld-go-client" type="GoApplicationRunConfiguration" factoryName="Go Application" folderName="v3config-helloworld" singleton="true">
     <module name="dubbo-go-samples" />
     <working_directory value="$PROJECT_DIR$" />
     <envs>
-      <env name="APP_LOG_CONF_FILE" value="$PROJECT_DIR$/helloworld/go-client/conf/log.yml" />
-      <env name="CONF_CONSUMER_FILE_PATH" value="$PROJECT_DIR$/helloworld/go-client/conf/client.yml" />
+      <env name="DUBBO_GO_CONFIG_PATH" value="$PROJECT_DIR$/helloworld/go-client/conf/dubbogo.yml" />
     </envs>
     <kind value="PACKAGE" />
-    <filePath value="$PROJECT_DIR$/helloworld/go-client/cmd/client.go" />
     <package value="github.com/apache/dubbo-go-samples/helloworld/go-client/cmd" />
     <directory value="$PROJECT_DIR$" />
+    <filePath value="$PROJECT_DIR$/helloworld/go-client/cmd/client.go" />
     <method v="2" />
   </configuration>
 </component>
\ No newline at end of file
diff --git a/.run/helloworld-go-client.run.xml b/.run/helloworld-go-server.run.xml
similarity index 51%
copy from .run/helloworld-go-client.run.xml
copy to .run/helloworld-go-server.run.xml
index 3e9c396..12a75d0 100644
--- a/.run/helloworld-go-client.run.xml
+++ b/.run/helloworld-go-server.run.xml
@@ -1,15 +1,14 @@
 <component name="ProjectRunConfigurationManager">
-  <configuration default="false" name="helloworld-go-client" type="GoApplicationRunConfiguration" factoryName="Go Application" singleton="false">
+  <configuration default="false" name="helloworld-go-server" type="GoApplicationRunConfiguration" factoryName="Go Application" folderName="v3config-helloworld" singleton="true">
     <module name="dubbo-go-samples" />
     <working_directory value="$PROJECT_DIR$" />
     <envs>
-      <env name="APP_LOG_CONF_FILE" value="$PROJECT_DIR$/helloworld/go-client/conf/log.yml" />
-      <env name="CONF_CONSUMER_FILE_PATH" value="$PROJECT_DIR$/helloworld/go-client/conf/client.yml" />
+      <env name="DUBBO_GO_CONFIG_PATH" value="$PROJECT_DIR$/helloworld/go-server/conf/dubbogo.yml" />
     </envs>
     <kind value="PACKAGE" />
-    <filePath value="$PROJECT_DIR$/helloworld/go-client/cmd/client.go" />
-    <package value="github.com/apache/dubbo-go-samples/helloworld/go-client/cmd" />
+    <package value="github.com/apache/dubbo-go-samples/helloworld/go-server/cmd" />
     <directory value="$PROJECT_DIR$" />
+    <filePath value="$PROJECT_DIR$/helloworld/go-client/cmd/client.go" />
     <method v="2" />
   </configuration>
 </component>
\ No newline at end of file
diff --git a/.run/registry/registry-zookeeper-go-client.run.xml b/.run/registry/registry-zookeeper-go-client.run.xml
index e9841d8..fbcd0d6 100644
--- a/.run/registry/registry-zookeeper-go-client.run.xml
+++ b/.run/registry/registry-zookeeper-go-client.run.xml
@@ -1,5 +1,5 @@
 <component name="ProjectRunConfigurationManager">
-  <configuration default="false" name="registry-zookeeper-go-client" type="GoApplicationRunConfiguration" factoryName="Go Application">
+  <configuration default="false" name="registry-zookeeper-go-client" type="GoApplicationRunConfiguration" factoryName="Go Application" folderName="v3config-registry-zookeeper">
     <module name="dubbo-go-samples" />
     <working_directory value="$PROJECT_DIR$" />
     <kind value="PACKAGE" />
diff --git a/.run/registry/registry-zookeeper-go-server.run.xml b/.run/registry/registry-zookeeper-go-server.run.xml
index 023aa10..d3b5b65 100644
--- a/.run/registry/registry-zookeeper-go-server.run.xml
+++ b/.run/registry/registry-zookeeper-go-server.run.xml
@@ -1,5 +1,5 @@
 <component name="ProjectRunConfigurationManager">
-  <configuration default="false" name="registry-zookeeper-go-server" type="GoApplicationRunConfiguration" factoryName="Go Application">
+  <configuration default="false" name="registry-zookeeper-go-server" type="GoApplicationRunConfiguration" factoryName="Go Application" folderName="v3config-registry-zookeeper">
     <module name="dubbo-go-samples" />
     <working_directory value="$PROJECT_DIR$" />
     <kind value="PACKAGE" />
diff --git a/.run/triple-codec-extension-client.run.xml b/.run/triple-codec-extension-client.run.xml
index 55591d0..ec0f339 100644
--- a/.run/triple-codec-extension-client.run.xml
+++ b/.run/triple-codec-extension-client.run.xml
@@ -7,9 +7,9 @@
       <env name="CONF_CONSUMER_FILE_PATH" value="$PROJECT_DIR$/general/dubbo3/codec-extension/go-client/conf/client.yml" />
     </envs>
     <kind value="PACKAGE" />
+    <package value="github.com/apache/dubbo-go-samples/rpc/dubbo3/codec-extension/go-client/cmd" />
+    <directory value="github.com/apache/dubbo-go-samples/general/dubbo3/api/dubbogo-grpc/server/dubbogo-server/cmd" />
     <filePath value="$PROJECT_DIR$" />
-    <package value="github.com/apache/dubbo-go-samples/general/dubbo3/codec-extension/go-client/cmd" />
-    <directory value="github.com/apache/dubbo-go-samples/general/dubbo3/pb/dubbogo-grpc/server/dubbogo-server/cmd" />
     <method v="2" />
   </configuration>
 </component>
\ No newline at end of file
diff --git a/.run/triple-codec-extension-server.run.xml b/.run/triple-codec-extension-server.run.xml
index 6b68920..da9aa95 100644
--- a/.run/triple-codec-extension-server.run.xml
+++ b/.run/triple-codec-extension-server.run.xml
@@ -7,9 +7,9 @@
       <env name="CONF_PROVIDER_FILE_PATH" value="$PROJECT_DIR$/general/dubbo3/codec-extension/go-server/conf/server.yml" />
     </envs>
     <kind value="PACKAGE" />
+    <package value="github.com/apache/dubbo-go-samples/rpc/dubbo3/codec-extension/go-server/cmd" />
+    <directory value="github.com/apache/dubbo-go-samples/general/dubbo3/api/dubbogo-grpc/server/dubbogo-server/cmd" />
     <filePath value="$PROJECT_DIR$" />
-    <package value="github.com/apache/dubbo-go-samples/general/dubbo3/codec-extension/go-server/cmd" />
-    <directory value="github.com/apache/dubbo-go-samples/general/dubbo3/pb/dubbogo-grpc/server/dubbogo-server/cmd" />
     <method v="2" />
   </configuration>
 </component>
\ No newline at end of file
diff --git a/.run/triple-msgpack-client.run.xml b/.run/triple-msgpack-client.run.xml
index d265e2f..76d0bf0 100644
--- a/.run/triple-msgpack-client.run.xml
+++ b/.run/triple-msgpack-client.run.xml
@@ -7,9 +7,9 @@
       <env name="CONF_CONSUMER_FILE_PATH" value="$PROJECT_DIR$/general/dubbo3/msgpack/go-client/conf/client.yml" />
     </envs>
     <kind value="PACKAGE" />
+    <package value="github.com/apache/dubbo-go-samples/rpc/dubbo3/msgpack/go-client/cmd" />
+    <directory value="github.com/apache/dubbo-go-samples/general/dubbo3/api/dubbogo-grpc/server/dubbogo-server/cmd" />
     <filePath value="$PROJECT_DIR$" />
-    <package value="github.com/apache/dubbo-go-samples/general/dubbo3/msgpack/go-client/cmd" />
-    <directory value="github.com/apache/dubbo-go-samples/general/dubbo3/pb/dubbogo-grpc/server/dubbogo-server/cmd" />
     <method v="2" />
   </configuration>
 </component>
\ No newline at end of file
diff --git a/.run/triple-msgpack-server.run.xml b/.run/triple-msgpack-server.run.xml
index 8ef6570..5ff8ee6 100644
--- a/.run/triple-msgpack-server.run.xml
+++ b/.run/triple-msgpack-server.run.xml
@@ -7,9 +7,9 @@
       <env name="CONF_PROVIDER_FILE_PATH" value="$PROJECT_DIR$/general/dubbo3/msgpack/go-server/conf/server.yml" />
     </envs>
     <kind value="PACKAGE" />
+    <package value="github.com/apache/dubbo-go-samples/rpc/dubbo3/msgpack/go-server/cmd" />
+    <directory value="github.com/apache/dubbo-go-samples/general/dubbo3/api/dubbogo-grpc/server/dubbogo-server/cmd" />
     <filePath value="$PROJECT_DIR$" />
-    <package value="github.com/apache/dubbo-go-samples/general/dubbo3/msgpack/go-server/cmd" />
-    <directory value="github.com/apache/dubbo-go-samples/general/dubbo3/pb/dubbogo-grpc/server/dubbogo-server/cmd" />
     <method v="2" />
   </configuration>
 </component>
\ No newline at end of file
diff --git a/.run/triple-server.run.xml b/.run/triple-server.run.xml
index b249d57..2a77a0c 100644
--- a/.run/triple-server.run.xml
+++ b/.run/triple-server.run.xml
@@ -3,9 +3,9 @@
     <module name="dubbo-go-samples" />
     <working_directory value="$PROJECT_DIR$" />
     <kind value="PACKAGE" />
-    <package value="github.com/apache/dubbo-go-samples/general/dubbo3/pb/dubbogo-grpc/server/dubbogo-server/cmd" />
+    <package value="github.com/apache/dubbo-go-samples/rpc/dubbo3/api/dubbogo-grpc/server/dubbogo-server/cmd" />
     <directory value="$PROJECT_DIR$" />
-    <filePath value="$PROJECT_DIR$/general/dubbo3/pb/dubbogo-grpc/server/dubbogo-server/cmd/server.go" />
+    <filePath value="$PROJECT_DIR$/general/dubbo3/api/dubbogo-grpc/server/dubbogo-server/cmd/server.go" />
     <method v="2" />
   </configuration>
 </component>
\ No newline at end of file
diff --git a/.run/triple/gojava-go-client.run.xml b/.run/triple/gojava-go-client.run.xml
index b1dcede..1f38a81 100644
--- a/.run/triple/gojava-go-client.run.xml
+++ b/.run/triple/gojava-go-client.run.xml
@@ -3,13 +3,13 @@
     <module name="dubbo-go-samples" />
     <working_directory value="$PROJECT_DIR$" />
     <envs>
-      <env name="APP_LOG_CONF_FILE" value="$PROJECT_DIR$/general/dubbo3/pb/dubbogo-java/go-client/conf/log.yml" />
-      <env name="CONF_CONSUMER_FILE_PATH" value="$PROJECT_DIR$/general/dubbo3/pb/dubbogo-java/go-client/conf/client.yml" />
+      <env name="APP_LOG_CONF_FILE" value="$PROJECT_DIR$/general/dubbo3/api/dubbogo-java/go-client/conf/log.yml" />
+      <env name="CONF_CONSUMER_FILE_PATH" value="$PROJECT_DIR$/general/dubbo3/api/dubbogo-java/go-client/conf/client.yml" />
     </envs>
     <kind value="PACKAGE" />
-    <filePath value="$PROJECT_DIR$/general/dubbo3/pb/dubbogo-java/go-client/cmd/client.go" />
-    <package value="github.com/apache/dubbo-go-samples/general/dubbo3/pb/dubbogo-java/go-client/cmd" />
+    <package value="github.com/apache/dubbo-go-samples/rpc/dubbo3/api/dubbogo-java/go-client/cmd" />
     <directory value="$PROJECT_DIR$" />
+    <filePath value="$PROJECT_DIR$/general/dubbo3/api/dubbogo-java/go-client/cmd/client.go" />
     <method v="2" />
   </configuration>
 </component>
\ No newline at end of file
diff --git a/.run/triple/gojava-go-server.run.xml b/.run/triple/gojava-go-server.run.xml
index 5b1fa6e..4e00c18 100644
--- a/.run/triple/gojava-go-server.run.xml
+++ b/.run/triple/gojava-go-server.run.xml
@@ -3,13 +3,13 @@
     <module name="dubbo-go-samples" />
     <working_directory value="$PROJECT_DIR$" />
     <envs>
-      <env name="APP_LOG_CONF_FILE" value="$PROJECT_DIR$/general/dubbo3/pb/dubbogo-java/go-server/conf/log.yml" />
-      <env name="CONF_PROVIDER_FILE_PATH" value="$PROJECT_DIR$/general/dubbo3/pb/dubbogo-java/go-server/conf/server.yml" />
+      <env name="APP_LOG_CONF_FILE" value="$PROJECT_DIR$/general/dubbo3/api/dubbogo-java/go-server/conf/log.yml" />
+      <env name="CONF_PROVIDER_FILE_PATH" value="$PROJECT_DIR$/general/dubbo3/api/dubbogo-java/go-server/conf/server.yml" />
     </envs>
     <kind value="PACKAGE" />
-    <filePath value="$PROJECT_DIR$/general/dubbo3/pb/dubbogo-java/go-server/cmd/server.go" />
-    <package value="github.com/apache/dubbo-go-samples/general/dubbo3/pb/dubbogo-java/go-server/cmd" />
+    <package value="github.com/apache/dubbo-go-samples/rpc/dubbo3/api/dubbogo-java/go-server/cmd" />
     <directory value="$PROJECT_DIR$" />
+    <filePath value="$PROJECT_DIR$/general/dubbo3/api/dubbogo-java/go-server/cmd/server.go" />
     <method v="2" />
   </configuration>
 </component>
\ No newline at end of file
diff --git a/.run/triple/triple-stream-client.run.xml b/.run/triple/triple-stream-client.run.xml
index 8510ce6..259ba0b 100644
--- a/.run/triple/triple-stream-client.run.xml
+++ b/.run/triple/triple-stream-client.run.xml
@@ -3,13 +3,13 @@
     <module name="dubbo-go-samples" />
     <working_directory value="$PROJECT_DIR$" />
     <envs>
-      <env name="APP_LOG_CONF_FILE" value="$PROJECT_DIR$/general/dubbo3/pb/dubbogo-grpc/stream-client/dubbogo-client/conf/log.yml" />
-      <env name="CONF_CONSUMER_FILE_PATH" value="$PROJECT_DIR$/general/dubbo3/pb/dubbogo-grpc/stream-client/dubbogo-client/conf/client.yml" />
+      <env name="APP_LOG_CONF_FILE" value="$PROJECT_DIR$/general/dubbo3/api/dubbogo-grpc/stream-client/dubbogo-client/conf/log.yml" />
+      <env name="CONF_CONSUMER_FILE_PATH" value="$PROJECT_DIR$/general/dubbo3/api/dubbogo-grpc/stream-client/dubbogo-client/conf/client.yml" />
     </envs>
     <kind value="PACKAGE" />
-    <filePath value="$PROJECT_DIR$/general/dubbo3/pb/dubbogo-grpc/stream-client/dubbogo-client/cmd/client.go" />
-    <package value="github.com/apache/dubbo-go-samples/general/dubbo3/pb/dubbogo-grpc/stream-client/dubbogo-client/cmd" />
+    <package value="github.com/apache/dubbo-go-samples/rpc/dubbo3/api/dubbogo-grpc/stream-client/dubbogo-client/cmd" />
     <directory value="$PROJECT_DIR$" />
+    <filePath value="$PROJECT_DIR$/general/dubbo3/api/dubbogo-grpc/stream-client/dubbogo-client/cmd/client.go" />
     <method v="2" />
   </configuration>
 </component>
\ No newline at end of file
diff --git a/.run/triple/triple-unary-client.run.xml b/.run/triple/triple-unary-client.run.xml
index 54055c2..1b397b9 100644
--- a/.run/triple/triple-unary-client.run.xml
+++ b/.run/triple/triple-unary-client.run.xml
@@ -3,13 +3,13 @@
     <module name="dubbo-go-samples" />
     <working_directory value="$PROJECT_DIR$" />
     <envs>
-      <env name="APP_LOG_CONF_FILE" value="$PROJECT_DIR$/general/dubbo3/pb/dubbogo-grpc/unary-client/dubbogo-client/conf/log.yml" />
-      <env name="CONF_CONSUMER_FILE_PATH" value="$PROJECT_DIR$/general/dubbo3/pb/dubbogo-grpc/unary-client/dubbogo-client/conf/client.yml" />
+      <env name="APP_LOG_CONF_FILE" value="$PROJECT_DIR$/general/dubbo3/api/dubbogo-grpc/unary-client/dubbogo-client/conf/log.yml" />
+      <env name="CONF_CONSUMER_FILE_PATH" value="$PROJECT_DIR$/general/dubbo3/api/dubbogo-grpc/unary-client/dubbogo-client/conf/client.yml" />
     </envs>
     <kind value="PACKAGE" />
-    <filePath value="$PROJECT_DIR$/general/dubbo3/pb/dubbogo-grpc/unary-client/dubbogo-client/cmd/client.go" />
-    <package value="github.com/apache/dubbo-go-samples/general/dubbo3/pb/dubbogo-grpc/unary-client/dubbogo-client/cmd" />
+    <package value="github.com/apache/dubbo-go-samples/rpc/dubbo3/api/dubbogo-grpc/unary-client/dubbogo-client/cmd" />
     <directory value="$PROJECT_DIR$" />
+    <filePath value="$PROJECT_DIR$/general/dubbo3/api/dubbogo-grpc/unary-client/dubbogo-client/cmd/client.go" />
     <method v="2" />
   </configuration>
 </component>
\ No newline at end of file
diff --git a/.run/triple/triplego-hessian-client.run.xml b/.run/triple/triplego-hessian-client.run.xml
index 85821c4..542d476 100644
--- a/.run/triple/triplego-hessian-client.run.xml
+++ b/.run/triple/triplego-hessian-client.run.xml
@@ -7,9 +7,9 @@
       <env name="CONF_CONSUMER_FILE_PATH" value="$PROJECT_DIR$/general/dubbo3/hessian2/go-client/conf/client.yml" />
     </envs>
     <kind value="PACKAGE" />
-    <filePath value="$PROJECT_DIR$/general/dubbo3/hessian2/go-client/cmd/client.go" />
-    <package value="github.com/apache/dubbo-go-samples/general/dubbo3/hessian2/go-client/cmd" />
+    <package value="github.com/apache/dubbo-go-samples/rpc/dubbo3/hessian2/go-client/cmd" />
     <directory value="$PROJECT_DIR$" />
+    <filePath value="$PROJECT_DIR$/general/dubbo3/hessian2/go-client/cmd/client.go" />
     <method v="2" />
   </configuration>
 </component>
\ No newline at end of file
diff --git a/.run/triple/triplego-hessian-server.run.xml b/.run/triple/triplego-hessian-server.run.xml
index 654a11b..5d0d252 100644
--- a/.run/triple/triplego-hessian-server.run.xml
+++ b/.run/triple/triplego-hessian-server.run.xml
@@ -7,9 +7,9 @@
       <env name="CONF_PROVIDER_FILE_PATH" value="$PROJECT_DIR$/general/dubbo3/hessian2/go-server/conf/server.yml" />
     </envs>
     <kind value="PACKAGE" />
-    <filePath value="$PROJECT_DIR$/general/dubbo3/hessian2/go-server/cmd/server.go" />
-    <package value="github.com/apache/dubbo-go-samples/general/dubbo3/hessian2/go-server/cmd" />
+    <package value="github.com/apache/dubbo-go-samples/rpc/dubbo3/hessian2/go-server/cmd" />
     <directory value="$PROJECT_DIR$" />
+    <filePath value="$PROJECT_DIR$/general/dubbo3/hessian2/go-server/cmd/server.go" />
     <method v="2" />
   </configuration>
 </component>
\ No newline at end of file
diff --git a/api/generate.sh b/api/generate.sh
new file mode 100644
index 0000000..d116f65
--- /dev/null
+++ b/api/generate.sh
@@ -0,0 +1,4 @@
+export GO111MODULE="on"
+export GOPROXY="http://goproxy.io"
+go get -u github.com/apache/dubbo-go/protocol/dubbo3/protoc-gen-dubbo3@3.0
+protoc -I . samples_api.proto --dubbo3_out=plugins=grpc+dubbo:.
\ No newline at end of file
diff --git a/general/dubbo3/pb/dubbogo-java/protobuf/helloworld.pb.go b/api/samples_api.pb.go
similarity index 83%
rename from general/dubbo3/pb/dubbogo-java/protobuf/helloworld.pb.go
rename to api/samples_api.pb.go
index 89625a4..cf48c46 100644
--- a/general/dubbo3/pb/dubbogo-java/protobuf/helloworld.pb.go
+++ b/api/samples_api.pb.go
@@ -1,11 +1,15 @@
 // Code generated by protoc-gen-go. DO NOT EDIT.
-// source: helloworld.proto
+// source: samples_api.proto
 
-package protobuf
+package api
 
 import (
 	context "context"
 	fmt "fmt"
+	proto "github.com/golang/protobuf/proto"
+	grpc "google.golang.org/grpc"
+	codes "google.golang.org/grpc/codes"
+	status "google.golang.org/grpc/status"
 	math "math"
 )
 
@@ -13,18 +17,11 @@ import (
 	"dubbo.apache.org/dubbo-go/v3/protocol"
 	dgrpc "dubbo.apache.org/dubbo-go/v3/protocol/dubbo3"
 	"dubbo.apache.org/dubbo-go/v3/protocol/invocation"
-
 	tripleConstant "github.com/dubbogo/triple/pkg/common/constant"
 	dubbo3 "github.com/dubbogo/triple/pkg/triple"
-
-	proto "github.com/golang/protobuf/proto"
-
-	grpc "google.golang.org/grpc"
-	codes "google.golang.org/grpc/codes"
-
-	status "google.golang.org/grpc/status"
 )
 
+// Reference imports to suppress errors if they are not otherwise used.
 var _ = proto.Marshal
 var _ = fmt.Errorf
 var _ = math.Inf
@@ -47,7 +44,7 @@ func (m *HelloRequest) Reset()         { *m = HelloRequest{} }
 func (m *HelloRequest) String() string { return proto.CompactTextString(m) }
 func (*HelloRequest) ProtoMessage()    {}
 func (*HelloRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_17b8c58d586b62f2, []int{0}
+	return fileDescriptor_67d196fe99e714eb, []int{0}
 }
 
 func (m *HelloRequest) XXX_Unmarshal(b []byte) error {
@@ -89,7 +86,7 @@ func (m *User) Reset()         { *m = User{} }
 func (m *User) String() string { return proto.CompactTextString(m) }
 func (*User) ProtoMessage()    {}
 func (*User) Descriptor() ([]byte, []int) {
-	return fileDescriptor_17b8c58d586b62f2, []int{1}
+	return fileDescriptor_67d196fe99e714eb, []int{1}
 }
 
 func (m *User) XXX_Unmarshal(b []byte) error {
@@ -132,106 +129,24 @@ func (m *User) GetAge() int32 {
 }
 
 func init() {
-	proto.RegisterType((*HelloRequest)(nil), "protobuf.HelloRequest")
-	proto.RegisterType((*User)(nil), "protobuf.User")
+	proto.RegisterType((*HelloRequest)(nil), "api.HelloRequest")
+	proto.RegisterType((*User)(nil), "api.User")
 }
 
-func init() { proto.RegisterFile("helloworld.proto", fileDescriptor_17b8c58d586b62f2) }
+func init() { proto.RegisterFile("samples_api.proto", fileDescriptor_67d196fe99e714eb) }
 
-var fileDescriptor_17b8c58d586b62f2 = []byte{
+var fileDescriptor_67d196fe99e714eb = []byte{
 	// 160 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x12, 0xc8, 0x48, 0xcd, 0xc9,
-	0xc9, 0x2f, 0xcf, 0x2f, 0xca, 0x49, 0xd1, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0xe2, 0x00, 0x53,
-	0x49, 0xa5, 0x69, 0x4a, 0x4a, 0x5c, 0x3c, 0x1e, 0x20, 0xd9, 0xa0, 0xd4, 0xc2, 0xd2, 0xd4, 0xe2,
-	0x12, 0x21, 0x21, 0x2e, 0x96, 0xbc, 0xc4, 0xdc, 0x54, 0x09, 0x46, 0x05, 0x46, 0x0d, 0xce, 0x20,
-	0x30, 0x5b, 0xc9, 0x86, 0x8b, 0x25, 0xb4, 0x38, 0xb5, 0x08, 0x9b, 0x9c, 0x10, 0x1f, 0x17, 0x53,
-	0x66, 0x8a, 0x04, 0x13, 0x58, 0x84, 0x29, 0x33, 0x45, 0x48, 0x80, 0x8b, 0x39, 0x31, 0x3d, 0x55,
-	0x82, 0x59, 0x81, 0x51, 0x83, 0x35, 0x08, 0xc4, 0x34, 0xb2, 0xe7, 0x62, 0x77, 0x2f, 0x4a, 0x4d,
-	0x2d, 0x49, 0x2d, 0x12, 0x32, 0xe1, 0xe2, 0x08, 0x4e, 0xac, 0x04, 0xdb, 0x27, 0x24, 0xa6, 0x07,
-	0x73, 0x83, 0x1e, 0xb2, 0x03, 0xa4, 0xf8, 0x10, 0xe2, 0x20, 0x4b, 0x95, 0x18, 0x92, 0xd8, 0xc0,
-	0x02, 0xc6, 0x80, 0x00, 0x00, 0x00, 0xff, 0xff, 0xcf, 0xdb, 0xd1, 0x8b, 0xc7, 0x00, 0x00, 0x00,
-}
-
-// Reference imports to suppress errors if they are not otherwise used.
-var _ context.Context
-var _ grpc.ClientConnInterface
-
-// This is a compile-time assertion to ensure that this generated file
-// is compatible with the grpc package it is being compiled against.
-const _ = grpc.SupportPackageIsVersion6
-
-// GreeterClient is the client API for Greeter service.
-//
-// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.
-type GreeterClient interface {
-	// Sends a greeting
-	SayHello(ctx context.Context, in *HelloRequest, opts ...grpc.CallOption) (*User, error)
-}
-
-type greeterClient struct {
-	cc grpc.ClientConnInterface
-}
-
-func NewGreeterClient(cc grpc.ClientConnInterface) GreeterClient {
-	return &greeterClient{cc}
-}
-
-func (c *greeterClient) SayHello(ctx context.Context, in *HelloRequest, opts ...grpc.CallOption) (*User, error) {
-	out := new(User)
-	err := c.cc.Invoke(ctx, "/protobuf.Greeter/SayHello", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-// GreeterServer is the server API for Greeter service.
-type GreeterServer interface {
-	// Sends a greeting
-	SayHello(context.Context, *HelloRequest) (*User, error)
-}
-
-// UnimplementedGreeterServer can be embedded to have forward compatible implementations.
-type UnimplementedGreeterServer struct {
-}
-
-func (*UnimplementedGreeterServer) SayHello(ctx context.Context, req *HelloRequest) (*User, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method SayHello not implemented")
-}
-
-func RegisterGreeterServer(s *grpc.Server, srv GreeterServer) {
-	s.RegisterService(&_Greeter_serviceDesc, srv)
-}
-
-func _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
-	}
-	if interceptor == nil {
-		return srv.(GreeterServer).SayHello(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/protobuf.Greeter/SayHello",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(GreeterServer).SayHello(ctx, req.(*HelloRequest))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-var _Greeter_serviceDesc = grpc.ServiceDesc{
-	ServiceName: "protobuf.Greeter",
-	HandlerType: (*GreeterServer)(nil),
-	Methods: []grpc.MethodDesc{
-		{
-			MethodName: "SayHello",
-			Handler:    _Greeter_SayHello_Handler,
-		},
-	},
-	Streams:  []grpc.StreamDesc{},
-	Metadata: "helloworld.proto",
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x12, 0x2c, 0x4e, 0xcc, 0x2d,
+	0xc8, 0x49, 0x2d, 0x8e, 0x4f, 0x2c, 0xc8, 0xd4, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0x62, 0x4e,
+	0x2c, 0xc8, 0x54, 0x52, 0xe2, 0xe2, 0xf1, 0x48, 0xcd, 0xc9, 0xc9, 0x0f, 0x4a, 0x2d, 0x2c, 0x4d,
+	0x2d, 0x2e, 0x11, 0x12, 0xe2, 0x62, 0xc9, 0x4b, 0xcc, 0x4d, 0x95, 0x60, 0x54, 0x60, 0xd4, 0xe0,
+	0x0c, 0x02, 0xb3, 0x95, 0x6c, 0xb8, 0x58, 0x42, 0x8b, 0x53, 0x8b, 0xb0, 0xc9, 0x09, 0xf1, 0x71,
+	0x31, 0x65, 0xa6, 0x48, 0x30, 0x81, 0x45, 0x98, 0x32, 0x53, 0x84, 0x04, 0xb8, 0x98, 0x13, 0xd3,
+	0x53, 0x25, 0x98, 0x15, 0x18, 0x35, 0x58, 0x83, 0x40, 0x4c, 0x23, 0x53, 0x2e, 0x76, 0xf7, 0xa2,
+	0xd4, 0xd4, 0x92, 0xd4, 0x22, 0x21, 0x2d, 0x2e, 0x8e, 0xe0, 0xc4, 0x4a, 0xb0, 0x7d, 0x42, 0x82,
+	0x7a, 0x20, 0x97, 0x20, 0xdb, 0x2d, 0xc5, 0x09, 0x16, 0x02, 0x59, 0xa5, 0xc4, 0x90, 0xc4, 0x06,
+	0x76, 0xa4, 0x31, 0x20, 0x00, 0x00, 0xff, 0xff, 0x46, 0x82, 0xe3, 0x9f, 0xb9, 0x00, 0x00, 0x00,
 }
 
 type greeterDubbo3Client struct {
@@ -298,7 +213,7 @@ func _DUBBO_Greeter_SayHello_Handler(srv interface{}, ctx context.Context, dec f
 	}
 	info := &grpc.UnaryServerInfo{
 		Server:     srv,
-		FullMethod: "/protobuf.Greeter/SayHello",
+		FullMethod: "/api.Greeter/SayHello",
 	}
 	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
 		result := base.GetProxyImpl().Invoke(context.Background(), invo)
@@ -309,7 +224,7 @@ func _DUBBO_Greeter_SayHello_Handler(srv interface{}, ctx context.Context, dec f
 
 func (s *GreeterProviderBase) ServiceDesc() *grpc.ServiceDesc {
 	return &grpc.ServiceDesc{
-		ServiceName: "protobuf.Greeter",
+		ServiceName: "api.Greeter",
 		HandlerType: (*GreeterServer)(nil),
 		Methods: []grpc.MethodDesc{
 			{
@@ -318,6 +233,88 @@ func (s *GreeterProviderBase) ServiceDesc() *grpc.ServiceDesc {
 			},
 		},
 		Streams:  []grpc.StreamDesc{},
-		Metadata: "helloworld.proto",
+		Metadata: "samples_api.proto",
+	}
+}
+
+// Reference imports to suppress errors if they are not otherwise used.
+var _ context.Context
+var _ grpc.ClientConnInterface
+
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the grpc package it is being compiled against.
+const _ = grpc.SupportPackageIsVersion6
+
+// GreeterClient is the client API for Greeter service.
+//
+// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.
+type GreeterClient interface {
+	// Sends a greeting
+	SayHello(ctx context.Context, in *HelloRequest, opts ...grpc.CallOption) (*User, error)
+}
+
+type greeterClient struct {
+	cc grpc.ClientConnInterface
+}
+
+func NewGreeterClient(cc grpc.ClientConnInterface) GreeterClient {
+	return &greeterClient{cc}
+}
+
+func (c *greeterClient) SayHello(ctx context.Context, in *HelloRequest, opts ...grpc.CallOption) (*User, error) {
+	out := new(User)
+	err := c.cc.Invoke(ctx, "/api.Greeter/SayHello", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+// GreeterServer is the server API for Greeter service.
+type GreeterServer interface {
+	// Sends a greeting
+	SayHello(context.Context, *HelloRequest) (*User, error)
+}
+
+// UnimplementedGreeterServer can be embedded to have forward compatible implementations.
+type UnimplementedGreeterServer struct {
+}
+
+func (*UnimplementedGreeterServer) SayHello(ctx context.Context, req *HelloRequest) (*User, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method SayHello not implemented")
+}
+
+func RegisterGreeterServer(s *grpc.Server, srv GreeterServer) {
+	s.RegisterService(&_Greeter_serviceDesc, srv)
+}
+
+func _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
 	}
+	if interceptor == nil {
+		return srv.(GreeterServer).SayHello(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/api.Greeter/SayHello",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(GreeterServer).SayHello(ctx, req.(*HelloRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+var _Greeter_serviceDesc = grpc.ServiceDesc{
+	ServiceName: "api.Greeter",
+	HandlerType: (*GreeterServer)(nil),
+	Methods: []grpc.MethodDesc{
+		{
+			MethodName: "SayHello",
+			Handler:    _Greeter_SayHello_Handler,
+		},
+	},
+	Streams:  []grpc.StreamDesc{},
+	Metadata: "samples_api.proto",
 }
diff --git a/general/dubbo3/pb/dubbogo-java/protobuf/helloworld.proto b/api/samples_api.proto
similarity index 98%
rename from general/dubbo3/pb/dubbogo-java/protobuf/helloworld.proto
rename to api/samples_api.proto
index 92b2876..281a9d1 100644
--- a/general/dubbo3/pb/dubbogo-java/protobuf/helloworld.proto
+++ b/api/samples_api.proto
@@ -16,7 +16,7 @@
  */
 
 syntax = "proto3";
-package protobuf;
+package api;
 
 // The greeting service definition.
 service Greeter {
diff --git a/async/README.md b/async/README.md
deleted file mode 100644
index 146da3a..0000000
--- a/async/README.md
+++ /dev/null
@@ -1,46 +0,0 @@
-# Async Sample
-
-### Background
-
-Dubbo-go provides not only synchronous invocation, but also asynchronous invocation on the consumer side. In order to
-use it, the client needs to implement the following interface to asynchronously receive the response from the service
-provider:
-
-```golang
-type AsyncCallbackService interface {
-    CallBack(response CallbackResponse) // callback
-}
-```
-
-### Example
-
-**Code**
-
-```golang
-type UserProvider struct {
-    GetUser func (ctx context.Context, req []interface{}, rsp *User) error
-}
-
-func (u *UserProvider) CallBack(res common.CallbackResponse) {
-    fmt.Println("CallBack res:", res)
-}
-```
-
-**Configuration**
-
-Besides, client also needs to config **"async:true"** in consumer's yaml config file as following:
-
-```yaml
-# reference config
-references:
-  "UserProvider":
-    registry: "demoZk"
-    protocol: "dubbo"
-    interface: "org.apache.dubbo.UserProvider"
-    # this is necessary to enable async call
-    async: true
-```
-
-Pls. refer to [HOWTO.md](../HOWTO.md) under the root directory to run this sample.
-
-
diff --git a/async/README_zh.md b/async/README_zh.md
deleted file mode 100644
index adcc836..0000000
--- a/async/README_zh.md
+++ /dev/null
@@ -1,45 +0,0 @@
-# Async 示例
-
-### 背景
-
-Dubbo-go 提供同步调用的同时,还提供了客户端异步调用的能力。客户端可以通过实现以下的接口来异步获得服务端返回的响应:
-
-
-```golang
-type AsyncCallbackService interface {
-	CallBack(response CallbackResponse) // callback
-}
-```
-
-### 示例
-
-**代码**
-
-```golang
-type UserProvider struct {
-	GetUser func(ctx context.Context, req []interface{}, rsp *User) error
-}
-
-func (u *UserProvider) CallBack(res common.CallbackResponse) {
-	fmt.Println("CallBack res:",res)
-}
-```
-
-**配置**
-
-提供回调方法的同时,还需要在客户端的配置中增加 **"async:true"** 的配置,如下所示:
-
-```yaml
-# reference config
-references:
-  "UserProvider":
-    registry: "demoZk"
-    protocol : "dubbo"
-    interface : "org.apache.dubbo.UserProvider"
-    # this is necessary to enable async call
-    async: true
-```
-
-请参阅根目录中的 [HOWTO.md](../HOWTO_zh.md) 来运行本例。
-
-
diff --git a/async/go-client/cmd/client.go b/async/go-client/cmd/client.go
deleted file mode 100644
index 58cc54c..0000000
--- a/async/go-client/cmd/client.go
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package main
-
-import (
-	"context"
-	"os"
-	"time"
-)
-
-import (
-	_ "dubbo.apache.org/dubbo-go/v3/cluster/cluster_impl"
-	_ "dubbo.apache.org/dubbo-go/v3/cluster/loadbalance"
-	_ "dubbo.apache.org/dubbo-go/v3/common/proxy/proxy_factory"
-	"dubbo.apache.org/dubbo-go/v3/config"
-	_ "dubbo.apache.org/dubbo-go/v3/filter/filter_impl"
-	_ "dubbo.apache.org/dubbo-go/v3/protocol/dubbo"
-	_ "dubbo.apache.org/dubbo-go/v3/registry/protocol"
-	_ "dubbo.apache.org/dubbo-go/v3/registry/zookeeper"
-
-	hessian "github.com/apache/dubbo-go-hessian2"
-
-	"github.com/dubbogo/gost/log"
-)
-
-import (
-	"github.com/apache/dubbo-go-samples/async/go-client/pkg"
-)
-
-var userProvider = pkg.NewUserProvider()
-
-func init() {
-	config.SetConsumerService(userProvider)
-	hessian.RegisterPOJO(&pkg.User{})
-}
-
-// need to setup environment variable "CONF_CONSUMER_FILE_PATH" to "conf/client.yml" before run
-func main() {
-	hessian.RegisterPOJO(&pkg.User{})
-	config.Load()
-	time.Sleep(3 * time.Second)
-
-	gxlog.CInfo("\n\n\nstart to test dubbo")
-	user := &pkg.User{}
-	err := userProvider.GetUser(context.TODO(), []interface{}{"A001"}, user)
-	if err != nil {
-		gxlog.CError("error: %v\n", err)
-		os.Exit(1)
-		return
-	}
-
-	gxlog.CInfo("response result: %v\n", userProvider.GetResponse())
-}
diff --git a/async/go-client/conf/client.yml b/async/go-client/conf/client.yml
deleted file mode 100644
index 0f09e70..0000000
--- a/async/go-client/conf/client.yml
+++ /dev/null
@@ -1,61 +0,0 @@
-# dubbo client yaml configure file
-
-check: true
-# client
-request_timeout : "3s"
-# connect timeout
-connect_timeout : "3s"
-
-# application config
-application:
-  organization : "dubbo.io"
-  name  : "UserInfoClient"
-  module : "dubbo-go user-info client"
-  version : "0.0.1"
-  environment : "dev"
-
-# registry config
-registries :
-  "demoZk":
-    protocol: "zookeeper"
-    timeout	: "3s"
-    address: "127.0.0.1:2181"
-    username: ""
-    password: ""
-
-# reference config
-references:
-  "UserProvider":
-    registry: "demoZk"
-    protocol : "dubbo"
-    interface : "org.apache.dubbo.UserProvider"
-    cluster: "failover"
-    methods :
-    - name: "GetUser"
-      retries: 3
-    # this is necessary to enable async call
-    async: true
-
-# protocol config
-protocol_conf:
-  dubbo:
-    reconnect_interval: 0
-    connection_number: 1
-    heartbeat_period: "5s"
-    session_timeout: "180s"
-    pool_size: 64
-    pool_ttl: 600
-    getty_session_param:
-      compress_encoding: false
-      tcp_no_delay: true
-      tcp_keep_alive: true
-      keep_alive_period: "120s"
-      tcp_r_buf_size: 262144
-      tcp_w_buf_size: 65536
-      pkg_rq_size: 1024
-      pkg_wq_size: 512
-      tcp_read_timeout: "1s"
-      tcp_write_timeout: "5s"
-      wait_timeout: "1s"
-      max_msg_len: 1024000
-      session_name: "client"
diff --git a/async/go-client/conf/log.yml b/async/go-client/conf/log.yml
deleted file mode 100644
index 6fb7501..0000000
--- a/async/go-client/conf/log.yml
+++ /dev/null
@@ -1,28 +0,0 @@
-
-level: "info"
-development: true
-disableCaller: false
-disableStacktrace: false
-sampling:
-encoding: "console"
-
-# encoder
-encoderConfig:
-  messageKey: "message"
-  levelKey: "level"
-  timeKey: "time"
-  nameKey: "logger"
-  callerKey: "caller"
-  stacktraceKey: "stacktrace"
-  lineEnding: ""
-  levelEncoder: "capital"
-  timeEncoder: "iso8601"
-  durationEncoder: "seconds"
-  callerEncoder: "short"
-  nameEncoder: ""
-
-outputPaths:
-  - "stderr"
-errorOutputPaths:
-  - "stderr"
-initialFields:
diff --git a/async/go-client/pkg/user.go b/async/go-client/pkg/user.go
deleted file mode 100644
index b9c400b..0000000
--- a/async/go-client/pkg/user.go
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package pkg
-
-import (
-	"context"
-	"time"
-)
-
-import (
-	"dubbo.apache.org/dubbo-go/v3/common"
-	"dubbo.apache.org/dubbo-go/v3/protocol"
-	"dubbo.apache.org/dubbo-go/v3/remoting"
-
-	gxlog "github.com/dubbogo/gost/log"
-)
-
-type User struct {
-	ID   string
-	Name string
-	Age  int32
-	Time time.Time
-}
-
-type UserProvider struct {
-	GetUser func(ctx context.Context, req []interface{}, rsp *User) error
-	ch      chan *User
-}
-
-func NewUserProvider() *UserProvider {
-	return &UserProvider{
-		ch: make(chan *User),
-	}
-}
-
-func (u *UserProvider) Reference() string {
-	return "UserProvider"
-}
-
-// to enable async call:
-// 1. need to implement AsyncCallbackService
-// 2. need to specify references -> UserProvider -> async in conf/client.yml
-func (u *UserProvider) CallBack(res common.CallbackResponse) {
-	gxlog.CInfo("CallBack res: %v", res)
-	if r, ok := res.(remoting.AsyncCallbackResponse); ok {
-		if reply, ok := r.Reply.(*remoting.Response); ok {
-			if result, ok := reply.Result.(*protocol.RPCResult); ok {
-				if user, ok := result.Rest.(*User); ok {
-					u.ch <- user
-				}
-			}
-		}
-	}
-	u.ch <- nil
-}
-
-func (u *UserProvider) GetResponse() *User {
-	user := <-u.ch
-	return user
-}
-
-func (User) JavaClassName() string {
-	return "org.apache.dubbo.User"
-}
diff --git a/async/go-server/cmd/server.go b/async/go-server/cmd/server.go
deleted file mode 100644
index 9954313..0000000
--- a/async/go-server/cmd/server.go
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package main
-
-import (
-	"fmt"
-	"os"
-	"os/signal"
-	"syscall"
-	"time"
-)
-
-import (
-	_ "dubbo.apache.org/dubbo-go/v3/cluster/cluster_impl"
-	_ "dubbo.apache.org/dubbo-go/v3/cluster/loadbalance"
-	"dubbo.apache.org/dubbo-go/v3/common/logger"
-	_ "dubbo.apache.org/dubbo-go/v3/common/proxy/proxy_factory"
-	"dubbo.apache.org/dubbo-go/v3/config"
-	_ "dubbo.apache.org/dubbo-go/v3/filter/filter_impl"
-	_ "dubbo.apache.org/dubbo-go/v3/protocol/dubbo"
-	_ "dubbo.apache.org/dubbo-go/v3/registry/protocol"
-	_ "dubbo.apache.org/dubbo-go/v3/registry/zookeeper"
-
-	hessian "github.com/apache/dubbo-go-hessian2"
-)
-
-import (
-	"github.com/apache/dubbo-go-samples/async/go-server/pkg"
-)
-
-var (
-	survivalTimeout = int(3e9)
-)
-
-// need to setup environment variable "CONF_PROVIDER_FILE_PATH" to "conf/server.yml" before run
-func main() {
-	hessian.RegisterPOJO(&pkg.User{})
-	config.Load()
-
-	initSignal()
-}
-
-func initSignal() {
-	signals := make(chan os.Signal, 1)
-	// It is not possible to block SIGKILL or syscall.SIGSTOP
-	signal.Notify(signals, os.Interrupt, os.Kill, syscall.SIGHUP, syscall.SIGQUIT, syscall.SIGTERM, syscall.SIGINT)
-	for {
-		sig := <-signals
-		logger.Infof("get signal %s", sig.String())
-		switch sig {
-		case syscall.SIGHUP:
-			// reload()
-		default:
-			time.AfterFunc(time.Duration(survivalTimeout), func() {
-				logger.Warnf("app exit now by force...")
-				os.Exit(1)
-			})
-
-			// The program exits normally or timeout forcibly exits.
-			fmt.Println("provider app exit now...")
-			return
-		}
-	}
-}
diff --git a/async/go-server/conf/client.yml b/async/go-server/conf/client.yml
deleted file mode 100644
index 4193953..0000000
--- a/async/go-server/conf/client.yml
+++ /dev/null
@@ -1,61 +0,0 @@
-# dubbo client yaml configure file
-
-check: true
-# client
-request_timeout : "3s"
-# connect timeout
-connect_timeout : "3s"
-
-# application config
-application:
-  organization : "dubbo.io"
-  name  : "UserInfoTest"
-  module : "dubbo-go user-info client"
-  version : "0.0.1"
-  environment : "dev"
-
-# registry config
-registries :
-  "demoZk":
-    protocol: "zookeeper"
-    timeout	: "3s"
-    address: "127.0.0.1:2181"
-    username: ""
-    password: ""
-
-# reference config
-references:
-  "UserProvider":
-    registry: "demoZk"
-    protocol : "dubbo"
-    interface : "org.apache.dubbo.UserProvider"
-    cluster: "failover"
-    methods :
-    - name: "GetUser"
-      retries: 3
-    # this is necessary to enable async call
-    async : true
-
-# protocol config
-protocol_conf:
-  dubbo:
-    reconnect_interval: 0
-    connection_number: 1
-    heartbeat_period: "5s"
-    session_timeout: "180s"
-    pool_size: 64
-    pool_ttl: 600
-    getty_session_param:
-      compress_encoding: false
-      tcp_no_delay: true
-      tcp_keep_alive: true
-      keep_alive_period: "120s"
-      tcp_r_buf_size: 262144
-      tcp_w_buf_size: 65536
-      pkg_rq_size: 1024
-      pkg_wq_size: 512
-      tcp_read_timeout: "1s"
-      tcp_write_timeout: "5s"
-      wait_timeout: "1s"
-      max_msg_len: 1024000
-      session_name: "client"
diff --git a/async/go-server/conf/log.yml b/async/go-server/conf/log.yml
deleted file mode 100644
index a75bccb..0000000
--- a/async/go-server/conf/log.yml
+++ /dev/null
@@ -1,28 +0,0 @@
-
-level: "error"
-development: true
-disableCaller: false
-disableStacktrace: false
-sampling:
-encoding: "console"
-
-# encoder
-encoderConfig:
-  messageKey: "message"
-  levelKey: "level"
-  timeKey: "time"
-  nameKey: "logger"
-  callerKey: "caller"
-  stacktraceKey: "stacktrace"
-  lineEnding: ""
-  levelEncoder: "capital"
-  timeEncoder: "iso8601"
-  durationEncoder: "seconds"
-  callerEncoder: "short"
-  nameEncoder: ""
-
-outputPaths:
-  - "stderr"
-errorOutputPaths:
-  - "stderr"
-initialFields:
diff --git a/async/go-server/conf/server.yml b/async/go-server/conf/server.yml
deleted file mode 100644
index 6e8970c..0000000
--- a/async/go-server/conf/server.yml
+++ /dev/null
@@ -1,55 +0,0 @@
-# dubbo server yaml configure file
-
-# application config
-application:
-  organization : "dubbo.io"
-  name : "UserInfoServer"
-  module : "dubbo-go user-info server"
-  version : "0.0.1"
-  environment : "dev"
-
-# registry config
-registries :
-  "demoZk":
-    protocol: "zookeeper"
-    timeout	: "3s"
-    address: "127.0.0.1:2181"
-
-# service config
-services:
-  "UserProvider":
-    registry: "demoZk"
-    protocol : "dubbo"
-    interface : "org.apache.dubbo.UserProvider"
-    loadbalance: "random"
-    warmup: "100"
-    cluster: "failover"
-    methods:
-    - name: "GetUser"
-      retries: 1
-      loadbalance: "random"
-
-# protocol config
-protocols:
-  "dubbo":
-    name: "dubbo"
-    port: 20000
-
-protocol_conf:
-  dubbo:
-    session_number: 700
-    session_timeout: "180s"
-    getty_session_param:
-      compress_encoding: false
-      tcp_no_delay: true
-      tcp_keep_alive: true
-      keep_alive_period: "120s"
-      tcp_r_buf_size: 262144
-      tcp_w_buf_size: 65536
-      pkg_rq_size: 1024
-      pkg_wq_size: 512
-      tcp_read_timeout: "1s"
-      tcp_write_timeout: "5s"
-      wait_timeout: "1s"
-      max_msg_len: 1024000
-      session_name: "server"
diff --git a/async/go-server/docker/docker-compose.yml b/async/go-server/docker/docker-compose.yml
deleted file mode 100644
index 8724179..0000000
--- a/async/go-server/docker/docker-compose.yml
+++ /dev/null
@@ -1,9 +0,0 @@
-version: '3'
-
-services:
-  zookeeper:
-    image: zookeeper
-    ports:
-      - 2181:2181
-    restart: on-failure
-
diff --git a/async/go-server/docker/docker-health-check.sh b/async/go-server/docker/docker-health-check.sh
deleted file mode 100644
index 2cc32c2..0000000
--- a/async/go-server/docker/docker-health-check.sh
+++ /dev/null
@@ -1,10 +0,0 @@
-curl 127.0.0.1:2181
-res=$?
-passCode=52
-while [ "$res" != "$passCode" ];do
-  sleep 5
-  curl 127.0.0.1:2181
-  res=$?
-done
-
-sleep 5
diff --git a/async/go-server/pkg/user.go b/async/go-server/pkg/user.go
deleted file mode 100644
index 75d0916..0000000
--- a/async/go-server/pkg/user.go
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package pkg
-
-import (
-	"context"
-	"time"
-)
-
-import (
-	"dubbo.apache.org/dubbo-go/v3/config"
-
-	hessian "github.com/apache/dubbo-go-hessian2"
-
-	"github.com/dubbogo/gost/log"
-)
-
-func init() {
-	config.SetProviderService(new(UserProvider))
-	// ------for hessian2------
-	hessian.RegisterPOJO(&User{})
-}
-
-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
-}
-
-func (u *UserProvider) Reference() string {
-	return "UserProvider"
-}
-
-func (u User) JavaClassName() string {
-	return "org.apache.dubbo.User"
-}
diff --git a/async/go-server/tests/integration/main_test.go b/async/go-server/tests/integration/main_test.go
deleted file mode 100644
index e445185..0000000
--- a/async/go-server/tests/integration/main_test.go
+++ /dev/null
@@ -1,89 +0,0 @@
-// +build integration
-
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package integration
-
-import (
-	"context"
-	"os"
-	"testing"
-	"time"
-)
-
-import (
-	"dubbo.apache.org/dubbo-go/v3/common"
-	"dubbo.apache.org/dubbo-go/v3/config"
-	_ "dubbo.apache.org/dubbo-go/v3/metadata/service/local"
-	"dubbo.apache.org/dubbo-go/v3/protocol"
-	"dubbo.apache.org/dubbo-go/v3/remoting"
-
-	hessian "github.com/apache/dubbo-go-hessian2"
-
-	gxlog "github.com/dubbogo/gost/log"
-)
-
-var userProvider = &UserProvider{
-	ch: make(chan *User),
-}
-
-func TestMain(m *testing.M) {
-	config.SetConsumerService(userProvider)
-	hessian.RegisterPOJO(&User{})
-	config.Load()
-	time.Sleep(3 * time.Second)
-
-	os.Exit(m.Run())
-}
-
-type User struct {
-	ID   string
-	Name string
-	Age  int32
-	Time time.Time
-}
-
-type UserProvider struct {
-	GetUser func(ctx context.Context, req []interface{}, rsp *User) error
-	ch      chan *User
-}
-
-func (u *UserProvider) Reference() string {
-	return "UserProvider"
-}
-
-// to enable async call:
-// 1. need to implement AsyncCallbackService
-// 2. need to specify references -> UserProvider -> async in conf/client.yml
-func (u *UserProvider) CallBack(res common.CallbackResponse) {
-	gxlog.CInfo("CallBack res: %v", res)
-	if r, ok := res.(remoting.AsyncCallbackResponse); ok {
-		if reply, ok := r.Reply.(*remoting.Response); ok {
-			if result, ok := reply.Result.(*protocol.RPCResult); ok {
-				if user, ok := result.Rest.(*User); ok {
-					u.ch <- user
-				}
-			}
-		}
-	}
-	u.ch <- nil
-}
-
-func (User) JavaClassName() string {
-	return "org.apache.dubbo.User"
-}
diff --git a/async/go-server/tests/integration/userprovider_test.go b/async/go-server/tests/integration/userprovider_test.go
deleted file mode 100644
index adf0e7f..0000000
--- a/async/go-server/tests/integration/userprovider_test.go
+++ /dev/null
@@ -1,54 +0,0 @@
-// +build integration
-
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package integration
-
-import (
-	"context"
-	"testing"
-)
-
-import (
-	_ "dubbo.apache.org/dubbo-go/v3/cluster/cluster_impl"
-	_ "dubbo.apache.org/dubbo-go/v3/cluster/loadbalance"
-	_ "dubbo.apache.org/dubbo-go/v3/common/proxy/proxy_factory"
-	_ "dubbo.apache.org/dubbo-go/v3/filter/filter_impl"
-	_ "dubbo.apache.org/dubbo-go/v3/protocol/dubbo"
-	_ "dubbo.apache.org/dubbo-go/v3/registry/protocol"
-	_ "dubbo.apache.org/dubbo-go/v3/registry/zookeeper"
-
-	"github.com/stretchr/testify/assert"
-)
-
-func TestGetUser(t *testing.T) {
-	user := &User{}
-	err := userProvider.GetUser(context.TODO(), []interface{}{"A001"}, user)
-	assert.Nil(t, err)
-	assert.Equal(t, "", user.ID)
-	assert.Equal(t, "", user.Name)
-	assert.Equal(t, int32(0), user.Age)
-
-	user = <-userProvider.ch
-
-	assert.NotNil(t, user)
-	assert.Equal(t, "A001", user.ID)
-	assert.Equal(t, "Alex Stocks", user.Name)
-	assert.Equal(t, int32(18), user.Age)
-	assert.NotNil(t, user.Time)
-}
diff --git a/attachment/README.md b/attachment/README.md
deleted file mode 100644
index ad54751..0000000
--- a/attachment/README.md
+++ /dev/null
@@ -1,35 +0,0 @@
-# Attachment Example
-
-### Background
-
-A Dubbo client can pass user data to the remote Dubbo server via attachment. Dubbo-go leverages `context.Context` as the attachment between consumer and provider. In order to use attachment, a `context.Context` is required to introduce as the first parameter of the service method, for example:
-
-```go
-GetUser func(ctx context.Context, req []interface{}, rsp *User) error
-```
-
-To pass the user data from the client side, a `map[string]interface{}` should be put into the `context.Context` with the key "attachment". The following code snippet shows how a user data "timestamp" is put into the attachment:
-
-```go
-ctx := context.WithValue(context.Background(), constant.AttachmentKey, 
-	map[string]interface{}{"timestamp": time.Now()})
-err := userProvider.GetUser(ctx, []interface{}{"A001"}, user)
-```
-
-On the provider side, a `context.Context` is passed as the first parameter along with the user data. Here below the code from the current samples shows how the service method is implemented, and how the user data is fetched from the attachment:
-
-```go
-func (u *UserProvider) GetUser(ctx context.Context, req []interface{}) (*User, error) {
-	t := time.Now()
-	attachment := ctx.Value(constant.AttachmentKey).(map[string]interface{})
-	if v, ok := attachment["timestamp"]; ok {
-		t = v.(time.Time).Add(-1 * 365 * 24 * time.Hour)
-	}
-
-	rsp := User{"A001", "Alex Stocks", 18, t}
-	return &rsp, nil
-}
-```
-
-Pls. refer to [HOWTO.md](../HOWTO.md) under the root directory to run this sample.
-
diff --git a/attachment/README_zh.md b/attachment/README_zh.md
deleted file mode 100644
index 305bb1f..0000000
--- a/attachment/README_zh.md
+++ /dev/null
@@ -1,37 +0,0 @@
-# Attachment 示例
-
-### 背景
-
-可以通过 attachment 把用户的数据从 Dubbo 的客户端传递给服务端。在 Dubbo-go 中,attachment 在二者之间的传递是通过 `context.Context` 的机制来完成的。如果要使用 attachment,那么应当把 `context.Context` 作为要调用的服务方法的第一个参数,例如:
-
-```go
-GetUser func(ctx context.Context, req []interface{}, rsp *User) error
-```
-
-为了在客户端传递用户数据到服务端,首先需要在方法的第一个参数 `context.Context` 中放入一个 `map[string]interface{}` 的数据类型,该数据的 Key 值约定为 "attachment"。以下的代码片段展示了如何把用户自定义的的一个时间戳通过该 map 中的 "timestamp" 放入 attachment 中:
-
-```go
-ctx := context.WithValue(context.Background(), constant.AttachmentKey, 
-	map[string]interface{}{"timestamp": time.Now()})
-err := userProvider.GetUser(ctx, []interface{}{"A001"}, user)
-```
-
-在服务提供方,方法的第一个参数 `context.Context` 传入时携带了用户在客户端放入的自定义数据。下面的代码就是本例子中的服务端实现,主要展示了如何从 attachment 中提取用户自定义的数据:
-
-
-```go
-func (u *UserProvider) GetUser(ctx context.Context, req []interface{}) (*User, error) {
-	t := time.Now()
-	attachment := ctx.Value(constant.AttachmentKey).(map[string]interface{})
-	if v, ok := attachment["timestamp"]; ok {
-		t = v.(time.Time).Add(-1 * 365 * 24 * time.Hour)
-	}
-
-	rsp := User{"A001", "Alex Stocks", 18, t}
-	return &rsp, nil
-}
-```
-
-请参阅根目录中的 [HOWTO.md](../HOWTO_zh.md) 来运行本例。
-
-
diff --git a/attachment/go-client/cmd/client.go b/attachment/go-client/cmd/client.go
deleted file mode 100644
index 14313d4..0000000
--- a/attachment/go-client/cmd/client.go
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package main
-
-import (
-	"context"
-	"os"
-	"time"
-)
-
-import (
-	_ "dubbo.apache.org/dubbo-go/v3/cluster/cluster_impl"
-	_ "dubbo.apache.org/dubbo-go/v3/cluster/loadbalance"
-	"dubbo.apache.org/dubbo-go/v3/common/constant"
-	_ "dubbo.apache.org/dubbo-go/v3/common/proxy/proxy_factory"
-	"dubbo.apache.org/dubbo-go/v3/config"
-	_ "dubbo.apache.org/dubbo-go/v3/filter/filter_impl"
-	_ "dubbo.apache.org/dubbo-go/v3/protocol/dubbo"
-	_ "dubbo.apache.org/dubbo-go/v3/registry/protocol"
-	_ "dubbo.apache.org/dubbo-go/v3/registry/zookeeper"
-
-	hessian "github.com/apache/dubbo-go-hessian2"
-
-	"github.com/dubbogo/gost/log"
-)
-
-import (
-	"github.com/apache/dubbo-go-samples/attachment/go-client/pkg"
-)
-
-var userProvider = new(pkg.UserProvider)
-
-func init() {
-	config.SetConsumerService(userProvider)
-	hessian.RegisterPOJO(&pkg.User{})
-}
-
-// need to setup environment variable "CONF_CONSUMER_FILE_PATH" to "conf/client.yml" before run
-func main() {
-	hessian.RegisterPOJO(&pkg.User{})
-	config.Load()
-	time.Sleep(3 * time.Second)
-
-	gxlog.CInfo("\n\n\nstart to test dubbo")
-	user := &pkg.User{}
-	ctx := context.WithValue(context.Background(), constant.AttachmentKey, map[string]interface{}{"timestamp": time.Now()})
-	err := userProvider.GetUser(ctx, []interface{}{"A001"}, user)
-	if err != nil {
-		gxlog.CError("error: %v\n", err)
-		os.Exit(1)
-		return
-	}
-	gxlog.CInfo("response result: %v\n", user)
-}
diff --git a/attachment/go-client/conf/client.yml b/attachment/go-client/conf/client.yml
deleted file mode 100644
index 958a65b..0000000
--- a/attachment/go-client/conf/client.yml
+++ /dev/null
@@ -1,59 +0,0 @@
-# dubbo client yaml configure file
-
-check: true
-# client
-request_timeout: "3s"
-# connect timeout
-connect_timeout: "3s"
-
-# application config
-application:
-  organization: "dubbo.io"
-  name: "UserInfoClient"
-  module: "dubbo-go attachment client"
-  version: "0.0.1"
-  environment: "dev"
-
-# registry config
-registries:
-  "demoZk":
-    protocol: "zookeeper"
-    timeout: "3s"
-    address: "127.0.0.1:2181"
-    username: ""
-    password: ""
-
-# reference config
-references:
-  "UserProvider":
-    registry: "demoZk"
-    protocol: "dubbo"
-    interface: "org.apache.dubbo.UserProvider"
-    cluster: "failover"
-    methods:
-      - name: "GetUser"
-        retries: 3
-
-# protocol config
-protocol_conf:
-  dubbo:
-    reconnect_interval: 0
-    connection_number: 1
-    heartbeat_period: "5s"
-    session_timeout: "180s"
-    pool_size: 64
-    pool_ttl: 600
-    getty_session_param:
-      compress_encoding: false
-      tcp_no_delay: true
-      tcp_keep_alive: true
-      keep_alive_period: "120s"
-      tcp_r_buf_size: 262144
-      tcp_w_buf_size: 65536
-      pkg_rq_size: 1024
-      pkg_wq_size: 512
-      tcp_read_timeout: "1s"
-      tcp_write_timeout: "5s"
-      wait_timeout: "1s"
-      max_msg_len: 1024000
-      session_name: "client"
diff --git a/attachment/go-client/conf/log.yml b/attachment/go-client/conf/log.yml
deleted file mode 100644
index 2b6e93a..0000000
--- a/attachment/go-client/conf/log.yml
+++ /dev/null
@@ -1,27 +0,0 @@
-level: "debug"
-development: true
-disableCaller: false
-disableStacktrace: false
-sampling:
-encoding: "console"
-
-# encoder
-encoderConfig:
-  messageKey: "message"
-  levelKey: "level"
-  timeKey: "time"
-  nameKey: "logger"
-  callerKey: "caller"
-  stacktraceKey: "stacktrace"
-  lineEnding: ""
-  levelEncoder: "capital"
-  timeEncoder: "iso8601"
-  durationEncoder: "seconds"
-  callerEncoder: "short"
-  nameEncoder: ""
-
-outputPaths:
-  - "stderr"
-errorOutputPaths:
-  - "stderr"
-initialFields:
diff --git a/attachment/go-client/pkg/user.go b/attachment/go-client/pkg/user.go
deleted file mode 100644
index 7733ea4..0000000
--- a/attachment/go-client/pkg/user.go
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package pkg
-
-import (
-	"context"
-	"time"
-)
-
-type User struct {
-	ID   string
-	Name string
-	Age  int32
-	Time time.Time
-}
-
-type UserProvider struct {
-	GetUser func(ctx context.Context, req []interface{}, rsp *User) error
-}
-
-func (u *UserProvider) Reference() string {
-	return "UserProvider"
-}
-
-func (User) JavaClassName() string {
-	return "org.apache.dubbo.User"
-}
diff --git a/attachment/go-server/cmd/server.go b/attachment/go-server/cmd/server.go
deleted file mode 100644
index 351fe89..0000000
--- a/attachment/go-server/cmd/server.go
+++ /dev/null
@@ -1,80 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package main
-
-import (
-	"fmt"
-	"os"
-	"os/signal"
-	"syscall"
-	"time"
-)
-
-import (
-	_ "dubbo.apache.org/dubbo-go/v3/cluster/cluster_impl"
-	_ "dubbo.apache.org/dubbo-go/v3/cluster/loadbalance"
-	"dubbo.apache.org/dubbo-go/v3/common/logger"
-	_ "dubbo.apache.org/dubbo-go/v3/common/proxy/proxy_factory"
-	"dubbo.apache.org/dubbo-go/v3/config"
-	_ "dubbo.apache.org/dubbo-go/v3/filter/filter_impl"
-	_ "dubbo.apache.org/dubbo-go/v3/protocol/dubbo"
-	_ "dubbo.apache.org/dubbo-go/v3/registry/protocol"
-	_ "dubbo.apache.org/dubbo-go/v3/registry/zookeeper"
-
-	hessian "github.com/apache/dubbo-go-hessian2"
-)
-
-import (
-	"github.com/apache/dubbo-go-samples/attachment/go-server/pkg"
-)
-
-var (
-	survivalTimeout = int(3e9)
-)
-
-// need to setup environment variable "CONF_PROVIDER_FILE_PATH" to "conf/server.yml" before run
-func main() {
-	hessian.RegisterPOJO(&pkg.User{})
-	config.Load()
-	logger.Info("dubbo-go server started.")
-
-	initSignal()
-}
-
-func initSignal() {
-	signals := make(chan os.Signal, 1)
-	// It is not possible to block SIGKILL or syscall.SIGSTOP
-	signal.Notify(signals, os.Interrupt, os.Kill, syscall.SIGHUP, syscall.SIGQUIT, syscall.SIGTERM, syscall.SIGINT)
-	for {
-		sig := <-signals
-		logger.Infof("get signal %s", sig.String())
-		switch sig {
-		case syscall.SIGHUP:
-			// reload()
-		default:
-			time.AfterFunc(time.Duration(survivalTimeout), func() {
-				logger.Warnf("app exit now by force...")
-				os.Exit(1)
-			})
-
-			// The program exits normally or timeout forcibly exits.
-			fmt.Println("provider app exit now...")
-			return
-		}
-	}
-}
diff --git a/attachment/go-server/conf/client.yml b/attachment/go-server/conf/client.yml
deleted file mode 100644
index e9e8cbf..0000000
--- a/attachment/go-server/conf/client.yml
+++ /dev/null
@@ -1,59 +0,0 @@
-# dubbo client yaml configure file
-
-check: true
-# client
-request_timeout: "3s"
-# connect timeout
-connect_timeout: "3s"
-
-# application config
-application:
-  organization: "dubbo.io"
-  name: "UserInfoTest"
-  module: "dubbo-go attachment consumer"
-  version: "0.0.1"
-  environment: "dev"
-
-# registry config
-registries:
-  "demoZk":
-    protocol: "zookeeper"
-    timeout: "3s"
-    address: "127.0.0.1:2181"
-    username: ""
-    password: ""
-
-# reference config
-references:
-  "UserProvider":
-    registry: "demoZk"
-    protocol: "dubbo"
-    interface: "org.apache.dubbo.UserProvider"
-    cluster: "failover"
-    methods:
-      - name: "GetUser"
-        retries: 3
-
-# protocol config
-protocol_conf:
-  dubbo:
-    reconnect_interval: 0
-    connection_number: 1
-    heartbeat_period: "5s"
-    session_timeout: "180s"
-    pool_size: 64
-    pool_ttl: 600
-    getty_session_param:
-      compress_encoding: false
-      tcp_no_delay: true
-      tcp_keep_alive: true
-      keep_alive_period: "120s"
-      tcp_r_buf_size: 262144
-      tcp_w_buf_size: 65536
-      pkg_rq_size: 1024
-      pkg_wq_size: 512
-      tcp_read_timeout: "1s"
-      tcp_write_timeout: "5s"
-      wait_timeout: "1s"
-      max_msg_len: 1024000
-      session_name: "client"
diff --git a/attachment/go-server/conf/log.yml b/attachment/go-server/conf/log.yml
deleted file mode 100644
index 970d988..0000000
--- a/attachment/go-server/conf/log.yml
+++ /dev/null
@@ -1,27 +0,0 @@
-level: "error"
-development: true
-disableCaller: false
-disableStacktrace: false
-sampling:
-encoding: "console"
-
-# encoder
-encoderConfig:
-  messageKey: "message"
-  levelKey: "level"
-  timeKey: "time"
-  nameKey: "logger"
-  callerKey: "caller"
-  stacktraceKey: "stacktrace"
-  lineEnding: ""
-  levelEncoder: "capital"
-  timeEncoder: "iso8601"
-  durationEncoder: "seconds"
-  callerEncoder: "short"
-  nameEncoder: ""
-
-outputPaths:
-  - "stderr"
-errorOutputPaths:
-  - "stderr"
-initialFields:
diff --git a/attachment/go-server/conf/server.yml b/attachment/go-server/conf/server.yml
deleted file mode 100644
index 0af09bb..0000000
--- a/attachment/go-server/conf/server.yml
+++ /dev/null
@@ -1,55 +0,0 @@
-# dubbo server yaml configure file
-
-# application config
-application:
-  organization: "dubbo.io"
-  name: "AttachmentProvider"
-  module: "dubbo-go attachment provider"
-  version: "0.0.1"
-  environment: "dev"
-
-# registry config
-registries:
-  "demoZk":
-    protocol: "zookeeper"
-    timeout: "3s"
-    address: "127.0.0.1:2181"
-
-# service config
-services:
-  "UserProvider":
-    registry: "demoZk"
-    protocol: "dubbo"
-    interface: "org.apache.dubbo.UserProvider"
-    loadbalance: "random"
-    warmup: "100"
-    cluster: "failover"
-    methods:
-      - name: "GetUser"
-        retries: 1
-        loadbalance: "random"
-
-# protocol config
-protocols:
-  "dubbo":
-    name: "dubbo"
-    port: 20000
-
-protocol_conf:
-  dubbo:
-    session_number: 700
-    session_timeout: "180s"
-    getty_session_param:
-      compress_encoding: false
-      tcp_no_delay: true
-      tcp_keep_alive: true
-      keep_alive_period: "120s"
-      tcp_r_buf_size: 262144
-      tcp_w_buf_size: 65536
-      pkg_rq_size: 1024
-      pkg_wq_size: 512
-      tcp_read_timeout: "1s"
-      tcp_write_timeout: "5s"
-      wait_timeout: "1s"
-      max_msg_len: 1024000
-      session_name: "server"
diff --git a/attachment/go-server/docker/docker-compose.yml b/attachment/go-server/docker/docker-compose.yml
deleted file mode 100644
index 8724179..0000000
--- a/attachment/go-server/docker/docker-compose.yml
+++ /dev/null
@@ -1,9 +0,0 @@
-version: '3'
-
-services:
-  zookeeper:
-    image: zookeeper
-    ports:
-      - 2181:2181
-    restart: on-failure
-
diff --git a/attachment/go-server/docker/docker-health-check.sh b/attachment/go-server/docker/docker-health-check.sh
deleted file mode 100644
index 2cc32c2..0000000
--- a/attachment/go-server/docker/docker-health-check.sh
+++ /dev/null
@@ -1,10 +0,0 @@
-curl 127.0.0.1:2181
-res=$?
-passCode=52
-while [ "$res" != "$passCode" ];do
-  sleep 5
-  curl 127.0.0.1:2181
-  res=$?
-done
-
-sleep 5
diff --git a/attachment/go-server/pkg/user.go b/attachment/go-server/pkg/user.go
deleted file mode 100644
index 465ac72..0000000
--- a/attachment/go-server/pkg/user.go
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package pkg
-
-import (
-	"context"
-	"time"
-)
-
-import (
-	"dubbo.apache.org/dubbo-go/v3/common/constant"
-	"dubbo.apache.org/dubbo-go/v3/config"
-
-	hessian "github.com/apache/dubbo-go-hessian2"
-
-	"github.com/dubbogo/gost/log"
-)
-
-func init() {
-	config.SetProviderService(new(UserProvider))
-	// ------for hessian2------
-	hessian.RegisterPOJO(&User{})
-}
-
-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)
-
-	t := time.Now()
-	attachment := ctx.Value(constant.AttachmentKey).(map[string]interface{})
-	if v, ok := attachment["timestamp"]; ok {
-		gxlog.CInfo("attachment: %v", v)
-		t = v.(time.Time).Add(-1 * 365 * 24 * time.Hour)
-	}
-
-	rsp := User{"A001", "Alex Stocks", 18, t}
-	gxlog.CInfo("rsp:%#v", rsp)
-	return &rsp, nil
-}
-
-func (u *UserProvider) Reference() string {
-	return "UserProvider"
-}
-
-func (u User) JavaClassName() string {
-	return "org.apache.dubbo.User"
-}
diff --git a/attachment/go-server/tests/integration/main_test.go b/attachment/go-server/tests/integration/main_test.go
deleted file mode 100644
index d028c55..0000000
--- a/attachment/go-server/tests/integration/main_test.go
+++ /dev/null
@@ -1,71 +0,0 @@
-// +build integration
-
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package integration
-
-import (
-	"context"
-	"os"
-	"testing"
-	"time"
-)
-
-import (
-	_ "dubbo.apache.org/dubbo-go/v3/cluster/cluster_impl"
-	_ "dubbo.apache.org/dubbo-go/v3/cluster/loadbalance"
-	_ "dubbo.apache.org/dubbo-go/v3/common/proxy/proxy_factory"
-	"dubbo.apache.org/dubbo-go/v3/config"
-	_ "dubbo.apache.org/dubbo-go/v3/filter/filter_impl"
-	_ "dubbo.apache.org/dubbo-go/v3/metadata/service/local"
-	_ "dubbo.apache.org/dubbo-go/v3/protocol/dubbo"
-	_ "dubbo.apache.org/dubbo-go/v3/registry/protocol"
-	_ "dubbo.apache.org/dubbo-go/v3/registry/zookeeper"
-
-	hessian "github.com/apache/dubbo-go-hessian2"
-)
-
-var userProvider = new(UserProvider)
-
-func TestMain(m *testing.M) {
-	config.SetConsumerService(userProvider)
-	hessian.RegisterPOJO(&User{})
-	config.Load()
-	time.Sleep(3 * time.Second)
-
-	os.Exit(m.Run())
-}
-
-type User struct {
-	ID   string
-	Name string
-	Age  int32
-	Time time.Time
-}
-
-type UserProvider struct {
-	GetUser func(ctx context.Context, req []interface{}, rsp *User) error
-}
-
-func (u *UserProvider) Reference() string {
-	return "UserProvider"
-}
-
-func (User) JavaClassName() string {
-	return "org.apache.dubbo.User"
-}
diff --git a/attachment/go-server/tests/integration/userprovider_test.go b/attachment/go-server/tests/integration/userprovider_test.go
deleted file mode 100644
index fdb38b3..0000000
--- a/attachment/go-server/tests/integration/userprovider_test.go
+++ /dev/null
@@ -1,49 +0,0 @@
-// +build integration
-
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package integration
-
-import (
-	"context"
-	"testing"
-	"time"
-)
-
-import (
-	"dubbo.apache.org/dubbo-go/v3/common/constant"
-
-	"github.com/stretchr/testify/assert"
-)
-
-func TestGetUser(t *testing.T) {
-	user := &User{}
-	timestamp := time.Now()
-	ctx := context.WithValue(context.Background(), constant.AttachmentKey, map[string]interface{}{"timestamp": timestamp})
-	err := userProvider.GetUser(ctx, []interface{}{"A001"}, user)
-
-	assert.Nil(t, err)
-	assert.Equal(t, "A001", user.ID)
-	assert.Equal(t, "Alex Stocks", user.Name)
-	assert.Equal(t, int32(18), user.Age)
-	assert.NotNil(t, user.Time)
-	assert.True(t, user.Time.Before(timestamp))
-
-	t.Logf("consumer timestamp: %v", timestamp)
-	t.Logf("provider timestamp: %v", user.Time)
-}
diff --git a/general/dubbo3/pb/dubbogo-grpc/stream-client/dubbogo-client/cmd/env.sh b/general/dubbo3/pb/dubbogo-grpc/stream-client/dubbogo-client/cmd/env.sh
deleted file mode 100644
index 4ac7e80..0000000
--- a/general/dubbo3/pb/dubbogo-grpc/stream-client/dubbogo-client/cmd/env.sh
+++ /dev/null
@@ -1,2 +0,0 @@
-export CONF_CONSUMER_FILE_PATH="../conf/client.yml"
-export APP_LOG_CONF_FILE="../conf/log.yml"
\ No newline at end of file
diff --git a/general/dubbo3/pb/dubbogo-java/protobuf/protobuf.mk b/general/dubbo3/pb/dubbogo-java/protobuf/protobuf.mk
deleted file mode 100644
index 5680c3d..0000000
--- a/general/dubbo3/pb/dubbogo-java/protobuf/protobuf.mk
+++ /dev/null
@@ -1,26 +0,0 @@
-.PHONY: compile
-PROTOC_GEN_GO := $(GOPATH)/bin/protoc-gen-go
-PROTOC := $(shell which protoc)
-ifeq ($(PROTOC),)
-	PROTOC = must-rebuild
-endif
-
-UNAME := $(shell uname)
-
-$(PROTOC):
-ifeq ($(UNAME), Darwin)
-	brew install protobuf
-endif
-ifeq ($(UNAME), Linux)
-	sudo apt-get install protobuf-compiler
-endif
-
-$(PROTOC_GEN_GO):
-	go get -u dubbo.apache.org/dubbo-go/v3/protocol/dubbo3/protoc-gen-dubbo3
-
-helloworld.pb.go: helloworld.proto | $(PROTOC_GEN_GO) $(PROTOC)
-	protoc -I . helloworld.proto --dubbo3_out=plugins=grpc+dubbo:.
-
-.PHONY: compile
-compile: helloworld.pb.go
-
diff --git a/generic/README.md b/generic/README.md
index f22fe37..5f5943e 100644
--- a/generic/README.md
+++ b/generic/README.md
@@ -36,17 +36,17 @@ cd ./default/go-client/cmd \
 
 ### Protobuf Json (Disabled)
 
-The case for Protobuf Json is at `protobufjson` directory. The first step is to generate struct definitions with proto file.  (The `user.pb.go` is generated for integrated tests, but we highly recommend you generate by yourself.)
+The case for Protobuf Json is at `protobufjson` directory. The first step is to generate struct definitions with proto file.  (The `user.api.go` is generated for integrated tests, but we highly recommend you generate by yourself.)
 
 ```shell
 cd ./protobufjson \
   && protoc --go_out=. user.proto
 ```
 
-Copy `user.pb.go` file generated by protobuf to provider.
+Copy `user.api.go` file generated by protobuf to provider.
 
 ```shell
-mv ./protobufjson/user.pb.go ./protobufjson/go-server/pkg
+mv ./protobufjson/user.api.go ./protobufjson/go-server/pkg
 ```
 
 Launch the provider by the following code.
diff --git a/generic/README_zh.md b/generic/README_zh.md
index 3587dc7..043bcbc 100644
--- a/generic/README_zh.md
+++ b/generic/README_zh.md
@@ -36,17 +36,17 @@ cd ./default/go-client/cmd \
 
 ### Protobuf Json (暂时禁用)
 
-Protobuf Json的例子放在`protobufjson`文件夹中。首先需要根据proto文件生成结构体定义。(注:`user.pb.go`已经生成,这是为了CI的集成测试使用的,但是我们仍然强烈建议你自己生成一次。)
+Protobuf Json的例子放在`protobufjson`文件夹中。首先需要根据proto文件生成结构体定义。(注:`user.api.go`已经生成,这是为了CI的集成测试使用的,但是我们仍然强烈建议你自己生成一次。)
 
 ```shell
 cd ./protobufjson \
   && protoc --go_out=. user.proto
 ```
 
-拷贝`user.pb.go`文件到提供者文件夹。
+拷贝`user.api.go`文件到提供者文件夹。
 
 ```shell
-mv ./protobufjson/user.pb.go ./protobufjson/go-server/pkg
+mv ./protobufjson/user.api.go ./protobufjson/go-server/pkg
 ```
 
 通过下面的代码启动提供者。
diff --git a/go.mod b/go.mod
index 590b9e6..16b4114 100644
--- a/go.mod
+++ b/go.mod
@@ -1,14 +1,14 @@
 module github.com/apache/dubbo-go-samples
 
 require (
-	dubbo.apache.org/dubbo-go/v3 v3.0.0-rc2.0.20210725154253-9aeb7ff3c612
+	dubbo.apache.org/dubbo-go/v3 v3.0.0-rc2.0.20210821071019-8cb93935d529
 	github.com/alibaba/sentinel-golang v1.0.2
 	github.com/apache/dubbo-getty v1.4.3
 	github.com/apache/dubbo-go-hessian2 v1.9.2
 	github.com/bwmarrin/snowflake v0.3.0
-	github.com/dubbogo/gost v1.11.14
+	github.com/dubbogo/gost v1.11.16
 	github.com/dubbogo/net v0.0.3
-	github.com/dubbogo/triple v1.0.1
+	github.com/dubbogo/triple v1.0.5
 	github.com/emicklei/go-restful/v3 v3.4.0
 	github.com/golang/protobuf v1.5.2
 	github.com/opentracing/opentracing-go v1.2.0
@@ -20,12 +20,11 @@ require (
 	github.com/transaction-wg/seata-golang v0.2.0
 	github.com/uber/jaeger-client-go v2.22.1+incompatible
 	github.com/uber/jaeger-lib v2.2.0+incompatible // indirect
+	golang.org/x/net v0.0.0-20201224014010-6772e930b67b // indirect
 	google.golang.org/grpc v1.38.0
-	google.golang.org/protobuf v1.26.0
+	google.golang.org/protobuf v1.27.1
 )
 
 replace github.com/envoyproxy/go-control-plane => github.com/envoyproxy/go-control-plane v0.8.0
 
-// replace dubbo.apache.org/dubbo-go/v3 => /Users/docker/code/github/go/dubbo-go
-
 go 1.13
diff --git a/go.sum b/go.sum
index da228e9..89d7e37 100644
--- a/go.sum
+++ b/go.sum
@@ -12,6 +12,8 @@ cloud.google.com/go/firestore v1.1.0/go.mod h1:ulACoGHTpvq5r8rxGJ4ddJZBZqakUQqCl
 cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I=
 cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw=
 dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU=
+dubbo.apache.org/dubbo-go/v3 v3.0.0-rc2.0.20210821071019-8cb93935d529 h1:bIIKczliDGFh9ZHVwOr5NPZKvbAF5XLNeHRDc2/ifsA=
+dubbo.apache.org/dubbo-go/v3 v3.0.0-rc2.0.20210821071019-8cb93935d529/go.mod h1:EE3h5Dj/YxLm4hDnMsJ3MI50jHqZ3HJqE6IkdUKg4wc=
 github.com/Azure/go-autorest/autorest v0.9.0/go.mod h1:xyHB1BMZT0cuDHU7I0+g046+BFDTQ8rEZB0s4Yfa6bI=
 github.com/Azure/go-autorest/autorest/adal v0.5.0/go.mod h1:8Z9fGy2MpX0PvDjB1pEgQTmVqjGhiHBW7RJJEciWzS0=
 github.com/Azure/go-autorest/autorest/date v0.1.0/go.mod h1:plvfp3oPSKwf2DNjlBjWF/7vwR+cUD/ELuzDCXwHUVA=
@@ -143,13 +145,14 @@ github.com/dubbogo/go-zookeeper v1.0.3/go.mod h1:fn6n2CAEer3novYgk9ULLwAjuV8/g4D
 github.com/dubbogo/gost v1.9.0/go.mod h1:pPTjVyoJan3aPxBPNUX0ADkXjPibLo+/Ib0/fADXSG8=
 github.com/dubbogo/gost v1.10.1/go.mod h1:+mQGS51XQEUWZP2JeGZTxJwipjRKtJO7Tr+FOg+72rI=
 github.com/dubbogo/gost v1.11.13/go.mod h1:vIcP9rqz2KsXHPjsAwIUtfJIJjppQLQDcYaZTy/61jI=
-github.com/dubbogo/gost v1.11.14 h1:9lfcdILOmqTOVAW1fPHa5uf1NrD6jlIOBe4vf8576yQ=
-github.com/dubbogo/gost v1.11.14/go.mod h1:vIcP9rqz2KsXHPjsAwIUtfJIJjppQLQDcYaZTy/61jI=
+github.com/dubbogo/gost v1.11.16 h1:fvOw8aKQ0BuUYuD+MaXAYFvT7tg2l7WAS5SL5gZJpFs=
+github.com/dubbogo/gost v1.11.16/go.mod h1:vIcP9rqz2KsXHPjsAwIUtfJIJjppQLQDcYaZTy/61jI=
 github.com/dubbogo/jsonparser v1.0.1/go.mod h1:tYAtpctvSP/tWw4MeelsowSPgXQRVHHWbqL6ynps8jU=
 github.com/dubbogo/net v0.0.3 h1:2k53mh+1U8h1gFjJ8ykzyP4wNdAdgjc5moD+xVHI/AE=
 github.com/dubbogo/net v0.0.3/go.mod h1:B6/ka3g8VzcyrmdCH4VkHP1K0aHeI37FmclS+TCwIBU=
-github.com/dubbogo/triple v1.0.1 h1:fdBkXTR0I4UBBCDcN+k22uJWU338ZK5mvOPpIBIL5h8=
 github.com/dubbogo/triple v1.0.1/go.mod h1:O6vQD2XLCWugzAk0P27HTW4+Uhkd8sjaQn0BZijdGzU=
+github.com/dubbogo/triple v1.0.5 h1:bDASS3u0ILC+KaUmWaDDuZ7/pVZcljyO/1TkwXMvcsM=
+github.com/dubbogo/triple v1.0.5/go.mod h1:tCl0mV54+V8Br9z71sFbS1IQUG41QKZUrW6FGaLheM0=
 github.com/dustin/go-humanize v0.0.0-20171111073723-bb3d318650d4/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk=
 github.com/dustin/go-humanize v1.0.0 h1:VSnTsYCnlFHaM2/igO1h6X3HA71jcobQuxemgkq4zYo=
 github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk=
@@ -821,8 +824,9 @@ golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/
 golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
 golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
 golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
-golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb h1:eBmm0M9fYhWpKZLjQUUKka/LtIxf46G4fxeEz5KJr9U=
 golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
+golang.org/x/net v0.0.0-20201224014010-6772e930b67b h1:iFwSg7t5GZmB/Q5TjiEAsdoLDrdJRC1RiF2WhuV29Qw=
+golang.org/x/net v0.0.0-20201224014010-6772e930b67b/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
 golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
 golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
 golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
@@ -997,8 +1001,9 @@ google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpAD
 google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4=
 google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c=
 google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=
-google.golang.org/protobuf v1.26.0 h1:bxAC2xTBsZGibn2RTntX0oH50xLsqy1OxA9tTL3p/lk=
 google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
+google.golang.org/protobuf v1.27.1 h1:SnqbnDw1V7RiZcXPx5MEeqPv2s79L9i7BJUlG/+RurQ=
+google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
 gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw=
 gopkg.in/asn1-ber.v1 v1.0.0-20181015200546-f715ec2f112d/go.mod h1:cuepJuh7vyXfUyUwEgHQXw849cJrilpS5NeIjOWESAw=
 gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
diff --git a/helloworld/README.md b/helloworld/README.md
index 893a170..81616fa 100644
--- a/helloworld/README.md
+++ b/helloworld/README.md
@@ -1,20 +1,21 @@
 # Helloworld for Dubbo-go 3.0
 
-For pb definition and go client and server startup, please refer to [dubbogo-grpc](../dubbogo-grpc/README.md)
+For api definition and go client and server startup, please refer to [dubbo-go 3.0 quickstart](https://dubbogo.github.io/zh-cn/docs/user/quickstart/3.0/quickstart.html)
 
 ## Instructions
+1. Start zookeeper
 
-1. Start the server
+2. Start the server
 
-Use goland to start triple/gojava-go-server
+Use goland to start helloworld-go-server
 
 or
 
 Execute `sh run.sh` in the java-server folder to start the java server
 
-2. Start the client
+3. Start the client
 
-Use goland to start triple/gojava-go-client
+Use goland to start helloworld-go-client
 
 or
 
diff --git a/helloworld/README_zh.md b/helloworld/README_zh.md
index d280c2e..a682c27 100644
--- a/helloworld/README_zh.md
+++ b/helloworld/README_zh.md
@@ -1,20 +1,21 @@
 # Helloworld for Dubbo-go 3.0
 
-pb 定义以及 go 客户端、服务端启动,可以参考 [dubbogo-grpc](../dubbogo-grpc/README_zh.md)
+api 定义以及 go 客户端、服务端启动,可以参考 [dubbo-go 3.0 快速开始](https://dubbogo.github.io/zh-cn/docs/user/quickstart/3.0/quickstart.html)
 
 ## 使用方法
+1. 启动 zookeeper
 
-1. 启动服务端
+2. 启动服务端
 
-使用 goland 启动 triple/gojava-go-server
+使用 goland 启动 helloworld-go-server
 
 或者
 
 在 java-server 文件夹下执行 `sh run.sh` 启动 java server
 
-2. 启动客户端
+3. 启动客户端
 
-使用 goland 启动 triple/gojava-go-client
+使用 goland 启动 helloworld-go-client
 
 或者
 
diff --git a/helloworld/go-client/cmd/client.go b/helloworld/go-client/cmd/client.go
index 3f40b44..68fe2c0 100644
--- a/helloworld/go-client/cmd/client.go
+++ b/helloworld/go-client/cmd/client.go
@@ -19,50 +19,37 @@ package main
 
 import (
 	"context"
-	"fmt"
 	"time"
 )
 
 import (
-	_ "dubbo.apache.org/dubbo-go/v3/cluster/cluster_impl"
-	_ "dubbo.apache.org/dubbo-go/v3/cluster/loadbalance"
-	_ "dubbo.apache.org/dubbo-go/v3/common/proxy/proxy_factory"
+	"dubbo.apache.org/dubbo-go/v3/common/logger"
 	"dubbo.apache.org/dubbo-go/v3/config"
-	_ "dubbo.apache.org/dubbo-go/v3/filter/filter_impl"
-	_ "dubbo.apache.org/dubbo-go/v3/protocol/dubbo3"
-	_ "dubbo.apache.org/dubbo-go/v3/registry/protocol"
-	_ "dubbo.apache.org/dubbo-go/v3/registry/zookeeper"
+	_ "dubbo.apache.org/dubbo-go/v3/imports"
 )
 
 import (
-	pb "github.com/apache/dubbo-go-samples/helloworld/protobuf"
+	"github.com/apache/dubbo-go-samples/api"
 )
 
-var grpcGreeterImpl = new(pb.GreeterClientImpl)
+var grpcGreeterImpl = new(api.GreeterClientImpl)
 
 func init() {
 	config.SetConsumerService(grpcGreeterImpl)
 }
 
-// deprecated: need to setup environment variable "CONF_CONSUMER_FILE_PATH" to "conf/client.yml" before run
-// or config.Load(config.Path("..."))
+// export DUBBO_GO_CONFIG_PATH= PATH_TO_SAMPLES/helloworld/go-client/conf/dubbogo.yml
 func main() {
 	config.Load()
 	time.Sleep(3 * time.Second)
 
-	fmt.Println("\n\n\nstart to test dubbo")
-	req := &pb.HelloRequest{
+	logger.Info("start to test dubbo")
+	req := &api.HelloRequest{
 		Name: "laurence",
 	}
-
-	reply := &pb.User{}
-
-	ctx := context.Background()
-	ctx = context.WithValue(ctx, "tri-req-id", "test_value_XXXXXXXX")
-
-	err := grpcGreeterImpl.SayHello(ctx, req, reply)
-	if err != nil {
-		panic(err)
+	reply := &api.User{}
+	if err := grpcGreeterImpl.SayHello(context.Background(), req, reply); err != nil {
+		logger.Error(err)
 	}
-	fmt.Printf("client response result: %v\n", reply)
+	logger.Infof("client response result: %v\n", reply)
 }
diff --git a/helloworld/go-client/conf/client.yml b/helloworld/go-client/conf/dubbogo.yml
similarity index 67%
copy from helloworld/go-client/conf/client.yml
copy to helloworld/go-client/conf/dubbogo.yml
index 64b8ae1..c11aef3 100644
--- a/helloworld/go-client/conf/client.yml
+++ b/helloworld/go-client/conf/dubbogo.yml
@@ -10,4 +10,4 @@ dubbo:
     references:
       "greeterImpl":
         protocol: "tri"
-        interface: "protobuf.Greeter" # must be compatible with grpc or dubbo-java
\ No newline at end of file
+        interface: "com.apache.dubbo.sample.basic.IGreeter" # must be compatible with grpc or dubbo-java
\ No newline at end of file
diff --git a/helloworld/go-server/cmd/server.go b/helloworld/go-server/cmd/server.go
index 68ac7ac..4f23c26 100644
--- a/helloworld/go-server/cmd/server.go
+++ b/helloworld/go-server/cmd/server.go
@@ -18,22 +18,30 @@
 package main
 
 import (
-	_ "dubbo.apache.org/dubbo-go/v3/common/proxy/proxy_factory"
+	"context"
+)
+
+import (
+	"dubbo.apache.org/dubbo-go/v3/common/logger"
 	"dubbo.apache.org/dubbo-go/v3/config"
-	_ "dubbo.apache.org/dubbo-go/v3/filter/filter_impl"
-	_ "dubbo.apache.org/dubbo-go/v3/protocol/dubbo3"
-	_ "dubbo.apache.org/dubbo-go/v3/registry/protocol"
-	_ "dubbo.apache.org/dubbo-go/v3/registry/zookeeper"
+	_ "dubbo.apache.org/dubbo-go/v3/imports"
 )
 
 import (
-	"github.com/apache/dubbo-go-samples/helloworld/go-server/pkg"
+	"github.com/apache/dubbo-go-samples/api"
 )
 
-// deprecated: need to setup environment variable "CONF_PROVIDER_FILE_PATH" to "conf/server.yml" before run
-// config.Load(config.Path("..."))
+type GreeterProvider struct {
+	api.GreeterProviderBase
+}
+
+func (s *GreeterProvider) SayHello(ctx context.Context, in *api.HelloRequest) (*api.User, error) {
+	logger.Infof("Dubbo3 GreeterProvider get user name = %s\n", in.Name)
+	return &api.User{Name: "Hello " + in.Name, Id: "12345", Age: 21}, nil
+}
+
 func main() {
-	config.SetProviderService(pkg.NewGreeterProvider())
+	config.SetProviderService(&GreeterProvider{})
 	config.Load()
 	select {}
 }
diff --git a/helloworld/go-server/conf/server.yml b/helloworld/go-server/conf/dubbogo.yml
similarity index 72%
copy from helloworld/go-server/conf/server.yml
copy to helloworld/go-server/conf/dubbogo.yml
index a435688..5e9cfb4 100644
--- a/helloworld/go-server/conf/server.yml
+++ b/helloworld/go-server/conf/dubbogo.yml
@@ -14,4 +14,4 @@ dubbo:
     services:
       "greeterImpl":
         protocol: "triple"
-        interface: "protobuf.Greeter" # must be compatible with grpc or dubbo-java
\ No newline at end of file
+        interface: "com.apache.dubbo.sample.basic.IGreeter" # must be compatible with grpc or dubbo-java
\ No newline at end of file
diff --git a/helloworld/go-server/pkg/greeter.go b/helloworld/go-server/pkg/greeter.go
deleted file mode 100644
index 08b393a..0000000
--- a/helloworld/go-server/pkg/greeter.go
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
-Licensed to the Apache Software Foundation (ASF) under one or more
-contributor license agreements.  See the NOTICE file distributed with
-this work for additional information regarding copyright ownership.
-The ASF licenses this file to You under the Apache License, Version 2.0
-(the "License"); you may not use this file except in compliance with
-the License.  You may obtain a copy of the License at
-
-    http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-*/
-
-package pkg
-
-import (
-	"context"
-)
-
-import (
-	"dubbo.apache.org/dubbo-go/v3/common/logger"
-)
-
-import (
-	pb "github.com/apache/dubbo-go-samples/helloworld/protobuf"
-)
-
-type GreeterProvider struct {
-	*pb.GreeterProviderBase
-}
-
-func NewGreeterProvider() *GreeterProvider {
-	return &GreeterProvider{
-		GreeterProviderBase: &pb.GreeterProviderBase{},
-	}
-}
-
-func (s *GreeterProvider) SayHello(ctx context.Context, in *pb.HelloRequest) (*pb.User, error) {
-	logger.Infof("Dubbo3 GreeterProvider get user name = %s\n", in.Name)
-	return &pb.User{Name: "Hello " + in.Name, Id: "12345", Age: 21}, nil
-}
diff --git a/helloworld/java-client/pom.xml b/helloworld/java-client/pom.xml
index 10ae5bb..4cf91bd 100644
--- a/helloworld/java-client/pom.xml
+++ b/helloworld/java-client/pom.xml
@@ -27,7 +27,7 @@
     <properties>
         <source.level>1.8</source.level>
         <target.level>1.8</target.level>
-        <dubbo.version>3.0.0</dubbo.version>
+        <dubbo.version>3.0.2</dubbo.version>
         <junit.version>4.12</junit.version>
         <spring-test.version>4.3.16.RELEASE</spring-test.version>
         <maven-compiler-plugin.version>3.7.0</maven-compiler-plugin.version>
diff --git a/helloworld/java-server/pom.xml b/helloworld/java-server/pom.xml
index dd518ca..bac62e9 100644
--- a/helloworld/java-server/pom.xml
+++ b/helloworld/java-server/pom.xml
@@ -29,7 +29,7 @@
     <properties>
         <source.level>1.8</source.level>
         <target.level>1.8</target.level>
-        <dubbo.version>3.0.0</dubbo.version>
+        <dubbo.version>3.0.2</dubbo.version>
         <junit.version>4.12</junit.version>
         <spring-test.version>4.3.16.RELEASE</spring-test.version>
         <maven-compiler-plugin.version>3.7.0</maven-compiler-plugin.version>
diff --git a/registry/zookeeper/go-server/docker/docker-compose.yml b/integrate_test/helloworld/docker/docker-compose.yml
similarity index 100%
rename from registry/zookeeper/go-server/docker/docker-compose.yml
rename to integrate_test/helloworld/docker/docker-compose.yml
diff --git a/helloworld/go-server/tests/integration/main_test.go b/integrate_test/helloworld/tests/integration/main_test.go
similarity index 95%
rename from helloworld/go-server/tests/integration/main_test.go
rename to integrate_test/helloworld/tests/integration/main_test.go
index c739d6c..d8a0568 100644
--- a/helloworld/go-server/tests/integration/main_test.go
+++ b/integrate_test/helloworld/tests/integration/main_test.go
@@ -38,7 +38,7 @@ import (
 )
 
 import (
-	dubbo3pb "github.com/apache/dubbo-go-samples/helloworld/protobuf"
+	dubbo3pb "github.com/apache/dubbo-go-samples/api"
 )
 
 var greeterProvider = new(dubbo3pb.GreeterClientImpl)
diff --git a/helloworld/go-server/tests/integration/userprovider_test.go b/integrate_test/helloworld/tests/integration/userprovider_test.go
similarity index 95%
rename from helloworld/go-server/tests/integration/userprovider_test.go
rename to integrate_test/helloworld/tests/integration/userprovider_test.go
index 01a7855..992c55d 100644
--- a/helloworld/go-server/tests/integration/userprovider_test.go
+++ b/integrate_test/helloworld/tests/integration/userprovider_test.go
@@ -29,7 +29,7 @@ import (
 )
 
 import (
-	dubbo3pb "github.com/apache/dubbo-go-samples/helloworld/protobuf"
+	dubbo3pb "github.com/apache/dubbo-go-samples/api"
 )
 
 func TestSayHello(t *testing.T) {
diff --git a/helloworld/go-server/docker/docker-compose.yml b/integrate_test/registry/zookeeper/docker/docker-compose.yml
similarity index 100%
rename from helloworld/go-server/docker/docker-compose.yml
rename to integrate_test/registry/zookeeper/docker/docker-compose.yml
diff --git a/registry/zookeeper/go-server/docker/docker-health-check.sh b/integrate_test/registry/zookeeper/docker/docker-health-check.sh
similarity index 100%
rename from registry/zookeeper/go-server/docker/docker-health-check.sh
rename to integrate_test/registry/zookeeper/docker/docker-health-check.sh
diff --git a/registry/zookeeper/go-server/tests/integration/main_test.go b/integrate_test/registry/zookeeper/tests/integration/main_test.go
similarity index 100%
rename from registry/zookeeper/go-server/tests/integration/main_test.go
rename to integrate_test/registry/zookeeper/tests/integration/main_test.go
diff --git a/registry/zookeeper/go-server/tests/integration/userprovider_test.go b/integrate_test/registry/zookeeper/tests/integration/userprovider_test.go
similarity index 100%
rename from registry/zookeeper/go-server/tests/integration/userprovider_test.go
rename to integrate_test/registry/zookeeper/tests/integration/userprovider_test.go
diff --git a/logger/go-server/cmd/server.go b/logger/go-server/cmd/server.go
index 5fe60e0..d26cdf2 100755
--- a/logger/go-server/cmd/server.go
+++ b/logger/go-server/cmd/server.go
@@ -40,7 +40,7 @@ import (
 )
 
 import (
-	"github.com/apache/dubbo-go-samples/helloworld/go-server/pkg"
+	"github.com/apache/dubbo-go-samples/logger/go-server/pkg"
 )
 
 var (
diff --git a/registry/zookeeper/go-client/cmd/client.go b/registry/zookeeper/go-client/cmd/client.go
index 1735077..a7cb8cd 100644
--- a/registry/zookeeper/go-client/cmd/client.go
+++ b/registry/zookeeper/go-client/cmd/client.go
@@ -19,49 +19,40 @@ package main
 
 import (
 	"context"
-	"os"
 	"time"
 )
 
 import (
-	_ "dubbo.apache.org/dubbo-go/v3/cluster/cluster_impl"
-	_ "dubbo.apache.org/dubbo-go/v3/cluster/loadbalance"
-	_ "dubbo.apache.org/dubbo-go/v3/common/proxy/proxy_factory"
+	"dubbo.apache.org/dubbo-go/v3/common/logger"
 	"dubbo.apache.org/dubbo-go/v3/config"
-	_ "dubbo.apache.org/dubbo-go/v3/filter/filter_impl"
-	_ "dubbo.apache.org/dubbo-go/v3/protocol/dubbo"
-	_ "dubbo.apache.org/dubbo-go/v3/registry/protocol"
-	_ "dubbo.apache.org/dubbo-go/v3/registry/zookeeper"
-
-	gxlog "github.com/dubbogo/gost/log"
+	_ "dubbo.apache.org/dubbo-go/v3/imports"
 )
 
 import (
-	"github.com/apache/dubbo-go-samples/registry/zookeeper/go-client/pkg"
+	"github.com/apache/dubbo-go-samples/api"
 )
 
-var userProvider = new(pkg.UserProvider)
+var grpcGreeterImpl = new(api.GreeterClientImpl)
 
 func init() {
-	config.SetConsumerService(userProvider)
-
+	config.SetConsumerService(grpcGreeterImpl)
 }
 
-// need to setup environment variable "CONF_CONSUMER_FILE_PATH" to "conf/client.yml" before run
+// export DUBBO_GO_CONFIG_PATH= PATH_TO_SAMPLES/helloworld/go-client/conf/dubbogo.yml if needed
 func main() {
-	path := "./registry/zookeeper/go-client/conf/application.yml"
+	path := "./registry/zookeeper/go-client/conf/dubbogo.yml"
 	if err := config.Load(config.WithPath(path)); err != nil {
 		panic(err)
 	}
 	time.Sleep(3 * time.Second)
 
-	gxlog.CInfo("\n\n\nstart to test dubbo")
-	user := &pkg.User{}
-	err := userProvider.GetUser(context.TODO(), []interface{}{"A001"}, user)
-	if err != nil {
-		gxlog.CError("error: %v\n", err)
-		os.Exit(1)
-		return
+	logger.Info("start to test dubbo")
+	req := &api.HelloRequest{
+		Name: "laurence",
+	}
+	reply := &api.User{}
+	if err := grpcGreeterImpl.SayHello(context.Background(), req, reply); err != nil {
+		logger.Error(err)
 	}
-	gxlog.CInfo("response result: %v\n", user)
+	logger.Infof("client response result: %v\n", reply)
 }
diff --git a/registry/zookeeper/go-client/conf/application.yml b/registry/zookeeper/go-client/conf/application.yml
deleted file mode 100644
index 9e84b93..0000000
--- a/registry/zookeeper/go-client/conf/application.yml
+++ /dev/null
@@ -1,20 +0,0 @@
-dubbo:
-  registries:
-    zk:
-      timeout: 10s
-      address: zookeeper://127.0.0.1:2181
-  protocols:
-    dubbo:
-      name: dubbo
-      port: 20000
-  consumer:
-    check: false
-    references:
-      UserProvider:
-        registry: zk
-        protocol: dubbo
-        interface: org.apache.dubbo.UserService
-        cluster: failover
-        methods:
-          - name: GetUser
-            retries: 3
\ No newline at end of file
diff --git a/helloworld/go-client/conf/client.yml b/registry/zookeeper/go-client/conf/dubbogo.yml
similarity index 67%
rename from helloworld/go-client/conf/client.yml
rename to registry/zookeeper/go-client/conf/dubbogo.yml
index 64b8ae1..c11aef3 100644
--- a/helloworld/go-client/conf/client.yml
+++ b/registry/zookeeper/go-client/conf/dubbogo.yml
@@ -10,4 +10,4 @@ dubbo:
     references:
       "greeterImpl":
         protocol: "tri"
-        interface: "protobuf.Greeter" # must be compatible with grpc or dubbo-java
\ No newline at end of file
+        interface: "com.apache.dubbo.sample.basic.IGreeter" # must be compatible with grpc or dubbo-java
\ No newline at end of file
diff --git a/registry/zookeeper/go-client/pkg/user.go b/registry/zookeeper/go-client/pkg/user.go
deleted file mode 100644
index dac6ccf..0000000
--- a/registry/zookeeper/go-client/pkg/user.go
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package pkg
-
-import (
-	"context"
-	"time"
-)
-
-import "github.com/apache/dubbo-go-hessian2"
-
-func init() {
-	hessian.RegisterPOJO(new(User))
-}
-
-type User struct {
-	ID   string
-	Name string
-	Age  int32
-	Time time.Time
-}
-
-type UserProvider struct {
-	GetUser func(ctx context.Context, req []interface{}, rsp *User) error
-}
-
-func (u *UserProvider) Reference() string {
-	return "UserProvider"
-}
-
-func (User) JavaClassName() string {
-	return "org.apache.dubbo.User"
-}
diff --git a/registry/zookeeper/go-server/cmd/server.go b/registry/zookeeper/go-server/cmd/server.go
index fb82cfa..ffe7f46 100644
--- a/registry/zookeeper/go-server/cmd/server.go
+++ b/registry/zookeeper/go-server/cmd/server.go
@@ -18,8 +18,8 @@
 package main
 
 import (
+	"context"
 	"fmt"
-	"github.com/apache/dubbo-go-samples/registry/zookeeper/go-server/pkg"
 	"os"
 	"os/signal"
 	"syscall"
@@ -27,26 +27,32 @@ import (
 )
 
 import (
-	_ "dubbo.apache.org/dubbo-go/v3/cluster/cluster_impl"
-	_ "dubbo.apache.org/dubbo-go/v3/cluster/loadbalance"
 	"dubbo.apache.org/dubbo-go/v3/common/logger"
-	_ "dubbo.apache.org/dubbo-go/v3/common/proxy/proxy_factory"
 	"dubbo.apache.org/dubbo-go/v3/config"
-	_ "dubbo.apache.org/dubbo-go/v3/filter/filter_impl"
-	_ "dubbo.apache.org/dubbo-go/v3/protocol/dubbo"
-	_ "dubbo.apache.org/dubbo-go/v3/registry/protocol"
-	_ "dubbo.apache.org/dubbo-go/v3/registry/zookeeper"
+	_ "dubbo.apache.org/dubbo-go/v3/imports"
+)
+
+import (
+	"github.com/apache/dubbo-go-samples/api"
 )
 
 var (
 	survivalTimeout = int(3e9)
 )
 
-// need to setup environment variable "CONF_PROVIDER_FILE_PATH" to "conf/server.yml" before run
+type GreeterProvider struct {
+	api.GreeterProviderBase
+}
+
+func (s *GreeterProvider) SayHello(ctx context.Context, in *api.HelloRequest) (*api.User, error) {
+	logger.Infof("Dubbo3 GreeterProvider get user name = %s\n", in.Name)
+	return &api.User{Name: "Hello " + in.Name, Id: "12345", Age: 21}, nil
+}
+
 func main() {
-	config.SetProviderService(new(pkg.UserProvider))
+	config.SetProviderService(&GreeterProvider{})
 
-	path := "./registry/zookeeper/go-server/conf/server.yml"
+	path := "./registry/zookeeper/go-server/conf/dubbogo.yml"
 
 	if err := config.Load(config.WithPath(path)); err != nil {
 		panic(err)
diff --git a/helloworld/go-server/conf/server.yml b/registry/zookeeper/go-server/conf/dubbogo.yml
similarity index 72%
rename from helloworld/go-server/conf/server.yml
rename to registry/zookeeper/go-server/conf/dubbogo.yml
index a435688..5e9cfb4 100644
--- a/helloworld/go-server/conf/server.yml
+++ b/registry/zookeeper/go-server/conf/dubbogo.yml
@@ -14,4 +14,4 @@ dubbo:
     services:
       "greeterImpl":
         protocol: "triple"
-        interface: "protobuf.Greeter" # must be compatible with grpc or dubbo-java
\ No newline at end of file
+        interface: "com.apache.dubbo.sample.basic.IGreeter" # must be compatible with grpc or dubbo-java
\ No newline at end of file
diff --git a/registry/zookeeper/go-server/conf/server.yml b/registry/zookeeper/go-server/conf/server.yml
deleted file mode 100644
index bb45535..0000000
--- a/registry/zookeeper/go-server/conf/server.yml
+++ /dev/null
@@ -1,24 +0,0 @@
-dubbo:
-  registries:
-    zk:
-      timeout: 10s
-      address: zookeeper://127.0.0.1:2181
-  protocols:
-    dubbo:
-      name: dubbo
-      port: 20000
-  provider:
-    register: true
-    registry: zk
-    services:
-      UserProvider:
-        registry: zk
-        protocol: dubbo
-        interface: org.apache.dubbo.UserService
-        loadbalance: random
-        warmup: 100
-        cluster: failover
-        methods:
-          - name: GetUser
-            retries: 1
-            loadbalance: random
\ No newline at end of file
diff --git a/registry/zookeeper/go-server/pkg/user.go b/registry/zookeeper/go-server/pkg/user.go
deleted file mode 100644
index e9c2e56..0000000
--- a/registry/zookeeper/go-server/pkg/user.go
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package pkg
-
-import (
-	"context"
-	hessian "github.com/apache/dubbo-go-hessian2"
-	"time"
-)
-
-import (
-	"github.com/dubbogo/gost/log"
-)
-
-func init() {
-	hessian.RegisterPOJO(new(User))
-}
-
-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
-}
-
-func (u *UserProvider) Reference() string {
-	return "UserProvider"
-}
-
-func (u User) JavaClassName() string {
-	return "org.apache.dubbo.User"
-}
diff --git a/general/dubbo/go-client/cmd/client.go b/rpc/dubbo/go-client/cmd/client.go
similarity index 100%
rename from general/dubbo/go-client/cmd/client.go
rename to rpc/dubbo/go-client/cmd/client.go
diff --git a/general/dubbo/go-client/conf/client.yml b/rpc/dubbo/go-client/conf/client.yml
similarity index 100%
rename from general/dubbo/go-client/conf/client.yml
rename to rpc/dubbo/go-client/conf/client.yml
diff --git a/general/dubbo3/pb/dubbogo-java/go-server/conf/log.yml b/rpc/dubbo/go-client/conf/log.yml
similarity index 100%
rename from general/dubbo3/pb/dubbogo-java/go-server/conf/log.yml
rename to rpc/dubbo/go-client/conf/log.yml
diff --git a/general/dubbo/go-client/pkg/user.go b/rpc/dubbo/go-client/pkg/user.go
similarity index 100%
rename from general/dubbo/go-client/pkg/user.go
rename to rpc/dubbo/go-client/pkg/user.go
diff --git a/general/dubbo/go-server/cmd/server.go b/rpc/dubbo/go-server/cmd/server.go
similarity index 100%
rename from general/dubbo/go-server/cmd/server.go
rename to rpc/dubbo/go-server/cmd/server.go
diff --git a/general/dubbo/go-server/conf/client.yml b/rpc/dubbo/go-server/conf/client.yml
similarity index 100%
rename from general/dubbo/go-server/conf/client.yml
rename to rpc/dubbo/go-server/conf/client.yml
diff --git a/general/dubbo3/pb/dubbogo-java/go-client/conf/log.yml b/rpc/dubbo/go-server/conf/log.yml
similarity index 100%
rename from general/dubbo3/pb/dubbogo-java/go-client/conf/log.yml
rename to rpc/dubbo/go-server/conf/log.yml
diff --git a/general/dubbo/go-server/conf/server.yml b/rpc/dubbo/go-server/conf/server.yml
similarity index 100%
rename from general/dubbo/go-server/conf/server.yml
rename to rpc/dubbo/go-server/conf/server.yml
diff --git a/general/rest/go-server/docker/docker-compose.yml b/rpc/dubbo/go-server/docker/docker-compose.yml
similarity index 100%
rename from general/rest/go-server/docker/docker-compose.yml
rename to rpc/dubbo/go-server/docker/docker-compose.yml
diff --git a/general/grpc/go-server/docker/docker-health-check.sh b/rpc/dubbo/go-server/docker/docker-health-check.sh
similarity index 100%
rename from general/grpc/go-server/docker/docker-health-check.sh
rename to rpc/dubbo/go-server/docker/docker-health-check.sh
diff --git a/general/dubbo/go-server/pkg/user.go b/rpc/dubbo/go-server/pkg/user.go
similarity index 100%
rename from general/dubbo/go-server/pkg/user.go
rename to rpc/dubbo/go-server/pkg/user.go
diff --git a/general/dubbo/go-server/pkg/user_provider.go b/rpc/dubbo/go-server/pkg/user_provider.go
similarity index 100%
rename from general/dubbo/go-server/pkg/user_provider.go
rename to rpc/dubbo/go-server/pkg/user_provider.go
diff --git a/general/dubbo/go-server/tests/integration/main_test.go b/rpc/dubbo/go-server/tests/integration/main_test.go
similarity index 100%
rename from general/dubbo/go-server/tests/integration/main_test.go
rename to rpc/dubbo/go-server/tests/integration/main_test.go
diff --git a/general/dubbo/go-server/tests/integration/userprovider_test.go b/rpc/dubbo/go-server/tests/integration/userprovider_test.go
similarity index 100%
rename from general/dubbo/go-server/tests/integration/userprovider_test.go
rename to rpc/dubbo/go-server/tests/integration/userprovider_test.go
diff --git a/general/dubbo/java-server/2.6/pom.xml b/rpc/dubbo/java-client/2.6/pom.xml
similarity index 100%
rename from general/dubbo/java-server/2.6/pom.xml
rename to rpc/dubbo/java-client/2.6/pom.xml
diff --git a/general/dubbo/java-client/2.7/src/main/java/org/apache/dubbo/Consumer.java b/rpc/dubbo/java-client/2.6/src/main/java/org/apache/dubbo/Consumer.java
similarity index 100%
rename from general/dubbo/java-client/2.7/src/main/java/org/apache/dubbo/Consumer.java
rename to rpc/dubbo/java-client/2.6/src/main/java/org/apache/dubbo/Consumer.java
diff --git a/general/dubbo/java-server/2.7/src/main/java/org/apache/dubbo/Gender.java b/rpc/dubbo/java-client/2.6/src/main/java/org/apache/dubbo/Gender.java
similarity index 100%
rename from general/dubbo/java-server/2.7/src/main/java/org/apache/dubbo/Gender.java
rename to rpc/dubbo/java-client/2.6/src/main/java/org/apache/dubbo/Gender.java
diff --git a/general/dubbo/java-client/2.7/src/main/java/org/apache/dubbo/User.java b/rpc/dubbo/java-client/2.6/src/main/java/org/apache/dubbo/User.java
similarity index 100%
rename from general/dubbo/java-client/2.7/src/main/java/org/apache/dubbo/User.java
rename to rpc/dubbo/java-client/2.6/src/main/java/org/apache/dubbo/User.java
diff --git a/general/dubbo/java-client/2.7/src/main/java/org/apache/dubbo/UserProvider.java b/rpc/dubbo/java-client/2.6/src/main/java/org/apache/dubbo/UserProvider.java
similarity index 100%
rename from general/dubbo/java-client/2.7/src/main/java/org/apache/dubbo/UserProvider.java
rename to rpc/dubbo/java-client/2.6/src/main/java/org/apache/dubbo/UserProvider.java
diff --git a/general/dubbo/java-client/2.7/src/main/resources/META-INF/spring/dubbo.consumer.xml b/rpc/dubbo/java-client/2.6/src/main/resources/META-INF/spring/dubbo.consumer.xml
similarity index 100%
rename from general/dubbo/java-client/2.7/src/main/resources/META-INF/spring/dubbo.consumer.xml
rename to rpc/dubbo/java-client/2.6/src/main/resources/META-INF/spring/dubbo.consumer.xml
diff --git a/general/jsonrpc/java-client/src/main/resources/log4j.properties b/rpc/dubbo/java-client/2.6/src/main/resources/log4j.properties
similarity index 100%
rename from general/jsonrpc/java-client/src/main/resources/log4j.properties
rename to rpc/dubbo/java-client/2.6/src/main/resources/log4j.properties
diff --git a/general/dubbo/java-server/2.7/pom.xml b/rpc/dubbo/java-client/2.7/pom.xml
similarity index 100%
rename from general/dubbo/java-server/2.7/pom.xml
rename to rpc/dubbo/java-client/2.7/pom.xml
diff --git a/general/dubbo/java-client/2.6/src/main/java/org/apache/dubbo/Consumer.java b/rpc/dubbo/java-client/2.7/src/main/java/org/apache/dubbo/Consumer.java
similarity index 100%
rename from general/dubbo/java-client/2.6/src/main/java/org/apache/dubbo/Consumer.java
rename to rpc/dubbo/java-client/2.7/src/main/java/org/apache/dubbo/Consumer.java
diff --git a/general/dubbo/java-server/2.6/src/main/java/org/apache/dubbo/Gender.java b/rpc/dubbo/java-client/2.7/src/main/java/org/apache/dubbo/Gender.java
similarity index 100%
rename from general/dubbo/java-server/2.6/src/main/java/org/apache/dubbo/Gender.java
rename to rpc/dubbo/java-client/2.7/src/main/java/org/apache/dubbo/Gender.java
diff --git a/general/dubbo/java-client/2.6/src/main/java/org/apache/dubbo/User.java b/rpc/dubbo/java-client/2.7/src/main/java/org/apache/dubbo/User.java
similarity index 100%
rename from general/dubbo/java-client/2.6/src/main/java/org/apache/dubbo/User.java
rename to rpc/dubbo/java-client/2.7/src/main/java/org/apache/dubbo/User.java
diff --git a/general/dubbo/java-client/2.6/src/main/java/org/apache/dubbo/UserProvider.java b/rpc/dubbo/java-client/2.7/src/main/java/org/apache/dubbo/UserProvider.java
similarity index 100%
rename from general/dubbo/java-client/2.6/src/main/java/org/apache/dubbo/UserProvider.java
rename to rpc/dubbo/java-client/2.7/src/main/java/org/apache/dubbo/UserProvider.java
diff --git a/general/dubbo/java-client/2.6/src/main/resources/META-INF/spring/dubbo.consumer.xml b/rpc/dubbo/java-client/2.7/src/main/resources/META-INF/spring/dubbo.consumer.xml
similarity index 100%
rename from general/dubbo/java-client/2.6/src/main/resources/META-INF/spring/dubbo.consumer.xml
rename to rpc/dubbo/java-client/2.7/src/main/resources/META-INF/spring/dubbo.consumer.xml
diff --git a/general/jsonrpc/java-client/src/main/assembly/conf/log4j.properties b/rpc/dubbo/java-client/2.7/src/main/resources/log4j.properties
similarity index 100%
rename from general/jsonrpc/java-client/src/main/assembly/conf/log4j.properties
rename to rpc/dubbo/java-client/2.7/src/main/resources/log4j.properties
diff --git a/general/dubbo/java-client/2.6/pom.xml b/rpc/dubbo/java-server/2.6/pom.xml
similarity index 100%
rename from general/dubbo/java-client/2.6/pom.xml
rename to rpc/dubbo/java-server/2.6/pom.xml
diff --git a/general/dubbo/java-client/2.7/src/main/java/org/apache/dubbo/Gender.java b/rpc/dubbo/java-server/2.6/src/main/java/org/apache/dubbo/Gender.java
similarity index 100%
rename from general/dubbo/java-client/2.7/src/main/java/org/apache/dubbo/Gender.java
rename to rpc/dubbo/java-server/2.6/src/main/java/org/apache/dubbo/Gender.java
diff --git a/general/dubbo/java-server/2.7/src/main/java/org/apache/dubbo/Provider.java b/rpc/dubbo/java-server/2.6/src/main/java/org/apache/dubbo/Provider.java
similarity index 100%
rename from general/dubbo/java-server/2.7/src/main/java/org/apache/dubbo/Provider.java
rename to rpc/dubbo/java-server/2.6/src/main/java/org/apache/dubbo/Provider.java
diff --git a/general/dubbo/java-server/2.7/src/main/java/org/apache/dubbo/Response.java b/rpc/dubbo/java-server/2.6/src/main/java/org/apache/dubbo/Response.java
similarity index 100%
rename from general/dubbo/java-server/2.7/src/main/java/org/apache/dubbo/Response.java
rename to rpc/dubbo/java-server/2.6/src/main/java/org/apache/dubbo/Response.java
diff --git a/general/dubbo/java-server/2.7/src/main/java/org/apache/dubbo/User.java b/rpc/dubbo/java-server/2.6/src/main/java/org/apache/dubbo/User.java
similarity index 100%
rename from general/dubbo/java-server/2.7/src/main/java/org/apache/dubbo/User.java
rename to rpc/dubbo/java-server/2.6/src/main/java/org/apache/dubbo/User.java
diff --git a/general/dubbo/java-server/2.7/src/main/java/org/apache/dubbo/UserProvider.java b/rpc/dubbo/java-server/2.6/src/main/java/org/apache/dubbo/UserProvider.java
similarity index 100%
rename from general/dubbo/java-server/2.7/src/main/java/org/apache/dubbo/UserProvider.java
rename to rpc/dubbo/java-server/2.6/src/main/java/org/apache/dubbo/UserProvider.java
diff --git a/general/dubbo/java-server/2.7/src/main/java/org/apache/dubbo/UserProviderAnotherImpl.java b/rpc/dubbo/java-server/2.6/src/main/java/org/apache/dubbo/UserProviderAnotherImpl.java
similarity index 100%
rename from general/dubbo/java-server/2.7/src/main/java/org/apache/dubbo/UserProviderAnotherImpl.java
rename to rpc/dubbo/java-server/2.6/src/main/java/org/apache/dubbo/UserProviderAnotherImpl.java
diff --git a/general/dubbo/java-server/2.7/src/main/java/org/apache/dubbo/UserProviderImpl.java b/rpc/dubbo/java-server/2.6/src/main/java/org/apache/dubbo/UserProviderImpl.java
similarity index 100%
rename from general/dubbo/java-server/2.7/src/main/java/org/apache/dubbo/UserProviderImpl.java
rename to rpc/dubbo/java-server/2.6/src/main/java/org/apache/dubbo/UserProviderImpl.java
diff --git a/general/dubbo/java-server/2.7/src/main/resources/META-INF/spring/dubbo.provider.xml b/rpc/dubbo/java-server/2.6/src/main/resources/META-INF/spring/dubbo.provider.xml
similarity index 100%
rename from general/dubbo/java-server/2.7/src/main/resources/META-INF/spring/dubbo.provider.xml
rename to rpc/dubbo/java-server/2.6/src/main/resources/META-INF/spring/dubbo.provider.xml
diff --git a/general/jsonrpc/java-server/src/main/resources/log4j.properties b/rpc/dubbo/java-server/2.6/src/main/resources/log4j.properties
similarity index 100%
rename from general/jsonrpc/java-server/src/main/resources/log4j.properties
rename to rpc/dubbo/java-server/2.6/src/main/resources/log4j.properties
diff --git a/general/dubbo/java-client/2.7/pom.xml b/rpc/dubbo/java-server/2.7/pom.xml
similarity index 100%
rename from general/dubbo/java-client/2.7/pom.xml
rename to rpc/dubbo/java-server/2.7/pom.xml
diff --git a/general/dubbo/java-client/2.6/src/main/java/org/apache/dubbo/Gender.java b/rpc/dubbo/java-server/2.7/src/main/java/org/apache/dubbo/Gender.java
similarity index 100%
rename from general/dubbo/java-client/2.6/src/main/java/org/apache/dubbo/Gender.java
rename to rpc/dubbo/java-server/2.7/src/main/java/org/apache/dubbo/Gender.java
diff --git a/general/dubbo/java-server/2.6/src/main/java/org/apache/dubbo/Provider.java b/rpc/dubbo/java-server/2.7/src/main/java/org/apache/dubbo/Provider.java
similarity index 100%
rename from general/dubbo/java-server/2.6/src/main/java/org/apache/dubbo/Provider.java
rename to rpc/dubbo/java-server/2.7/src/main/java/org/apache/dubbo/Provider.java
diff --git a/general/dubbo/java-server/2.6/src/main/java/org/apache/dubbo/Response.java b/rpc/dubbo/java-server/2.7/src/main/java/org/apache/dubbo/Response.java
similarity index 100%
rename from general/dubbo/java-server/2.6/src/main/java/org/apache/dubbo/Response.java
rename to rpc/dubbo/java-server/2.7/src/main/java/org/apache/dubbo/Response.java
diff --git a/general/dubbo/java-server/2.6/src/main/java/org/apache/dubbo/User.java b/rpc/dubbo/java-server/2.7/src/main/java/org/apache/dubbo/User.java
similarity index 100%
rename from general/dubbo/java-server/2.6/src/main/java/org/apache/dubbo/User.java
rename to rpc/dubbo/java-server/2.7/src/main/java/org/apache/dubbo/User.java
diff --git a/general/dubbo/java-server/2.6/src/main/java/org/apache/dubbo/UserProvider.java b/rpc/dubbo/java-server/2.7/src/main/java/org/apache/dubbo/UserProvider.java
similarity index 100%
rename from general/dubbo/java-server/2.6/src/main/java/org/apache/dubbo/UserProvider.java
rename to rpc/dubbo/java-server/2.7/src/main/java/org/apache/dubbo/UserProvider.java
diff --git a/general/dubbo/java-server/2.6/src/main/java/org/apache/dubbo/UserProviderAnotherImpl.java b/rpc/dubbo/java-server/2.7/src/main/java/org/apache/dubbo/UserProviderAnotherImpl.java
similarity index 100%
rename from general/dubbo/java-server/2.6/src/main/java/org/apache/dubbo/UserProviderAnotherImpl.java
rename to rpc/dubbo/java-server/2.7/src/main/java/org/apache/dubbo/UserProviderAnotherImpl.java
diff --git a/general/dubbo/java-server/2.6/src/main/java/org/apache/dubbo/UserProviderImpl.java b/rpc/dubbo/java-server/2.7/src/main/java/org/apache/dubbo/UserProviderImpl.java
similarity index 100%
rename from general/dubbo/java-server/2.6/src/main/java/org/apache/dubbo/UserProviderImpl.java
rename to rpc/dubbo/java-server/2.7/src/main/java/org/apache/dubbo/UserProviderImpl.java
diff --git a/general/dubbo/java-server/2.6/src/main/resources/META-INF/spring/dubbo.provider.xml b/rpc/dubbo/java-server/2.7/src/main/resources/META-INF/spring/dubbo.provider.xml
similarity index 100%
rename from general/dubbo/java-server/2.6/src/main/resources/META-INF/spring/dubbo.provider.xml
rename to rpc/dubbo/java-server/2.7/src/main/resources/META-INF/spring/dubbo.provider.xml
diff --git a/general/jsonrpc/java-server/src/main/assembly/conf/log4j.properties b/rpc/dubbo/java-server/2.7/src/main/resources/log4j.properties
similarity index 100%
rename from general/jsonrpc/java-server/src/main/assembly/conf/log4j.properties
rename to rpc/dubbo/java-server/2.7/src/main/resources/log4j.properties
diff --git a/general/dubbo3/README.md b/rpc/dubbo3/README.md
similarity index 85%
rename from general/dubbo3/README.md
rename to rpc/dubbo3/README.md
index 462fab7..08f6ea5 100644
--- a/general/dubbo3/README.md
+++ b/rpc/dubbo3/README.md
@@ -10,14 +10,14 @@ https://github.com/dubbogo/triple
 ## Triple-go provides capabilities:
 -Intercommunication with Grpc, supporting normal calls and streaming calls
 
-[Example](./pb/dubbogo-grpc/README.md)
+[Example](./api/dubbogo-grpc/README.md)
 
 -Intercommunication with Triple-java, currently the java side supports ordinary calls
 
-[Example](./pb/dubbogo-java/README.md)
+[Example](./api/dubbogo-java/README.md)
 
 
--Support Pb serialization and Hessian serialization. After Hessian serialization, it can be serialized again by nesting the following pb:
+-Support Pb serialization and Hessian serialization. After Hessian serialization, it can be serialized again by nesting the following api:
 https://github.com/dubbogo/triple/blob/master/internal/codec/proto/triple_wrapper.proto
 
 [Example](./hessian2/README.md)
diff --git a/general/dubbo3/README_zh.md b/rpc/dubbo3/README_zh.md
similarity index 77%
rename from general/dubbo3/README_zh.md
rename to rpc/dubbo3/README_zh.md
index 615ba3c..33f8389 100644
--- a/general/dubbo3/README_zh.md
+++ b/rpc/dubbo3/README_zh.md
@@ -10,14 +10,14 @@ https://github.com/dubbogo/triple
 ## Triple-go 提供能力:
 - 与 Grpc 互通,支持普通调用和流式调用
   
-  [例子](./pb/dubbogo-grpc/README_zh.md)
+  [例子](./api/dubbogo-grpc/README_zh.md)
   
 - 与 Triple-java 互通,目前java端支持普通调用
 
-  [例子](./pb/dubbogo-java/README_zh.md)
+  [例子](./api/dubbogo-java/README_zh.md)
   
 
-- 支持 Pb 序列化和 Hessian 序列化,Hessian 序列化后通过嵌套入如下 pb,再次进行序列化:
+- 支持 Pb 序列化和 Hessian 序列化,Hessian 序列化后通过嵌套入如下 api,再次进行序列化:
   https://github.com/dubbogo/triple/blob/master/internal/codec/proto/triple_wrapper.proto
   
   [例子](./hessian2/README_zh.md)
diff --git a/general/dubbo3/codec-extension/go-client/cmd/client.go b/rpc/dubbo3/codec-extension/go-client/cmd/client.go
similarity index 100%
rename from general/dubbo3/codec-extension/go-client/cmd/client.go
rename to rpc/dubbo3/codec-extension/go-client/cmd/client.go
diff --git a/general/dubbo3/codec-extension/go-server/codec/codec.go b/rpc/dubbo3/codec-extension/go-client/codec/codec.go
similarity index 100%
rename from general/dubbo3/codec-extension/go-server/codec/codec.go
rename to rpc/dubbo3/codec-extension/go-client/codec/codec.go
diff --git a/general/dubbo3/codec-extension/go-client/conf/client.yml b/rpc/dubbo3/codec-extension/go-client/conf/client.yml
similarity index 100%
rename from general/dubbo3/codec-extension/go-client/conf/client.yml
rename to rpc/dubbo3/codec-extension/go-client/conf/client.yml
diff --git a/general/dubbo3/pb/dubbogo-grpc/unary-client/dubbogo-client/conf/log.yml b/rpc/dubbo3/codec-extension/go-client/conf/log.yml
similarity index 100%
rename from general/dubbo3/pb/dubbogo-grpc/unary-client/dubbogo-client/conf/log.yml
rename to rpc/dubbo3/codec-extension/go-client/conf/log.yml
diff --git a/general/dubbo3/msgpack/go-client/pkg/hello.go b/rpc/dubbo3/codec-extension/go-client/pkg/hello.go
similarity index 100%
rename from general/dubbo3/msgpack/go-client/pkg/hello.go
rename to rpc/dubbo3/codec-extension/go-client/pkg/hello.go
diff --git a/general/dubbo3/codec-extension/go-server/cmd/server.go b/rpc/dubbo3/codec-extension/go-server/cmd/server.go
similarity index 100%
rename from general/dubbo3/codec-extension/go-server/cmd/server.go
rename to rpc/dubbo3/codec-extension/go-server/cmd/server.go
diff --git a/general/dubbo3/codec-extension/go-client/codec/codec.go b/rpc/dubbo3/codec-extension/go-server/codec/codec.go
similarity index 100%
rename from general/dubbo3/codec-extension/go-client/codec/codec.go
rename to rpc/dubbo3/codec-extension/go-server/codec/codec.go
diff --git a/general/dubbo3/codec-extension/go-server/conf/client.yml b/rpc/dubbo3/codec-extension/go-server/conf/client.yml
similarity index 100%
rename from general/dubbo3/codec-extension/go-server/conf/client.yml
rename to rpc/dubbo3/codec-extension/go-server/conf/client.yml
diff --git a/general/dubbo3/pb/dubbogo-grpc/stream-client/dubbogo-client/conf/log.yml b/rpc/dubbo3/codec-extension/go-server/conf/log.yml
similarity index 100%
rename from general/dubbo3/pb/dubbogo-grpc/stream-client/dubbogo-client/conf/log.yml
rename to rpc/dubbo3/codec-extension/go-server/conf/log.yml
diff --git a/general/dubbo3/codec-extension/go-server/conf/server.yml b/rpc/dubbo3/codec-extension/go-server/conf/server.yml
similarity index 100%
rename from general/dubbo3/codec-extension/go-server/conf/server.yml
rename to rpc/dubbo3/codec-extension/go-server/conf/server.yml
diff --git a/general/rest/go-client/docker/docker-compose.yml b/rpc/dubbo3/codec-extension/go-server/docker/docker-compose.yml
similarity index 100%
rename from general/rest/go-client/docker/docker-compose.yml
rename to rpc/dubbo3/codec-extension/go-server/docker/docker-compose.yml
diff --git a/general/dubbo3/pb/dubbogo-grpc/server/dubbogo-server/docker/docker-health-check.sh b/rpc/dubbo3/codec-extension/go-server/docker/docker-health-check.sh
similarity index 100%
rename from general/dubbo3/pb/dubbogo-grpc/server/dubbogo-server/docker/docker-health-check.sh
rename to rpc/dubbo3/codec-extension/go-server/docker/docker-health-check.sh
diff --git a/general/dubbo3/codec-extension/go-server/pkg/greeter.go b/rpc/dubbo3/codec-extension/go-server/pkg/greeter.go
similarity index 100%
rename from general/dubbo3/codec-extension/go-server/pkg/greeter.go
rename to rpc/dubbo3/codec-extension/go-server/pkg/greeter.go
diff --git a/general/dubbo3/codec-extension/go-server/tests/integration/codec.go b/rpc/dubbo3/codec-extension/go-server/tests/integration/codec.go
similarity index 100%
rename from general/dubbo3/codec-extension/go-server/tests/integration/codec.go
rename to rpc/dubbo3/codec-extension/go-server/tests/integration/codec.go
diff --git a/general/dubbo3/msgpack/go-server/tests/integration/main_test.go b/rpc/dubbo3/codec-extension/go-server/tests/integration/main_test.go
similarity index 100%
rename from general/dubbo3/msgpack/go-server/tests/integration/main_test.go
rename to rpc/dubbo3/codec-extension/go-server/tests/integration/main_test.go
diff --git a/general/dubbo3/msgpack/go-server/tests/integration/userprovider_test.go b/rpc/dubbo3/codec-extension/go-server/tests/integration/userprovider_test.go
similarity index 100%
rename from general/dubbo3/msgpack/go-server/tests/integration/userprovider_test.go
rename to rpc/dubbo3/codec-extension/go-server/tests/integration/userprovider_test.go
diff --git a/general/dubbo3/hessian2/README.md b/rpc/dubbo3/hessian2/README.md
similarity index 84%
rename from general/dubbo3/hessian2/README.md
rename to rpc/dubbo3/hessian2/README.md
index 45b4169..17a37e5 100644
--- a/general/dubbo3/hessian2/README.md
+++ b/rpc/dubbo3/hessian2/README.md
@@ -1,6 +1,6 @@
 # Triple protocol Hessian2 (Hessian+PB) serialization scheme
 
-Triple-go supports Pb serialization and Hessian serialization. After Hessian serialization, pb serialization is performed again by nesting the following pb:
+Triple-go supports Pb serialization and Hessian serialization. After Hessian serialization, api serialization is performed again by nesting the following api:
 https://github.com/dubbogo/triple/blob/master/internal/codec/proto/triple_wrapper.proto
 
 ## Serialization scheme selection
diff --git a/general/dubbo3/hessian2/README_zh.md b/rpc/dubbo3/hessian2/README_zh.md
similarity index 100%
rename from general/dubbo3/hessian2/README_zh.md
rename to rpc/dubbo3/hessian2/README_zh.md
diff --git a/general/dubbo3/hessian2/go-client/cmd/client.go b/rpc/dubbo3/hessian2/go-client/cmd/client.go
similarity index 100%
rename from general/dubbo3/hessian2/go-client/cmd/client.go
rename to rpc/dubbo3/hessian2/go-client/cmd/client.go
diff --git a/general/dubbo3/hessian2/go-client/conf/client.yml b/rpc/dubbo3/hessian2/go-client/conf/client.yml
similarity index 100%
rename from general/dubbo3/hessian2/go-client/conf/client.yml
rename to rpc/dubbo3/hessian2/go-client/conf/client.yml
diff --git a/general/dubbo3/pb/dubbogo-grpc/server/dubbogo-server/conf/log.yml b/rpc/dubbo3/hessian2/go-client/conf/log.yml
similarity index 100%
rename from general/dubbo3/pb/dubbogo-grpc/server/dubbogo-server/conf/log.yml
rename to rpc/dubbo3/hessian2/go-client/conf/log.yml
diff --git a/general/dubbo3/hessian2/go-client/pkg/hello.go b/rpc/dubbo3/hessian2/go-client/pkg/hello.go
similarity index 100%
rename from general/dubbo3/hessian2/go-client/pkg/hello.go
rename to rpc/dubbo3/hessian2/go-client/pkg/hello.go
diff --git a/general/dubbo3/hessian2/go-server/cmd/server.go b/rpc/dubbo3/hessian2/go-server/cmd/server.go
similarity index 100%
rename from general/dubbo3/hessian2/go-server/cmd/server.go
rename to rpc/dubbo3/hessian2/go-server/cmd/server.go
diff --git a/general/dubbo3/hessian2/go-server/conf/client.yml b/rpc/dubbo3/hessian2/go-server/conf/client.yml
similarity index 100%
rename from general/dubbo3/hessian2/go-server/conf/client.yml
rename to rpc/dubbo3/hessian2/go-server/conf/client.yml
diff --git a/general/dubbo3/msgpack/go-server/conf/log.yml b/rpc/dubbo3/hessian2/go-server/conf/log.yml
similarity index 100%
rename from general/dubbo3/msgpack/go-server/conf/log.yml
rename to rpc/dubbo3/hessian2/go-server/conf/log.yml
diff --git a/general/dubbo3/hessian2/go-server/conf/server.yml b/rpc/dubbo3/hessian2/go-server/conf/server.yml
similarity index 100%
rename from general/dubbo3/hessian2/go-server/conf/server.yml
rename to rpc/dubbo3/hessian2/go-server/conf/server.yml
diff --git a/general/dubbo3/pb/dubbogo-java/go-server/docker/docker-compose.yml b/rpc/dubbo3/hessian2/go-server/docker/docker-compose.yml
similarity index 100%
rename from general/dubbo3/pb/dubbogo-java/go-server/docker/docker-compose.yml
rename to rpc/dubbo3/hessian2/go-server/docker/docker-compose.yml
diff --git a/general/dubbo3/msgpack/go-server/docker/docker-health-check.sh b/rpc/dubbo3/hessian2/go-server/docker/docker-health-check.sh
similarity index 100%
rename from general/dubbo3/msgpack/go-server/docker/docker-health-check.sh
rename to rpc/dubbo3/hessian2/go-server/docker/docker-health-check.sh
diff --git a/general/dubbo3/hessian2/go-server/pkg/greeter.go b/rpc/dubbo3/hessian2/go-server/pkg/greeter.go
similarity index 100%
rename from general/dubbo3/hessian2/go-server/pkg/greeter.go
rename to rpc/dubbo3/hessian2/go-server/pkg/greeter.go
diff --git a/general/dubbo3/hessian2/go-server/tests/integration/main_test.go b/rpc/dubbo3/hessian2/go-server/tests/integration/main_test.go
similarity index 100%
rename from general/dubbo3/hessian2/go-server/tests/integration/main_test.go
rename to rpc/dubbo3/hessian2/go-server/tests/integration/main_test.go
diff --git a/general/dubbo3/hessian2/go-server/tests/integration/userprovider_test.go b/rpc/dubbo3/hessian2/go-server/tests/integration/userprovider_test.go
similarity index 100%
rename from general/dubbo3/hessian2/go-server/tests/integration/userprovider_test.go
rename to rpc/dubbo3/hessian2/go-server/tests/integration/userprovider_test.go
diff --git a/general/dubbo3/hessian2/java-server/build/generated/source/proto/main/java/org/apache/dubbo/sample/hello/Helloworld.java b/rpc/dubbo3/hessian2/java-client/build/generated/source/proto/main/java/org/apache/dubbo/sample/hello/Helloworld.java
similarity index 100%
rename from general/dubbo3/hessian2/java-server/build/generated/source/proto/main/java/org/apache/dubbo/sample/hello/Helloworld.java
rename to rpc/dubbo3/hessian2/java-client/build/generated/source/proto/main/java/org/apache/dubbo/sample/hello/Helloworld.java
diff --git a/general/dubbo3/hessian2/java-client/pom.xml b/rpc/dubbo3/hessian2/java-client/pom.xml
similarity index 100%
rename from general/dubbo3/hessian2/java-client/pom.xml
rename to rpc/dubbo3/hessian2/java-client/pom.xml
diff --git a/general/dubbo3/pb/dubbogo-java/java-client/run.sh b/rpc/dubbo3/hessian2/java-client/run.sh
similarity index 100%
rename from general/dubbo3/pb/dubbogo-java/java-client/run.sh
rename to rpc/dubbo3/hessian2/java-client/run.sh
diff --git a/general/dubbo3/hessian2/java-client/src/main/java/com/apache/dubbo/sample/basic/ApiConsumer.java b/rpc/dubbo3/hessian2/java-client/src/main/java/com/apache/dubbo/sample/basic/ApiConsumer.java
similarity index 100%
rename from general/dubbo3/hessian2/java-client/src/main/java/com/apache/dubbo/sample/basic/ApiConsumer.java
rename to rpc/dubbo3/hessian2/java-client/src/main/java/com/apache/dubbo/sample/basic/ApiConsumer.java
diff --git a/general/dubbo3/hessian2/java-client/src/main/java/com/apache/dubbo/sample/basic/IGreeter.java b/rpc/dubbo3/hessian2/java-client/src/main/java/com/apache/dubbo/sample/basic/IGreeter.java
similarity index 100%
rename from general/dubbo3/hessian2/java-client/src/main/java/com/apache/dubbo/sample/basic/IGreeter.java
rename to rpc/dubbo3/hessian2/java-client/src/main/java/com/apache/dubbo/sample/basic/IGreeter.java
diff --git a/general/dubbo3/hessian2/java-server/src/main/java/com/apache/dubbo/sample/basic/User.java b/rpc/dubbo3/hessian2/java-client/src/main/java/com/apache/dubbo/sample/basic/User.java
similarity index 100%
rename from general/dubbo3/hessian2/java-server/src/main/java/com/apache/dubbo/sample/basic/User.java
rename to rpc/dubbo3/hessian2/java-client/src/main/java/com/apache/dubbo/sample/basic/User.java
diff --git a/general/dubbo3/pb/dubbogo-java/java-server/src/main/proto/helloworld.proto b/rpc/dubbo3/hessian2/java-client/src/main/proto/helloworld.proto
similarity index 100%
rename from general/dubbo3/pb/dubbogo-java/java-server/src/main/proto/helloworld.proto
rename to rpc/dubbo3/hessian2/java-client/src/main/proto/helloworld.proto
diff --git a/general/dubbo3/pb/dubbogo-java/java-server/src/main/resources/log4j.properties b/rpc/dubbo3/hessian2/java-client/src/main/resources/log4j.properties
similarity index 100%
rename from general/dubbo3/pb/dubbogo-java/java-server/src/main/resources/log4j.properties
rename to rpc/dubbo3/hessian2/java-client/src/main/resources/log4j.properties
diff --git a/general/dubbo3/hessian2/java-client/build/generated/source/proto/main/java/org/apache/dubbo/sample/hello/Helloworld.java b/rpc/dubbo3/hessian2/java-server/build/generated/source/proto/main/java/org/apache/dubbo/sample/hello/Helloworld.java
similarity index 100%
copy from general/dubbo3/hessian2/java-client/build/generated/source/proto/main/java/org/apache/dubbo/sample/hello/Helloworld.java
copy to rpc/dubbo3/hessian2/java-server/build/generated/source/proto/main/java/org/apache/dubbo/sample/hello/Helloworld.java
diff --git a/general/dubbo3/hessian2/java-server/pom.xml b/rpc/dubbo3/hessian2/java-server/pom.xml
similarity index 100%
rename from general/dubbo3/hessian2/java-server/pom.xml
rename to rpc/dubbo3/hessian2/java-server/pom.xml
diff --git a/general/dubbo3/pb/dubbogo-java/java-server/run.sh b/rpc/dubbo3/hessian2/java-server/run.sh
similarity index 100%
rename from general/dubbo3/pb/dubbogo-java/java-server/run.sh
rename to rpc/dubbo3/hessian2/java-server/run.sh
diff --git a/general/dubbo3/hessian2/java-server/src/main/java/com/apache/dubbo/sample/basic/ApiProvider.java b/rpc/dubbo3/hessian2/java-server/src/main/java/com/apache/dubbo/sample/basic/ApiProvider.java
similarity index 100%
rename from general/dubbo3/hessian2/java-server/src/main/java/com/apache/dubbo/sample/basic/ApiProvider.java
rename to rpc/dubbo3/hessian2/java-server/src/main/java/com/apache/dubbo/sample/basic/ApiProvider.java
diff --git a/general/dubbo3/hessian2/java-server/src/main/java/com/apache/dubbo/sample/basic/IGreeter.java b/rpc/dubbo3/hessian2/java-server/src/main/java/com/apache/dubbo/sample/basic/IGreeter.java
similarity index 100%
rename from general/dubbo3/hessian2/java-server/src/main/java/com/apache/dubbo/sample/basic/IGreeter.java
rename to rpc/dubbo3/hessian2/java-server/src/main/java/com/apache/dubbo/sample/basic/IGreeter.java
diff --git a/general/dubbo3/hessian2/java-server/src/main/java/com/apache/dubbo/sample/basic/IGreeter1Impl.java b/rpc/dubbo3/hessian2/java-server/src/main/java/com/apache/dubbo/sample/basic/IGreeter1Impl.java
similarity index 100%
rename from general/dubbo3/hessian2/java-server/src/main/java/com/apache/dubbo/sample/basic/IGreeter1Impl.java
rename to rpc/dubbo3/hessian2/java-server/src/main/java/com/apache/dubbo/sample/basic/IGreeter1Impl.java
diff --git a/general/dubbo3/hessian2/java-client/src/main/java/com/apache/dubbo/sample/basic/User.java b/rpc/dubbo3/hessian2/java-server/src/main/java/com/apache/dubbo/sample/basic/User.java
similarity index 100%
rename from general/dubbo3/hessian2/java-client/src/main/java/com/apache/dubbo/sample/basic/User.java
rename to rpc/dubbo3/hessian2/java-server/src/main/java/com/apache/dubbo/sample/basic/User.java
diff --git a/general/dubbo3/pb/dubbogo-java/java-client/src/main/proto/helloworld.proto b/rpc/dubbo3/hessian2/java-server/src/main/proto/helloworld.proto
similarity index 100%
rename from general/dubbo3/pb/dubbogo-java/java-client/src/main/proto/helloworld.proto
rename to rpc/dubbo3/hessian2/java-server/src/main/proto/helloworld.proto
diff --git a/general/dubbo3/pb/dubbogo-java/java-client/src/main/resources/log4j.properties b/rpc/dubbo3/hessian2/java-server/src/main/resources/log4j.properties
similarity index 100%
rename from general/dubbo3/pb/dubbogo-java/java-client/src/main/resources/log4j.properties
rename to rpc/dubbo3/hessian2/java-server/src/main/resources/log4j.properties
diff --git a/general/dubbo3/msgpack/go-client/cmd/client.go b/rpc/dubbo3/msgpack/go-client/cmd/client.go
similarity index 100%
rename from general/dubbo3/msgpack/go-client/cmd/client.go
rename to rpc/dubbo3/msgpack/go-client/cmd/client.go
diff --git a/general/dubbo3/msgpack/go-client/conf/client.yml b/rpc/dubbo3/msgpack/go-client/conf/client.yml
similarity index 100%
rename from general/dubbo3/msgpack/go-client/conf/client.yml
rename to rpc/dubbo3/msgpack/go-client/conf/client.yml
diff --git a/general/dubbo3/msgpack/go-client/conf/log.yml b/rpc/dubbo3/msgpack/go-client/conf/log.yml
similarity index 100%
rename from general/dubbo3/msgpack/go-client/conf/log.yml
rename to rpc/dubbo3/msgpack/go-client/conf/log.yml
diff --git a/general/dubbo3/codec-extension/go-client/pkg/hello.go b/rpc/dubbo3/msgpack/go-client/pkg/hello.go
similarity index 100%
rename from general/dubbo3/codec-extension/go-client/pkg/hello.go
rename to rpc/dubbo3/msgpack/go-client/pkg/hello.go
diff --git a/general/dubbo3/msgpack/go-server/cmd/server.go b/rpc/dubbo3/msgpack/go-server/cmd/server.go
similarity index 100%
rename from general/dubbo3/msgpack/go-server/cmd/server.go
rename to rpc/dubbo3/msgpack/go-server/cmd/server.go
diff --git a/general/dubbo3/msgpack/go-server/conf/client.yml b/rpc/dubbo3/msgpack/go-server/conf/client.yml
similarity index 100%
rename from general/dubbo3/msgpack/go-server/conf/client.yml
rename to rpc/dubbo3/msgpack/go-server/conf/client.yml
diff --git a/general/dubbo3/hessian2/go-server/conf/log.yml b/rpc/dubbo3/msgpack/go-server/conf/log.yml
similarity index 100%
rename from general/dubbo3/hessian2/go-server/conf/log.yml
rename to rpc/dubbo3/msgpack/go-server/conf/log.yml
diff --git a/general/dubbo3/msgpack/go-server/conf/server.yml b/rpc/dubbo3/msgpack/go-server/conf/server.yml
similarity index 100%
rename from general/dubbo3/msgpack/go-server/conf/server.yml
rename to rpc/dubbo3/msgpack/go-server/conf/server.yml
diff --git a/general/dubbo3/pb/dubbogo-grpc/server/dubbogo-server/docker/docker-compose.yml b/rpc/dubbo3/msgpack/go-server/docker/docker-compose.yml
similarity index 100%
rename from general/dubbo3/pb/dubbogo-grpc/server/dubbogo-server/docker/docker-compose.yml
rename to rpc/dubbo3/msgpack/go-server/docker/docker-compose.yml
diff --git a/general/dubbo3/hessian2/go-server/docker/docker-health-check.sh b/rpc/dubbo3/msgpack/go-server/docker/docker-health-check.sh
similarity index 100%
rename from general/dubbo3/hessian2/go-server/docker/docker-health-check.sh
rename to rpc/dubbo3/msgpack/go-server/docker/docker-health-check.sh
diff --git a/general/dubbo3/msgpack/go-server/pkg/greeter.go b/rpc/dubbo3/msgpack/go-server/pkg/greeter.go
similarity index 100%
rename from general/dubbo3/msgpack/go-server/pkg/greeter.go
rename to rpc/dubbo3/msgpack/go-server/pkg/greeter.go
diff --git a/general/dubbo3/codec-extension/go-server/tests/integration/main_test.go b/rpc/dubbo3/msgpack/go-server/tests/integration/main_test.go
similarity index 100%
rename from general/dubbo3/codec-extension/go-server/tests/integration/main_test.go
rename to rpc/dubbo3/msgpack/go-server/tests/integration/main_test.go
diff --git a/general/dubbo3/codec-extension/go-server/tests/integration/userprovider_test.go b/rpc/dubbo3/msgpack/go-server/tests/integration/userprovider_test.go
similarity index 100%
rename from general/dubbo3/codec-extension/go-server/tests/integration/userprovider_test.go
rename to rpc/dubbo3/msgpack/go-server/tests/integration/userprovider_test.go
diff --git a/general/dubbo3/pb/dubbogo-grpc/README.md b/rpc/dubbo3/pb/dubbogo-grpc/README.md
similarity index 87%
rename from general/dubbo3/pb/dubbogo-grpc/README.md
rename to rpc/dubbo3/pb/dubbogo-grpc/README.md
index a79d119..3f30b60 100644
--- a/general/dubbo3/pb/dubbogo-grpc/README.md
+++ b/rpc/dubbo3/pb/dubbogo-grpc/README.md
@@ -8,7 +8,7 @@ Any group of client and server can be used interchangeably to implement RPC call
 
 ## Triple service start
 
-### pb generation
+### api generation
 1. First write the proto file
 
 ```protobuf
@@ -44,7 +44,7 @@ message User {
     go get -u dubbo.apache.org/dubbo-go/v3/protocol/dubbo3/protoc-gen-dubbo3@3.0
 ```
 
-4. generate pb file
+4. generate api file
 ```shell
     protoc -I . helloworld.proto --dubbo3_out=plugins=grpc+dubbo:.
 ```
@@ -64,7 +64,7 @@ import (
 )
 
 import (
-    dubbo3 "github.com/apache/dubbo-go-samples/general/dubbo3/pb/dubbogo-grpc/protobuf/dubbo3"
+    dubbo3 "github.com/apache/dubbo-go-samples/general/dubbo3/api/dubbogo-grpc/protobuf/dubbo3"
 )
 
 type GreeterProvider struct {
@@ -73,7 +73,7 @@ type GreeterProvider struct {
 }
 
 func NewGreeterProvider() *GreeterProvider {
-    return &GreeterProvider{// Initialize base with the instance in the generated pb
+    return &GreeterProvider{// Initialize base with the instance in the generated api
         GreeterProviderBase: &dubbo3.GreeterProviderBase{},
     }
 }
@@ -132,10 +132,10 @@ services:
     interface: "protobuf.Greeter" # Same as the interface name generated by grpc, as follows
 ```
 
-The interface name of the Grpc pb file can be seen as protobuf.Greeter, which is defined by the user as required.
+The interface name of the Grpc api file can be seen as protobuf.Greeter, which is defined by the user as required.
 In order for triple-go to get through with grpc, it must be the same as the grpc interface name and correctly configured in the yaml file.
 
-protobuf/grpc/helloworld.pb.go:
+protobuf/grpc/helloworld.api.go:
 ```go
 func (c *greeterClient) SayHello(ctx context.Context, in *HelloRequest, opts ...grpc.CallOption) (*User, error) {
     out := new(User)
@@ -155,10 +155,10 @@ triple/triple-server
 ## Client (take ordinary rpc call as an example, the same for streaming RPC)
 
 1. Consumer end structure definition
-   The Consumer structure has been implemented in the pb file and can be imported directly
+   The Consumer structure has been implemented in the api file and can be imported directly
 ```go
 import (
-    dubbo3pb "github.com/apache/dubbo-go-samples/general/dubbo3/pb/dubbogo-grpc/protobuf/dubbo3"
+    dubbo3pb "github.com/apache/dubbo-go-samples/general/dubbo3/api/dubbogo-grpc/protobuf/dubbo3"
 )
 
 // Directly introduce the GreeterClientImpl structure, you can enter the structure, and see the Reference as "greeterImpl"
diff --git a/general/dubbo3/pb/dubbogo-grpc/README_zh.md b/rpc/dubbo3/pb/dubbogo-grpc/README_zh.md
similarity index 90%
rename from general/dubbo3/pb/dubbogo-grpc/README_zh.md
rename to rpc/dubbo3/pb/dubbogo-grpc/README_zh.md
index bb8f130..0d0e946 100644
--- a/general/dubbo3/pb/dubbogo-grpc/README_zh.md
+++ b/rpc/dubbo3/pb/dubbogo-grpc/README_zh.md
@@ -8,7 +8,7 @@
 
 ## Triple 服务启动
 
-### pb 生成
+### api 生成
 1. 首先编写 proto 文件
   
 ```protobuf
@@ -43,7 +43,7 @@ message User {
 ```shell
 go get -u dubbo.apache.org/dubbo-go/v3/protocol/dubbo3/protoc-gen-dubbo3@3.0
 ```
-4. 生成 pb 文件
+4. 生成 api 文件
 ```shell
     protoc -I . helloworld.proto --dubbo3_out=plugins=grpc+dubbo:.
 ```
@@ -63,7 +63,7 @@ import (
 )
 
 import (
-	dubbo3 "github.com/apache/dubbo-go-samples/general/dubbo3/pb/dubbogo-grpc/protobuf/dubbo3"
+	dubbo3 "github.com/apache/dubbo-go-samples/general/dubbo3/api/dubbogo-grpc/protobuf/dubbo3"
 )
 
 type GreeterProvider struct {
@@ -132,10 +132,10 @@ services:
     interface: "protobuf.Greeter" # 和grpc生成的的接口名一致,如下
 ```
 
-Grpc pb 文件的接口名可见为 protobuf.Greeter, 是用户根据需要定义的。
+Grpc api 文件的接口名可见为 protobuf.Greeter, 是用户根据需要定义的。
 triple-go 要想和 grpc 打通,一定要和 grpc 的接口名一致,并正确配置在 yaml 文件中。
 
-protobuf/grpc/helloworld.pb.go:
+protobuf/grpc/helloworld.api.go:
 ```go
 func (c *greeterClient) SayHello(ctx context.Context, in *HelloRequest, opts ...grpc.CallOption) (*User, error) {
 	out := new(User)
@@ -158,7 +158,7 @@ triple/triple-server
 Consumer 结构已经在pb文件中实现好,可直接引入
 ```go
 import (
-    dubbo3pb "github.com/apache/dubbo-go-samples/general/dubbo3/pb/dubbogo-grpc/protobuf/dubbo3"
+    dubbo3pb "github.com/apache/dubbo-go-samples/general/dubbo3/api/dubbogo-grpc/protobuf/dubbo3"
 )
 
 // 直接引入GreeterClientImpl 结构,可以进入该结构,查看Reference为“greeterImpl”
diff --git a/general/dubbo3/pb/dubbogo-grpc/protobuf/dubbo3/helloworld.pb.go b/rpc/dubbo3/pb/dubbogo-grpc/protobuf/dubbo3/helloworld.pb.go
similarity index 100%
rename from general/dubbo3/pb/dubbogo-grpc/protobuf/dubbo3/helloworld.pb.go
rename to rpc/dubbo3/pb/dubbogo-grpc/protobuf/dubbo3/helloworld.pb.go
diff --git a/general/dubbo3/pb/dubbogo-grpc/protobuf/dubbo3/helloworld.proto b/rpc/dubbo3/pb/dubbogo-grpc/protobuf/dubbo3/helloworld.proto
similarity index 100%
rename from general/dubbo3/pb/dubbogo-grpc/protobuf/dubbo3/helloworld.proto
rename to rpc/dubbo3/pb/dubbogo-grpc/protobuf/dubbo3/helloworld.proto
diff --git a/general/dubbo3/pb/dubbogo-grpc/protobuf/dubbo3/protobuf.mk b/rpc/dubbo3/pb/dubbogo-grpc/protobuf/dubbo3/protobuf.mk
similarity index 100%
rename from general/dubbo3/pb/dubbogo-grpc/protobuf/dubbo3/protobuf.mk
rename to rpc/dubbo3/pb/dubbogo-grpc/protobuf/dubbo3/protobuf.mk
diff --git a/general/dubbo3/pb/dubbogo-grpc/protobuf/grpc/helloworld.pb.go b/rpc/dubbo3/pb/dubbogo-grpc/protobuf/grpc/helloworld.pb.go
similarity index 100%
rename from general/dubbo3/pb/dubbogo-grpc/protobuf/grpc/helloworld.pb.go
rename to rpc/dubbo3/pb/dubbogo-grpc/protobuf/grpc/helloworld.pb.go
diff --git a/general/dubbo3/pb/dubbogo-grpc/protobuf/grpc/helloworld.proto b/rpc/dubbo3/pb/dubbogo-grpc/protobuf/grpc/helloworld.proto
similarity index 100%
rename from general/dubbo3/pb/dubbogo-grpc/protobuf/grpc/helloworld.proto
rename to rpc/dubbo3/pb/dubbogo-grpc/protobuf/grpc/helloworld.proto
diff --git a/general/dubbo3/pb/dubbogo-grpc/server/dubbogo-server/cmd/server.go b/rpc/dubbo3/pb/dubbogo-grpc/server/dubbogo-server/cmd/server.go
similarity index 100%
rename from general/dubbo3/pb/dubbogo-grpc/server/dubbogo-server/cmd/server.go
rename to rpc/dubbo3/pb/dubbogo-grpc/server/dubbogo-server/cmd/server.go
diff --git a/general/dubbo3/pb/dubbogo-grpc/server/dubbogo-server/conf/client.yml b/rpc/dubbo3/pb/dubbogo-grpc/server/dubbogo-server/conf/client.yml
similarity index 100%
rename from general/dubbo3/pb/dubbogo-grpc/server/dubbogo-server/conf/client.yml
rename to rpc/dubbo3/pb/dubbogo-grpc/server/dubbogo-server/conf/client.yml
diff --git a/general/dubbo3/hessian2/go-client/conf/log.yml b/rpc/dubbo3/pb/dubbogo-grpc/server/dubbogo-server/conf/log.yml
similarity index 100%
rename from general/dubbo3/hessian2/go-client/conf/log.yml
rename to rpc/dubbo3/pb/dubbogo-grpc/server/dubbogo-server/conf/log.yml
diff --git a/general/dubbo3/pb/dubbogo-grpc/server/dubbogo-server/conf/server.yml b/rpc/dubbo3/pb/dubbogo-grpc/server/dubbogo-server/conf/server.yml
similarity index 100%
rename from general/dubbo3/pb/dubbogo-grpc/server/dubbogo-server/conf/server.yml
rename to rpc/dubbo3/pb/dubbogo-grpc/server/dubbogo-server/conf/server.yml
diff --git a/general/dubbo3/msgpack/go-server/docker/docker-compose.yml b/rpc/dubbo3/pb/dubbogo-grpc/server/dubbogo-server/docker/docker-compose.yml
similarity index 100%
rename from general/dubbo3/msgpack/go-server/docker/docker-compose.yml
rename to rpc/dubbo3/pb/dubbogo-grpc/server/dubbogo-server/docker/docker-compose.yml
diff --git a/general/dubbo3/codec-extension/go-server/docker/docker-health-check.sh b/rpc/dubbo3/pb/dubbogo-grpc/server/dubbogo-server/docker/docker-health-check.sh
similarity index 100%
rename from general/dubbo3/codec-extension/go-server/docker/docker-health-check.sh
rename to rpc/dubbo3/pb/dubbogo-grpc/server/dubbogo-server/docker/docker-health-check.sh
diff --git a/general/dubbo3/pb/dubbogo-grpc/server/dubbogo-server/pkg/greeter.go b/rpc/dubbo3/pb/dubbogo-grpc/server/dubbogo-server/pkg/greeter.go
similarity index 100%
rename from general/dubbo3/pb/dubbogo-grpc/server/dubbogo-server/pkg/greeter.go
rename to rpc/dubbo3/pb/dubbogo-grpc/server/dubbogo-server/pkg/greeter.go
diff --git a/general/dubbo3/pb/dubbogo-grpc/server/dubbogo-server/tests/integration/grpc_test_proto/helloworld.pb.go b/rpc/dubbo3/pb/dubbogo-grpc/server/dubbogo-server/tests/integration/grpc_test_proto/helloworld.pb.go
similarity index 100%
rename from general/dubbo3/pb/dubbogo-grpc/server/dubbogo-server/tests/integration/grpc_test_proto/helloworld.pb.go
rename to rpc/dubbo3/pb/dubbogo-grpc/server/dubbogo-server/tests/integration/grpc_test_proto/helloworld.pb.go
diff --git a/general/dubbo3/pb/dubbogo-grpc/server/dubbogo-server/tests/integration/main_test.go b/rpc/dubbo3/pb/dubbogo-grpc/server/dubbogo-server/tests/integration/main_test.go
similarity index 100%
rename from general/dubbo3/pb/dubbogo-grpc/server/dubbogo-server/tests/integration/main_test.go
rename to rpc/dubbo3/pb/dubbogo-grpc/server/dubbogo-server/tests/integration/main_test.go
diff --git a/general/dubbo3/pb/dubbogo-grpc/server/dubbogo-server/tests/integration/userprovider_test.go b/rpc/dubbo3/pb/dubbogo-grpc/server/dubbogo-server/tests/integration/userprovider_test.go
similarity index 100%
rename from general/dubbo3/pb/dubbogo-grpc/server/dubbogo-server/tests/integration/userprovider_test.go
rename to rpc/dubbo3/pb/dubbogo-grpc/server/dubbogo-server/tests/integration/userprovider_test.go
diff --git a/general/dubbo3/pb/dubbogo-grpc/server/grpcgo-server/main.go b/rpc/dubbo3/pb/dubbogo-grpc/server/grpcgo-server/main.go
similarity index 100%
rename from general/dubbo3/pb/dubbogo-grpc/server/grpcgo-server/main.go
rename to rpc/dubbo3/pb/dubbogo-grpc/server/grpcgo-server/main.go
diff --git a/general/dubbo3/pb/dubbogo-grpc/stream-client/dubbogo-client/cmd/client.go b/rpc/dubbo3/pb/dubbogo-grpc/stream-client/dubbogo-client/cmd/client.go
similarity index 100%
rename from general/dubbo3/pb/dubbogo-grpc/stream-client/dubbogo-client/cmd/client.go
rename to rpc/dubbo3/pb/dubbogo-grpc/stream-client/dubbogo-client/cmd/client.go
diff --git a/helloworld/go-client/cmd/env.sh b/rpc/dubbo3/pb/dubbogo-grpc/stream-client/dubbogo-client/cmd/env.sh
similarity index 100%
rename from helloworld/go-client/cmd/env.sh
rename to rpc/dubbo3/pb/dubbogo-grpc/stream-client/dubbogo-client/cmd/env.sh
diff --git a/general/dubbo3/pb/dubbogo-grpc/stream-client/dubbogo-client/conf/client.yml b/rpc/dubbo3/pb/dubbogo-grpc/stream-client/dubbogo-client/conf/client.yml
similarity index 100%
rename from general/dubbo3/pb/dubbogo-grpc/stream-client/dubbogo-client/conf/client.yml
rename to rpc/dubbo3/pb/dubbogo-grpc/stream-client/dubbogo-client/conf/client.yml
diff --git a/general/dubbo3/codec-extension/go-server/conf/log.yml b/rpc/dubbo3/pb/dubbogo-grpc/stream-client/dubbogo-client/conf/log.yml
similarity index 100%
rename from general/dubbo3/codec-extension/go-server/conf/log.yml
rename to rpc/dubbo3/pb/dubbogo-grpc/stream-client/dubbogo-client/conf/log.yml
diff --git a/general/dubbo3/pb/dubbogo-grpc/stream-client/grpcgo-client/main.go b/rpc/dubbo3/pb/dubbogo-grpc/stream-client/grpcgo-client/main.go
similarity index 100%
rename from general/dubbo3/pb/dubbogo-grpc/stream-client/grpcgo-client/main.go
rename to rpc/dubbo3/pb/dubbogo-grpc/stream-client/grpcgo-client/main.go
diff --git a/general/dubbo3/pb/dubbogo-grpc/unary-client/dubbogo-client/cmd/client.go b/rpc/dubbo3/pb/dubbogo-grpc/unary-client/dubbogo-client/cmd/client.go
similarity index 100%
rename from general/dubbo3/pb/dubbogo-grpc/unary-client/dubbogo-client/cmd/client.go
rename to rpc/dubbo3/pb/dubbogo-grpc/unary-client/dubbogo-client/cmd/client.go
diff --git a/general/dubbo3/pb/dubbogo-grpc/unary-client/dubbogo-client/conf/client.yml b/rpc/dubbo3/pb/dubbogo-grpc/unary-client/dubbogo-client/conf/client.yml
similarity index 100%
rename from general/dubbo3/pb/dubbogo-grpc/unary-client/dubbogo-client/conf/client.yml
rename to rpc/dubbo3/pb/dubbogo-grpc/unary-client/dubbogo-client/conf/client.yml
diff --git a/general/dubbo3/codec-extension/go-client/conf/log.yml b/rpc/dubbo3/pb/dubbogo-grpc/unary-client/dubbogo-client/conf/log.yml
similarity index 100%
rename from general/dubbo3/codec-extension/go-client/conf/log.yml
rename to rpc/dubbo3/pb/dubbogo-grpc/unary-client/dubbogo-client/conf/log.yml
diff --git a/general/dubbo3/pb/dubbogo-grpc/unary-client/grpcgo-client/main.go b/rpc/dubbo3/pb/dubbogo-grpc/unary-client/grpcgo-client/main.go
similarity index 100%
rename from general/dubbo3/pb/dubbogo-grpc/unary-client/grpcgo-client/main.go
rename to rpc/dubbo3/pb/dubbogo-grpc/unary-client/grpcgo-client/main.go
diff --git a/general/dubbo3/pb/dubbogo-java/README.md b/rpc/dubbo3/pb/dubbogo-java/README.md
similarity index 71%
rename from general/dubbo3/pb/dubbogo-java/README.md
rename to rpc/dubbo3/pb/dubbogo-java/README.md
index 74ec5d1..1b1ae15 100644
--- a/general/dubbo3/pb/dubbogo-java/README.md
+++ b/rpc/dubbo3/pb/dubbogo-java/README.md
@@ -1,6 +1,6 @@
 # dubbo-java intercommunication
 
-For pb definition and go client and server startup, please refer to [dubbogo-grpc](../dubbogo-grpc/README.md)
+For api definition and go client and server startup, please refer to [dubbogo-grpc](../dubbogo-grpc/README.md)
 
 ## Instructions
 
diff --git a/general/dubbo3/pb/dubbogo-java/README_zh.md b/rpc/dubbo3/pb/dubbogo-java/README_zh.md
similarity index 71%
rename from general/dubbo3/pb/dubbogo-java/README_zh.md
rename to rpc/dubbo3/pb/dubbogo-java/README_zh.md
index d84970d..b3d8f8a 100644
--- a/general/dubbo3/pb/dubbogo-java/README_zh.md
+++ b/rpc/dubbo3/pb/dubbogo-java/README_zh.md
@@ -1,6 +1,6 @@
 # dubbo-java互通
 
-pb 定义以及 go 客户端、服务端启动,可以参考 [dubbogo-grpc](../dubbogo-grpc/README_zh.md)
+api 定义以及 go 客户端、服务端启动,可以参考 [dubbogo-grpc](../dubbogo-grpc/README_zh.md)
 
 ## 使用方法
 
diff --git a/general/dubbo3/pb/dubbogo-java/go-client/cmd/client.go b/rpc/dubbo3/pb/dubbogo-java/go-client/cmd/client.go
similarity index 100%
rename from general/dubbo3/pb/dubbogo-java/go-client/cmd/client.go
rename to rpc/dubbo3/pb/dubbogo-java/go-client/cmd/client.go
diff --git a/general/dubbo3/pb/dubbogo-java/go-client/cmd/env.sh b/rpc/dubbo3/pb/dubbogo-java/go-client/cmd/env.sh
similarity index 100%
rename from general/dubbo3/pb/dubbogo-java/go-client/cmd/env.sh
rename to rpc/dubbo3/pb/dubbogo-java/go-client/cmd/env.sh
diff --git a/general/dubbo3/pb/dubbogo-java/go-server/conf/client.yml b/rpc/dubbo3/pb/dubbogo-java/go-client/conf/client.yml
similarity index 100%
rename from general/dubbo3/pb/dubbogo-java/go-server/conf/client.yml
rename to rpc/dubbo3/pb/dubbogo-java/go-client/conf/client.yml
diff --git a/general/dubbo/go-server/conf/log.yml b/rpc/dubbo3/pb/dubbogo-java/go-client/conf/log.yml
similarity index 100%
rename from general/dubbo/go-server/conf/log.yml
rename to rpc/dubbo3/pb/dubbogo-java/go-client/conf/log.yml
diff --git a/general/dubbo3/pb/dubbogo-java/go-server/cmd/env.sh b/rpc/dubbo3/pb/dubbogo-java/go-server/cmd/env.sh
similarity index 100%
rename from general/dubbo3/pb/dubbogo-java/go-server/cmd/env.sh
rename to rpc/dubbo3/pb/dubbogo-java/go-server/cmd/env.sh
diff --git a/general/dubbo3/pb/dubbogo-java/go-server/cmd/server.go b/rpc/dubbo3/pb/dubbogo-java/go-server/cmd/server.go
similarity index 100%
rename from general/dubbo3/pb/dubbogo-java/go-server/cmd/server.go
rename to rpc/dubbo3/pb/dubbogo-java/go-server/cmd/server.go
diff --git a/general/dubbo3/pb/dubbogo-java/go-client/conf/client.yml b/rpc/dubbo3/pb/dubbogo-java/go-server/conf/client.yml
similarity index 100%
rename from general/dubbo3/pb/dubbogo-java/go-client/conf/client.yml
rename to rpc/dubbo3/pb/dubbogo-java/go-server/conf/client.yml
diff --git a/general/dubbo/go-client/conf/log.yml b/rpc/dubbo3/pb/dubbogo-java/go-server/conf/log.yml
similarity index 100%
rename from general/dubbo/go-client/conf/log.yml
rename to rpc/dubbo3/pb/dubbogo-java/go-server/conf/log.yml
diff --git a/general/dubbo3/pb/dubbogo-java/go-server/conf/server.yml b/rpc/dubbo3/pb/dubbogo-java/go-server/conf/server.yml
similarity index 100%
rename from general/dubbo3/pb/dubbogo-java/go-server/conf/server.yml
rename to rpc/dubbo3/pb/dubbogo-java/go-server/conf/server.yml
diff --git a/general/dubbo3/hessian2/go-server/docker/docker-compose.yml b/rpc/dubbo3/pb/dubbogo-java/go-server/docker/docker-compose.yml
similarity index 100%
rename from general/dubbo3/hessian2/go-server/docker/docker-compose.yml
rename to rpc/dubbo3/pb/dubbogo-java/go-server/docker/docker-compose.yml
diff --git a/general/dubbo3/pb/dubbogo-java/go-server/pkg/greeter.go b/rpc/dubbo3/pb/dubbogo-java/go-server/pkg/greeter.go
similarity index 100%
rename from general/dubbo3/pb/dubbogo-java/go-server/pkg/greeter.go
rename to rpc/dubbo3/pb/dubbogo-java/go-server/pkg/greeter.go
diff --git a/general/dubbo3/pb/dubbogo-java/go-server/tests/integration/main_test.go b/rpc/dubbo3/pb/dubbogo-java/go-server/tests/integration/main_test.go
similarity index 100%
rename from general/dubbo3/pb/dubbogo-java/go-server/tests/integration/main_test.go
rename to rpc/dubbo3/pb/dubbogo-java/go-server/tests/integration/main_test.go
diff --git a/general/dubbo3/pb/dubbogo-java/go-server/tests/integration/userprovider_test.go b/rpc/dubbo3/pb/dubbogo-java/go-server/tests/integration/userprovider_test.go
similarity index 100%
rename from general/dubbo3/pb/dubbogo-java/go-server/tests/integration/userprovider_test.go
rename to rpc/dubbo3/pb/dubbogo-java/go-server/tests/integration/userprovider_test.go
diff --git a/general/dubbo3/hessian2/java-client/build/generated/source/proto/main/java/org/apache/dubbo/sample/hello/Helloworld.java b/rpc/dubbo3/pb/dubbogo-java/java-client/build/generated/source/proto/main/java/org/apache/dubbo/sample/hello/Helloworld.java
similarity index 95%
copy from general/dubbo3/hessian2/java-client/build/generated/source/proto/main/java/org/apache/dubbo/sample/hello/Helloworld.java
copy to rpc/dubbo3/pb/dubbogo-java/java-client/build/generated/source/proto/main/java/org/apache/dubbo/sample/hello/Helloworld.java
index 4df0b78..99758ac 100644
--- a/general/dubbo3/hessian2/java-client/build/generated/source/proto/main/java/org/apache/dubbo/sample/hello/Helloworld.java
+++ b/rpc/dubbo3/pb/dubbogo-java/java-client/build/generated/source/proto/main/java/org/apache/dubbo/sample/hello/Helloworld.java
@@ -20,10 +20,12 @@ public final class Helloworld {
 
     /**
      * <code>string name = 1;</code>
+     * @return The name.
      */
     java.lang.String getName();
     /**
      * <code>string name = 1;</code>
+     * @return The bytes for name.
      */
     com.google.protobuf.ByteString
         getNameBytes();
@@ -35,7 +37,7 @@ public final class Helloworld {
    *
    * Protobuf type {@code helloworld.HelloRequest}
    */
-  public  static final class HelloRequest extends
+  public static final class HelloRequest extends
       com.google.protobuf.GeneratedMessageV3 implements
       // @@protoc_insertion_point(message_implements:helloworld.HelloRequest)
       HelloRequestOrBuilder {
@@ -49,6 +51,13 @@ public final class Helloworld {
     }
 
     @java.lang.Override
+    @SuppressWarnings({"unused"})
+    protected java.lang.Object newInstance(
+        UnusedPrivateParameter unused) {
+      return new HelloRequest();
+    }
+
+    @java.lang.Override
     public final com.google.protobuf.UnknownFieldSet
     getUnknownFields() {
       return this.unknownFields;
@@ -61,7 +70,6 @@ public final class Helloworld {
       if (extensionRegistry == null) {
         throw new java.lang.NullPointerException();
       }
-      int mutable_bitField0_ = 0;
       com.google.protobuf.UnknownFieldSet.Builder unknownFields =
           com.google.protobuf.UnknownFieldSet.newBuilder();
       try {
@@ -114,7 +122,9 @@ public final class Helloworld {
     private volatile java.lang.Object name_;
     /**
      * <code>string name = 1;</code>
+     * @return The name.
      */
+    @java.lang.Override
     public java.lang.String getName() {
       java.lang.Object ref = name_;
       if (ref instanceof java.lang.String) {
@@ -129,7 +139,9 @@ public final class Helloworld {
     }
     /**
      * <code>string name = 1;</code>
+     * @return The bytes for name.
      */
+    @java.lang.Override
     public com.google.protobuf.ByteString
         getNameBytes() {
       java.lang.Object ref = name_;
@@ -453,6 +465,7 @@ public final class Helloworld {
       private java.lang.Object name_ = "";
       /**
        * <code>string name = 1;</code>
+       * @return The name.
        */
       public java.lang.String getName() {
         java.lang.Object ref = name_;
@@ -468,6 +481,7 @@ public final class Helloworld {
       }
       /**
        * <code>string name = 1;</code>
+       * @return The bytes for name.
        */
       public com.google.protobuf.ByteString
           getNameBytes() {
@@ -484,6 +498,8 @@ public final class Helloworld {
       }
       /**
        * <code>string name = 1;</code>
+       * @param value The name to set.
+       * @return This builder for chaining.
        */
       public Builder setName(
           java.lang.String value) {
@@ -497,6 +513,7 @@ public final class Helloworld {
       }
       /**
        * <code>string name = 1;</code>
+       * @return This builder for chaining.
        */
       public Builder clearName() {
         
@@ -506,6 +523,8 @@ public final class Helloworld {
       }
       /**
        * <code>string name = 1;</code>
+       * @param value The bytes for name to set.
+       * @return This builder for chaining.
        */
       public Builder setNameBytes(
           com.google.protobuf.ByteString value) {
@@ -577,26 +596,31 @@ public final class Helloworld {
 
     /**
      * <code>string name = 1;</code>
+     * @return The name.
      */
     java.lang.String getName();
     /**
      * <code>string name = 1;</code>
+     * @return The bytes for name.
      */
     com.google.protobuf.ByteString
         getNameBytes();
 
     /**
      * <code>string id = 2;</code>
+     * @return The id.
      */
     java.lang.String getId();
     /**
      * <code>string id = 2;</code>
+     * @return The bytes for id.
      */
     com.google.protobuf.ByteString
         getIdBytes();
 
     /**
      * <code>int32 age = 3;</code>
+     * @return The age.
      */
     int getAge();
   }
@@ -607,7 +631,7 @@ public final class Helloworld {
    *
    * Protobuf type {@code helloworld.User}
    */
-  public  static final class User extends
+  public static final class User extends
       com.google.protobuf.GeneratedMessageV3 implements
       // @@protoc_insertion_point(message_implements:helloworld.User)
       UserOrBuilder {
@@ -622,6 +646,13 @@ public final class Helloworld {
     }
 
     @java.lang.Override
+    @SuppressWarnings({"unused"})
+    protected java.lang.Object newInstance(
+        UnusedPrivateParameter unused) {
+      return new User();
+    }
+
+    @java.lang.Override
     public final com.google.protobuf.UnknownFieldSet
     getUnknownFields() {
       return this.unknownFields;
@@ -634,7 +665,6 @@ public final class Helloworld {
       if (extensionRegistry == null) {
         throw new java.lang.NullPointerException();
       }
-      int mutable_bitField0_ = 0;
       com.google.protobuf.UnknownFieldSet.Builder unknownFields =
           com.google.protobuf.UnknownFieldSet.newBuilder();
       try {
@@ -698,7 +728,9 @@ public final class Helloworld {
     private volatile java.lang.Object name_;
     /**
      * <code>string name = 1;</code>
+     * @return The name.
      */
+    @java.lang.Override
     public java.lang.String getName() {
       java.lang.Object ref = name_;
       if (ref instanceof java.lang.String) {
@@ -713,7 +745,9 @@ public final class Helloworld {
     }
     /**
      * <code>string name = 1;</code>
+     * @return The bytes for name.
      */
+    @java.lang.Override
     public com.google.protobuf.ByteString
         getNameBytes() {
       java.lang.Object ref = name_;
@@ -732,7 +766,9 @@ public final class Helloworld {
     private volatile java.lang.Object id_;
     /**
      * <code>string id = 2;</code>
+     * @return The id.
      */
+    @java.lang.Override
     public java.lang.String getId() {
       java.lang.Object ref = id_;
       if (ref instanceof java.lang.String) {
@@ -747,7 +783,9 @@ public final class Helloworld {
     }
     /**
      * <code>string id = 2;</code>
+     * @return The bytes for id.
      */
+    @java.lang.Override
     public com.google.protobuf.ByteString
         getIdBytes() {
       java.lang.Object ref = id_;
@@ -766,7 +804,9 @@ public final class Helloworld {
     private int age_;
     /**
      * <code>int32 age = 3;</code>
+     * @return The age.
      */
+    @java.lang.Override
     public int getAge() {
       return age_;
     }
@@ -1114,6 +1154,7 @@ public final class Helloworld {
       private java.lang.Object name_ = "";
       /**
        * <code>string name = 1;</code>
+       * @return The name.
        */
       public java.lang.String getName() {
         java.lang.Object ref = name_;
@@ -1129,6 +1170,7 @@ public final class Helloworld {
       }
       /**
        * <code>string name = 1;</code>
+       * @return The bytes for name.
        */
       public com.google.protobuf.ByteString
           getNameBytes() {
@@ -1145,6 +1187,8 @@ public final class Helloworld {
       }
       /**
        * <code>string name = 1;</code>
+       * @param value The name to set.
+       * @return This builder for chaining.
        */
       public Builder setName(
           java.lang.String value) {
@@ -1158,6 +1202,7 @@ public final class Helloworld {
       }
       /**
        * <code>string name = 1;</code>
+       * @return This builder for chaining.
        */
       public Builder clearName() {
         
@@ -1167,6 +1212,8 @@ public final class Helloworld {
       }
       /**
        * <code>string name = 1;</code>
+       * @param value The bytes for name to set.
+       * @return This builder for chaining.
        */
       public Builder setNameBytes(
           com.google.protobuf.ByteString value) {
@@ -1183,6 +1230,7 @@ public final class Helloworld {
       private java.lang.Object id_ = "";
       /**
        * <code>string id = 2;</code>
+       * @return The id.
        */
       public java.lang.String getId() {
         java.lang.Object ref = id_;
@@ -1198,6 +1246,7 @@ public final class Helloworld {
       }
       /**
        * <code>string id = 2;</code>
+       * @return The bytes for id.
        */
       public com.google.protobuf.ByteString
           getIdBytes() {
@@ -1214,6 +1263,8 @@ public final class Helloworld {
       }
       /**
        * <code>string id = 2;</code>
+       * @param value The id to set.
+       * @return This builder for chaining.
        */
       public Builder setId(
           java.lang.String value) {
@@ -1227,6 +1278,7 @@ public final class Helloworld {
       }
       /**
        * <code>string id = 2;</code>
+       * @return This builder for chaining.
        */
       public Builder clearId() {
         
@@ -1236,6 +1288,8 @@ public final class Helloworld {
       }
       /**
        * <code>string id = 2;</code>
+       * @param value The bytes for id to set.
+       * @return This builder for chaining.
        */
       public Builder setIdBytes(
           com.google.protobuf.ByteString value) {
@@ -1252,12 +1306,16 @@ public final class Helloworld {
       private int age_ ;
       /**
        * <code>int32 age = 3;</code>
+       * @return The age.
        */
+      @java.lang.Override
       public int getAge() {
         return age_;
       }
       /**
        * <code>int32 age = 3;</code>
+       * @param value The age to set.
+       * @return This builder for chaining.
        */
       public Builder setAge(int value) {
         
@@ -1267,6 +1325,7 @@ public final class Helloworld {
       }
       /**
        * <code>int32 age = 3;</code>
+       * @return This builder for chaining.
        */
       public Builder clearAge() {
         
@@ -1351,18 +1410,10 @@ public final class Helloworld {
       "(\t\022\n\n\002id\030\002 \001(\t\022\013\n\003age\030\003 \001(\005B\037\n\035org.apach" +
       "e.dubbo.sample.hellob\006proto3"
     };
-    com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner =
-        new com.google.protobuf.Descriptors.FileDescriptor.    InternalDescriptorAssigner() {
-          public com.google.protobuf.ExtensionRegistry assignDescriptors(
-              com.google.protobuf.Descriptors.FileDescriptor root) {
-            descriptor = root;
-            return null;
-          }
-        };
-    com.google.protobuf.Descriptors.FileDescriptor
+    descriptor = com.google.protobuf.Descriptors.FileDescriptor
       .internalBuildGeneratedFileFrom(descriptorData,
         new com.google.protobuf.Descriptors.FileDescriptor[] {
-        }, assigner);
+        });
     internal_static_helloworld_HelloRequest_descriptor =
       getDescriptor().getMessageTypes().get(0);
     internal_static_helloworld_HelloRequest_fieldAccessorTable = new
diff --git a/general/dubbo3/pb/dubbogo-java/java-client/pom.xml b/rpc/dubbo3/pb/dubbogo-java/java-client/pom.xml
similarity index 100%
rename from general/dubbo3/pb/dubbogo-java/java-client/pom.xml
rename to rpc/dubbo3/pb/dubbogo-java/java-client/pom.xml
diff --git a/general/dubbo3/hessian2/java-client/run.sh b/rpc/dubbo3/pb/dubbogo-java/java-client/run.sh
similarity index 100%
rename from general/dubbo3/hessian2/java-client/run.sh
rename to rpc/dubbo3/pb/dubbogo-java/java-client/run.sh
diff --git a/general/dubbo3/pb/dubbogo-java/java-client/src/main/java/com/apache/dubbo/sample/basic/ApiConsumer.java b/rpc/dubbo3/pb/dubbogo-java/java-client/src/main/java/com/apache/dubbo/sample/basic/ApiConsumer.java
similarity index 100%
rename from general/dubbo3/pb/dubbogo-java/java-client/src/main/java/com/apache/dubbo/sample/basic/ApiConsumer.java
rename to rpc/dubbo3/pb/dubbogo-java/java-client/src/main/java/com/apache/dubbo/sample/basic/ApiConsumer.java
diff --git a/general/dubbo3/pb/dubbogo-java/java-client/src/main/java/com/apache/dubbo/sample/basic/IGreeter.java b/rpc/dubbo3/pb/dubbogo-java/java-client/src/main/java/com/apache/dubbo/sample/basic/IGreeter.java
similarity index 100%
rename from general/dubbo3/pb/dubbogo-java/java-client/src/main/java/com/apache/dubbo/sample/basic/IGreeter.java
rename to rpc/dubbo3/pb/dubbogo-java/java-client/src/main/java/com/apache/dubbo/sample/basic/IGreeter.java
diff --git a/general/dubbo3/hessian2/java-server/src/main/proto/helloworld.proto b/rpc/dubbo3/pb/dubbogo-java/java-client/src/main/proto/helloworld.proto
similarity index 100%
rename from general/dubbo3/hessian2/java-server/src/main/proto/helloworld.proto
rename to rpc/dubbo3/pb/dubbogo-java/java-client/src/main/proto/helloworld.proto
diff --git a/general/dubbo3/hessian2/java-server/src/main/resources/log4j.properties b/rpc/dubbo3/pb/dubbogo-java/java-client/src/main/resources/log4j.properties
similarity index 100%
rename from general/dubbo3/hessian2/java-server/src/main/resources/log4j.properties
rename to rpc/dubbo3/pb/dubbogo-java/java-client/src/main/resources/log4j.properties
diff --git a/general/dubbo3/hessian2/java-client/build/generated/source/proto/main/java/org/apache/dubbo/sample/hello/Helloworld.java b/rpc/dubbo3/pb/dubbogo-java/java-server/build/generated/source/proto/main/java/org/apache/dubbo/sample/hello/Helloworld.java
similarity index 95%
rename from general/dubbo3/hessian2/java-client/build/generated/source/proto/main/java/org/apache/dubbo/sample/hello/Helloworld.java
rename to rpc/dubbo3/pb/dubbogo-java/java-server/build/generated/source/proto/main/java/org/apache/dubbo/sample/hello/Helloworld.java
index 4df0b78..99758ac 100644
--- a/general/dubbo3/hessian2/java-client/build/generated/source/proto/main/java/org/apache/dubbo/sample/hello/Helloworld.java
+++ b/rpc/dubbo3/pb/dubbogo-java/java-server/build/generated/source/proto/main/java/org/apache/dubbo/sample/hello/Helloworld.java
@@ -20,10 +20,12 @@ public final class Helloworld {
 
     /**
      * <code>string name = 1;</code>
+     * @return The name.
      */
     java.lang.String getName();
     /**
      * <code>string name = 1;</code>
+     * @return The bytes for name.
      */
     com.google.protobuf.ByteString
         getNameBytes();
@@ -35,7 +37,7 @@ public final class Helloworld {
    *
    * Protobuf type {@code helloworld.HelloRequest}
    */
-  public  static final class HelloRequest extends
+  public static final class HelloRequest extends
       com.google.protobuf.GeneratedMessageV3 implements
       // @@protoc_insertion_point(message_implements:helloworld.HelloRequest)
       HelloRequestOrBuilder {
@@ -49,6 +51,13 @@ public final class Helloworld {
     }
 
     @java.lang.Override
+    @SuppressWarnings({"unused"})
+    protected java.lang.Object newInstance(
+        UnusedPrivateParameter unused) {
+      return new HelloRequest();
+    }
+
+    @java.lang.Override
     public final com.google.protobuf.UnknownFieldSet
     getUnknownFields() {
       return this.unknownFields;
@@ -61,7 +70,6 @@ public final class Helloworld {
       if (extensionRegistry == null) {
         throw new java.lang.NullPointerException();
       }
-      int mutable_bitField0_ = 0;
       com.google.protobuf.UnknownFieldSet.Builder unknownFields =
           com.google.protobuf.UnknownFieldSet.newBuilder();
       try {
@@ -114,7 +122,9 @@ public final class Helloworld {
     private volatile java.lang.Object name_;
     /**
      * <code>string name = 1;</code>
+     * @return The name.
      */
+    @java.lang.Override
     public java.lang.String getName() {
       java.lang.Object ref = name_;
       if (ref instanceof java.lang.String) {
@@ -129,7 +139,9 @@ public final class Helloworld {
     }
     /**
      * <code>string name = 1;</code>
+     * @return The bytes for name.
      */
+    @java.lang.Override
     public com.google.protobuf.ByteString
         getNameBytes() {
       java.lang.Object ref = name_;
@@ -453,6 +465,7 @@ public final class Helloworld {
       private java.lang.Object name_ = "";
       /**
        * <code>string name = 1;</code>
+       * @return The name.
        */
       public java.lang.String getName() {
         java.lang.Object ref = name_;
@@ -468,6 +481,7 @@ public final class Helloworld {
       }
       /**
        * <code>string name = 1;</code>
+       * @return The bytes for name.
        */
       public com.google.protobuf.ByteString
           getNameBytes() {
@@ -484,6 +498,8 @@ public final class Helloworld {
       }
       /**
        * <code>string name = 1;</code>
+       * @param value The name to set.
+       * @return This builder for chaining.
        */
       public Builder setName(
           java.lang.String value) {
@@ -497,6 +513,7 @@ public final class Helloworld {
       }
       /**
        * <code>string name = 1;</code>
+       * @return This builder for chaining.
        */
       public Builder clearName() {
         
@@ -506,6 +523,8 @@ public final class Helloworld {
       }
       /**
        * <code>string name = 1;</code>
+       * @param value The bytes for name to set.
+       * @return This builder for chaining.
        */
       public Builder setNameBytes(
           com.google.protobuf.ByteString value) {
@@ -577,26 +596,31 @@ public final class Helloworld {
 
     /**
      * <code>string name = 1;</code>
+     * @return The name.
      */
     java.lang.String getName();
     /**
      * <code>string name = 1;</code>
+     * @return The bytes for name.
      */
     com.google.protobuf.ByteString
         getNameBytes();
 
     /**
      * <code>string id = 2;</code>
+     * @return The id.
      */
     java.lang.String getId();
     /**
      * <code>string id = 2;</code>
+     * @return The bytes for id.
      */
     com.google.protobuf.ByteString
         getIdBytes();
 
     /**
      * <code>int32 age = 3;</code>
+     * @return The age.
      */
     int getAge();
   }
@@ -607,7 +631,7 @@ public final class Helloworld {
    *
    * Protobuf type {@code helloworld.User}
    */
-  public  static final class User extends
+  public static final class User extends
       com.google.protobuf.GeneratedMessageV3 implements
       // @@protoc_insertion_point(message_implements:helloworld.User)
       UserOrBuilder {
@@ -622,6 +646,13 @@ public final class Helloworld {
     }
 
     @java.lang.Override
+    @SuppressWarnings({"unused"})
+    protected java.lang.Object newInstance(
+        UnusedPrivateParameter unused) {
+      return new User();
+    }
+
+    @java.lang.Override
     public final com.google.protobuf.UnknownFieldSet
     getUnknownFields() {
       return this.unknownFields;
@@ -634,7 +665,6 @@ public final class Helloworld {
       if (extensionRegistry == null) {
         throw new java.lang.NullPointerException();
       }
-      int mutable_bitField0_ = 0;
       com.google.protobuf.UnknownFieldSet.Builder unknownFields =
           com.google.protobuf.UnknownFieldSet.newBuilder();
       try {
@@ -698,7 +728,9 @@ public final class Helloworld {
     private volatile java.lang.Object name_;
     /**
      * <code>string name = 1;</code>
+     * @return The name.
      */
+    @java.lang.Override
     public java.lang.String getName() {
       java.lang.Object ref = name_;
       if (ref instanceof java.lang.String) {
@@ -713,7 +745,9 @@ public final class Helloworld {
     }
     /**
      * <code>string name = 1;</code>
+     * @return The bytes for name.
      */
+    @java.lang.Override
     public com.google.protobuf.ByteString
         getNameBytes() {
       java.lang.Object ref = name_;
@@ -732,7 +766,9 @@ public final class Helloworld {
     private volatile java.lang.Object id_;
     /**
      * <code>string id = 2;</code>
+     * @return The id.
      */
+    @java.lang.Override
     public java.lang.String getId() {
       java.lang.Object ref = id_;
       if (ref instanceof java.lang.String) {
@@ -747,7 +783,9 @@ public final class Helloworld {
     }
     /**
      * <code>string id = 2;</code>
+     * @return The bytes for id.
      */
+    @java.lang.Override
     public com.google.protobuf.ByteString
         getIdBytes() {
       java.lang.Object ref = id_;
@@ -766,7 +804,9 @@ public final class Helloworld {
     private int age_;
     /**
      * <code>int32 age = 3;</code>
+     * @return The age.
      */
+    @java.lang.Override
     public int getAge() {
       return age_;
     }
@@ -1114,6 +1154,7 @@ public final class Helloworld {
       private java.lang.Object name_ = "";
       /**
        * <code>string name = 1;</code>
+       * @return The name.
        */
       public java.lang.String getName() {
         java.lang.Object ref = name_;
@@ -1129,6 +1170,7 @@ public final class Helloworld {
       }
       /**
        * <code>string name = 1;</code>
+       * @return The bytes for name.
        */
       public com.google.protobuf.ByteString
           getNameBytes() {
@@ -1145,6 +1187,8 @@ public final class Helloworld {
       }
       /**
        * <code>string name = 1;</code>
+       * @param value The name to set.
+       * @return This builder for chaining.
        */
       public Builder setName(
           java.lang.String value) {
@@ -1158,6 +1202,7 @@ public final class Helloworld {
       }
       /**
        * <code>string name = 1;</code>
+       * @return This builder for chaining.
        */
       public Builder clearName() {
         
@@ -1167,6 +1212,8 @@ public final class Helloworld {
       }
       /**
        * <code>string name = 1;</code>
+       * @param value The bytes for name to set.
+       * @return This builder for chaining.
        */
       public Builder setNameBytes(
           com.google.protobuf.ByteString value) {
@@ -1183,6 +1230,7 @@ public final class Helloworld {
       private java.lang.Object id_ = "";
       /**
        * <code>string id = 2;</code>
+       * @return The id.
        */
       public java.lang.String getId() {
         java.lang.Object ref = id_;
@@ -1198,6 +1246,7 @@ public final class Helloworld {
       }
       /**
        * <code>string id = 2;</code>
+       * @return The bytes for id.
        */
       public com.google.protobuf.ByteString
           getIdBytes() {
@@ -1214,6 +1263,8 @@ public final class Helloworld {
       }
       /**
        * <code>string id = 2;</code>
+       * @param value The id to set.
+       * @return This builder for chaining.
        */
       public Builder setId(
           java.lang.String value) {
@@ -1227,6 +1278,7 @@ public final class Helloworld {
       }
       /**
        * <code>string id = 2;</code>
+       * @return This builder for chaining.
        */
       public Builder clearId() {
         
@@ -1236,6 +1288,8 @@ public final class Helloworld {
       }
       /**
        * <code>string id = 2;</code>
+       * @param value The bytes for id to set.
+       * @return This builder for chaining.
        */
       public Builder setIdBytes(
           com.google.protobuf.ByteString value) {
@@ -1252,12 +1306,16 @@ public final class Helloworld {
       private int age_ ;
       /**
        * <code>int32 age = 3;</code>
+       * @return The age.
        */
+      @java.lang.Override
       public int getAge() {
         return age_;
       }
       /**
        * <code>int32 age = 3;</code>
+       * @param value The age to set.
+       * @return This builder for chaining.
        */
       public Builder setAge(int value) {
         
@@ -1267,6 +1325,7 @@ public final class Helloworld {
       }
       /**
        * <code>int32 age = 3;</code>
+       * @return This builder for chaining.
        */
       public Builder clearAge() {
         
@@ -1351,18 +1410,10 @@ public final class Helloworld {
       "(\t\022\n\n\002id\030\002 \001(\t\022\013\n\003age\030\003 \001(\005B\037\n\035org.apach" +
       "e.dubbo.sample.hellob\006proto3"
     };
-    com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner =
-        new com.google.protobuf.Descriptors.FileDescriptor.    InternalDescriptorAssigner() {
-          public com.google.protobuf.ExtensionRegistry assignDescriptors(
-              com.google.protobuf.Descriptors.FileDescriptor root) {
-            descriptor = root;
-            return null;
-          }
-        };
-    com.google.protobuf.Descriptors.FileDescriptor
+    descriptor = com.google.protobuf.Descriptors.FileDescriptor
       .internalBuildGeneratedFileFrom(descriptorData,
         new com.google.protobuf.Descriptors.FileDescriptor[] {
-        }, assigner);
+        });
     internal_static_helloworld_HelloRequest_descriptor =
       getDescriptor().getMessageTypes().get(0);
     internal_static_helloworld_HelloRequest_fieldAccessorTable = new
diff --git a/general/dubbo3/pb/dubbogo-java/java-server/pom.xml b/rpc/dubbo3/pb/dubbogo-java/java-server/pom.xml
similarity index 100%
rename from general/dubbo3/pb/dubbogo-java/java-server/pom.xml
rename to rpc/dubbo3/pb/dubbogo-java/java-server/pom.xml
diff --git a/general/dubbo3/hessian2/java-server/run.sh b/rpc/dubbo3/pb/dubbogo-java/java-server/run.sh
similarity index 100%
rename from general/dubbo3/hessian2/java-server/run.sh
rename to rpc/dubbo3/pb/dubbogo-java/java-server/run.sh
diff --git a/general/dubbo3/pb/dubbogo-java/java-server/src/main/java/com/apache/dubbo/sample/basic/ApiProvider.java b/rpc/dubbo3/pb/dubbogo-java/java-server/src/main/java/com/apache/dubbo/sample/basic/ApiProvider.java
similarity index 100%
rename from general/dubbo3/pb/dubbogo-java/java-server/src/main/java/com/apache/dubbo/sample/basic/ApiProvider.java
rename to rpc/dubbo3/pb/dubbogo-java/java-server/src/main/java/com/apache/dubbo/sample/basic/ApiProvider.java
diff --git a/general/dubbo3/pb/dubbogo-java/java-server/src/main/java/com/apache/dubbo/sample/basic/IGreeter.java b/rpc/dubbo3/pb/dubbogo-java/java-server/src/main/java/com/apache/dubbo/sample/basic/IGreeter.java
similarity index 100%
rename from general/dubbo3/pb/dubbogo-java/java-server/src/main/java/com/apache/dubbo/sample/basic/IGreeter.java
rename to rpc/dubbo3/pb/dubbogo-java/java-server/src/main/java/com/apache/dubbo/sample/basic/IGreeter.java
diff --git a/general/dubbo3/pb/dubbogo-java/java-server/src/main/java/com/apache/dubbo/sample/basic/IGreeter1Impl.java b/rpc/dubbo3/pb/dubbogo-java/java-server/src/main/java/com/apache/dubbo/sample/basic/IGreeter1Impl.java
similarity index 100%
rename from general/dubbo3/pb/dubbogo-java/java-server/src/main/java/com/apache/dubbo/sample/basic/IGreeter1Impl.java
rename to rpc/dubbo3/pb/dubbogo-java/java-server/src/main/java/com/apache/dubbo/sample/basic/IGreeter1Impl.java
diff --git a/general/dubbo3/hessian2/java-client/src/main/proto/helloworld.proto b/rpc/dubbo3/pb/dubbogo-java/java-server/src/main/proto/helloworld.proto
similarity index 100%
rename from general/dubbo3/hessian2/java-client/src/main/proto/helloworld.proto
rename to rpc/dubbo3/pb/dubbogo-java/java-server/src/main/proto/helloworld.proto
diff --git a/general/dubbo3/hessian2/java-client/src/main/resources/log4j.properties b/rpc/dubbo3/pb/dubbogo-java/java-server/src/main/resources/log4j.properties
similarity index 100%
rename from general/dubbo3/hessian2/java-client/src/main/resources/log4j.properties
rename to rpc/dubbo3/pb/dubbogo-java/java-server/src/main/resources/log4j.properties
diff --git a/helloworld/protobuf/helloworld.pb.go b/rpc/dubbo3/pb/dubbogo-java/protobuf/helloworld.pb.go
similarity index 100%
rename from helloworld/protobuf/helloworld.pb.go
rename to rpc/dubbo3/pb/dubbogo-java/protobuf/helloworld.pb.go
diff --git a/helloworld/protobuf/helloworld.proto b/rpc/dubbo3/pb/dubbogo-java/protobuf/helloworld.proto
similarity index 100%
rename from helloworld/protobuf/helloworld.proto
rename to rpc/dubbo3/pb/dubbogo-java/protobuf/helloworld.proto
diff --git a/helloworld/protobuf/protobuf.mk b/rpc/dubbo3/pb/dubbogo-java/protobuf/protobuf.mk
similarity index 100%
rename from helloworld/protobuf/protobuf.mk
rename to rpc/dubbo3/pb/dubbogo-java/protobuf/protobuf.mk
diff --git a/general/grpc/go-client/cmd/client.go b/rpc/grpc/go-client/cmd/client.go
similarity index 100%
rename from general/grpc/go-client/cmd/client.go
rename to rpc/grpc/go-client/cmd/client.go
diff --git a/general/grpc/go-client/conf/client.yml b/rpc/grpc/go-client/conf/client.yml
similarity index 100%
rename from general/grpc/go-client/conf/client.yml
rename to rpc/grpc/go-client/conf/client.yml
diff --git a/general/grpc/go-client/conf/log.yml b/rpc/grpc/go-client/conf/log.yml
similarity index 100%
rename from general/grpc/go-client/conf/log.yml
rename to rpc/grpc/go-client/conf/log.yml
diff --git a/general/grpc/go-server/cmd/server.go b/rpc/grpc/go-server/cmd/server.go
similarity index 100%
rename from general/grpc/go-server/cmd/server.go
rename to rpc/grpc/go-server/cmd/server.go
diff --git a/general/grpc/go-server/conf/client.yml b/rpc/grpc/go-server/conf/client.yml
similarity index 100%
rename from general/grpc/go-server/conf/client.yml
rename to rpc/grpc/go-server/conf/client.yml
diff --git a/general/grpc/go-server/conf/log.yml b/rpc/grpc/go-server/conf/log.yml
similarity index 100%
rename from general/grpc/go-server/conf/log.yml
rename to rpc/grpc/go-server/conf/log.yml
diff --git a/general/grpc/go-server/conf/server.yml b/rpc/grpc/go-server/conf/server.yml
similarity index 100%
rename from general/grpc/go-server/conf/server.yml
rename to rpc/grpc/go-server/conf/server.yml
diff --git a/general/grpc/go-server/docker/docker-compose.yml b/rpc/grpc/go-server/docker/docker-compose.yml
similarity index 100%
rename from general/grpc/go-server/docker/docker-compose.yml
rename to rpc/grpc/go-server/docker/docker-compose.yml
diff --git a/general/dubbo/go-server/docker/docker-health-check.sh b/rpc/grpc/go-server/docker/docker-health-check.sh
similarity index 100%
rename from general/dubbo/go-server/docker/docker-health-check.sh
rename to rpc/grpc/go-server/docker/docker-health-check.sh
diff --git a/general/grpc/go-server/pkg/greeter.go b/rpc/grpc/go-server/pkg/greeter.go
similarity index 100%
rename from general/grpc/go-server/pkg/greeter.go
rename to rpc/grpc/go-server/pkg/greeter.go
diff --git a/general/grpc/go-server/tests/integration/greeter_test.go b/rpc/grpc/go-server/tests/integration/greeter_test.go
similarity index 100%
rename from general/grpc/go-server/tests/integration/greeter_test.go
rename to rpc/grpc/go-server/tests/integration/greeter_test.go
diff --git a/general/grpc/go-server/tests/integration/main_test.go b/rpc/grpc/go-server/tests/integration/main_test.go
similarity index 100%
rename from general/grpc/go-server/tests/integration/main_test.go
rename to rpc/grpc/go-server/tests/integration/main_test.go
diff --git a/general/grpc/protobuf/helloworld.pb.go b/rpc/grpc/protobuf/helloworld.pb.go
similarity index 100%
rename from general/grpc/protobuf/helloworld.pb.go
rename to rpc/grpc/protobuf/helloworld.pb.go
diff --git a/general/grpc/protobuf/helloworld.proto b/rpc/grpc/protobuf/helloworld.proto
similarity index 100%
rename from general/grpc/protobuf/helloworld.proto
rename to rpc/grpc/protobuf/helloworld.proto
diff --git a/general/grpc/protobuf/protobuf.mk b/rpc/grpc/protobuf/protobuf.mk
similarity index 100%
rename from general/grpc/protobuf/protobuf.mk
rename to rpc/grpc/protobuf/protobuf.mk
diff --git a/general/grpc/stream/go-client/app/Makefile b/rpc/grpc/stream/go-client/app/Makefile
similarity index 100%
rename from general/grpc/stream/go-client/app/Makefile
rename to rpc/grpc/stream/go-client/app/Makefile
diff --git a/general/grpc/stream/go-client/app/client.go b/rpc/grpc/stream/go-client/app/client.go
similarity index 100%
rename from general/grpc/stream/go-client/app/client.go
rename to rpc/grpc/stream/go-client/app/client.go
diff --git a/general/grpc/stream/go-server/app/helloworld.pb.go b/rpc/grpc/stream/go-client/app/helloworld.pb.go
similarity index 100%
rename from general/grpc/stream/go-server/app/helloworld.pb.go
rename to rpc/grpc/stream/go-client/app/helloworld.pb.go
diff --git a/general/grpc/stream/go-server/app/helloworld.proto b/rpc/grpc/stream/go-client/app/helloworld.proto
similarity index 100%
rename from general/grpc/stream/go-server/app/helloworld.proto
rename to rpc/grpc/stream/go-client/app/helloworld.proto
diff --git a/general/rest/go-server/cmd/version.go b/rpc/grpc/stream/go-client/app/version.go
similarity index 100%
rename from general/rest/go-server/cmd/version.go
rename to rpc/grpc/stream/go-client/app/version.go
diff --git a/general/grpc/stream/go-client/assembly/bin/load.sh b/rpc/grpc/stream/go-client/assembly/bin/load.sh
similarity index 100%
rename from general/grpc/stream/go-client/assembly/bin/load.sh
rename to rpc/grpc/stream/go-client/assembly/bin/load.sh
diff --git a/general/grpc/stream/go-client/assembly/common/app.properties b/rpc/grpc/stream/go-client/assembly/common/app.properties
similarity index 100%
rename from general/grpc/stream/go-client/assembly/common/app.properties
rename to rpc/grpc/stream/go-client/assembly/common/app.properties
diff --git a/general/grpc/stream/go-client/assembly/common/build.sh b/rpc/grpc/stream/go-client/assembly/common/build.sh
similarity index 100%
rename from general/grpc/stream/go-client/assembly/common/build.sh
rename to rpc/grpc/stream/go-client/assembly/common/build.sh
diff --git a/general/grpc/stream/go-client/assembly/linux/dev.sh b/rpc/grpc/stream/go-client/assembly/linux/dev.sh
similarity index 100%
rename from general/grpc/stream/go-client/assembly/linux/dev.sh
rename to rpc/grpc/stream/go-client/assembly/linux/dev.sh
diff --git a/general/grpc/stream/go-client/assembly/linux/release.sh b/rpc/grpc/stream/go-client/assembly/linux/release.sh
similarity index 100%
rename from general/grpc/stream/go-client/assembly/linux/release.sh
rename to rpc/grpc/stream/go-client/assembly/linux/release.sh
diff --git a/general/grpc/stream/go-client/assembly/linux/test.sh b/rpc/grpc/stream/go-client/assembly/linux/test.sh
similarity index 100%
rename from general/grpc/stream/go-client/assembly/linux/test.sh
rename to rpc/grpc/stream/go-client/assembly/linux/test.sh
diff --git a/general/grpc/stream/go-client/assembly/mac/dev.sh b/rpc/grpc/stream/go-client/assembly/mac/dev.sh
similarity index 100%
rename from general/grpc/stream/go-client/assembly/mac/dev.sh
rename to rpc/grpc/stream/go-client/assembly/mac/dev.sh
diff --git a/general/grpc/stream/go-client/assembly/mac/release.sh b/rpc/grpc/stream/go-client/assembly/mac/release.sh
similarity index 100%
rename from general/grpc/stream/go-client/assembly/mac/release.sh
rename to rpc/grpc/stream/go-client/assembly/mac/release.sh
diff --git a/general/grpc/stream/go-client/assembly/mac/test.sh b/rpc/grpc/stream/go-client/assembly/mac/test.sh
similarity index 100%
rename from general/grpc/stream/go-client/assembly/mac/test.sh
rename to rpc/grpc/stream/go-client/assembly/mac/test.sh
diff --git a/general/grpc/stream/go-client/assembly/windows/dev.sh b/rpc/grpc/stream/go-client/assembly/windows/dev.sh
similarity index 100%
rename from general/grpc/stream/go-client/assembly/windows/dev.sh
rename to rpc/grpc/stream/go-client/assembly/windows/dev.sh
diff --git a/general/grpc/stream/go-client/assembly/windows/release.sh b/rpc/grpc/stream/go-client/assembly/windows/release.sh
similarity index 100%
rename from general/grpc/stream/go-client/assembly/windows/release.sh
rename to rpc/grpc/stream/go-client/assembly/windows/release.sh
diff --git a/general/grpc/stream/go-client/assembly/windows/test.sh b/rpc/grpc/stream/go-client/assembly/windows/test.sh
similarity index 100%
rename from general/grpc/stream/go-client/assembly/windows/test.sh
rename to rpc/grpc/stream/go-client/assembly/windows/test.sh
diff --git a/general/grpc/stream/go-client/profiles/dev/client.yml b/rpc/grpc/stream/go-client/profiles/dev/client.yml
similarity index 100%
rename from general/grpc/stream/go-client/profiles/dev/client.yml
rename to rpc/grpc/stream/go-client/profiles/dev/client.yml
diff --git a/general/jsonrpc/go-server/conf/log.yml b/rpc/grpc/stream/go-client/profiles/dev/log.yml
similarity index 100%
rename from general/jsonrpc/go-server/conf/log.yml
rename to rpc/grpc/stream/go-client/profiles/dev/log.yml
diff --git a/general/grpc/stream/go-server/profiles/release/log.yml b/rpc/grpc/stream/go-client/profiles/release/log.yml
similarity index 100%
rename from general/grpc/stream/go-server/profiles/release/log.yml
rename to rpc/grpc/stream/go-client/profiles/release/log.yml
diff --git a/general/grpc/stream/go-client/profiles/test/client.yml b/rpc/grpc/stream/go-client/profiles/test/client.yml
similarity index 100%
rename from general/grpc/stream/go-client/profiles/test/client.yml
rename to rpc/grpc/stream/go-client/profiles/test/client.yml
diff --git a/general/grpc/stream/go-server/profiles/test/log.yml b/rpc/grpc/stream/go-client/profiles/test/log.yml
similarity index 100%
rename from general/grpc/stream/go-server/profiles/test/log.yml
rename to rpc/grpc/stream/go-client/profiles/test/log.yml
diff --git a/general/grpc/stream/go-server/app/greeter.go b/rpc/grpc/stream/go-server/app/greeter.go
similarity index 100%
rename from general/grpc/stream/go-server/app/greeter.go
rename to rpc/grpc/stream/go-server/app/greeter.go
diff --git a/general/grpc/stream/go-client/app/helloworld.pb.go b/rpc/grpc/stream/go-server/app/helloworld.pb.go
similarity index 100%
rename from general/grpc/stream/go-client/app/helloworld.pb.go
rename to rpc/grpc/stream/go-server/app/helloworld.pb.go
diff --git a/general/grpc/stream/go-client/app/helloworld.proto b/rpc/grpc/stream/go-server/app/helloworld.proto
similarity index 100%
rename from general/grpc/stream/go-client/app/helloworld.proto
rename to rpc/grpc/stream/go-server/app/helloworld.proto
diff --git a/general/grpc/stream/go-server/app/server.go b/rpc/grpc/stream/go-server/app/server.go
similarity index 100%
rename from general/grpc/stream/go-server/app/server.go
rename to rpc/grpc/stream/go-server/app/server.go
diff --git a/general/rest/go-client/cmd/version.go b/rpc/grpc/stream/go-server/app/version.go
similarity index 100%
rename from general/rest/go-client/cmd/version.go
rename to rpc/grpc/stream/go-server/app/version.go
diff --git a/general/grpc/stream/go-server/assembly/bin/load.sh b/rpc/grpc/stream/go-server/assembly/bin/load.sh
similarity index 100%
rename from general/grpc/stream/go-server/assembly/bin/load.sh
rename to rpc/grpc/stream/go-server/assembly/bin/load.sh
diff --git a/general/grpc/stream/go-server/assembly/common/app.properties b/rpc/grpc/stream/go-server/assembly/common/app.properties
similarity index 100%
rename from general/grpc/stream/go-server/assembly/common/app.properties
rename to rpc/grpc/stream/go-server/assembly/common/app.properties
diff --git a/general/grpc/stream/go-server/assembly/common/build.sh b/rpc/grpc/stream/go-server/assembly/common/build.sh
similarity index 100%
rename from general/grpc/stream/go-server/assembly/common/build.sh
rename to rpc/grpc/stream/go-server/assembly/common/build.sh
diff --git a/general/grpc/stream/go-server/assembly/linux/dev.sh b/rpc/grpc/stream/go-server/assembly/linux/dev.sh
similarity index 100%
rename from general/grpc/stream/go-server/assembly/linux/dev.sh
rename to rpc/grpc/stream/go-server/assembly/linux/dev.sh
diff --git a/general/grpc/stream/go-server/assembly/linux/release.sh b/rpc/grpc/stream/go-server/assembly/linux/release.sh
similarity index 100%
rename from general/grpc/stream/go-server/assembly/linux/release.sh
rename to rpc/grpc/stream/go-server/assembly/linux/release.sh
diff --git a/general/grpc/stream/go-server/assembly/linux/test.sh b/rpc/grpc/stream/go-server/assembly/linux/test.sh
similarity index 100%
rename from general/grpc/stream/go-server/assembly/linux/test.sh
rename to rpc/grpc/stream/go-server/assembly/linux/test.sh
diff --git a/general/grpc/stream/go-server/assembly/mac/dev.sh b/rpc/grpc/stream/go-server/assembly/mac/dev.sh
similarity index 100%
rename from general/grpc/stream/go-server/assembly/mac/dev.sh
rename to rpc/grpc/stream/go-server/assembly/mac/dev.sh
diff --git a/general/grpc/stream/go-server/assembly/mac/release.sh b/rpc/grpc/stream/go-server/assembly/mac/release.sh
similarity index 100%
rename from general/grpc/stream/go-server/assembly/mac/release.sh
rename to rpc/grpc/stream/go-server/assembly/mac/release.sh
diff --git a/general/grpc/stream/go-server/assembly/mac/test.sh b/rpc/grpc/stream/go-server/assembly/mac/test.sh
similarity index 100%
rename from general/grpc/stream/go-server/assembly/mac/test.sh
rename to rpc/grpc/stream/go-server/assembly/mac/test.sh
diff --git a/general/grpc/stream/go-server/assembly/windows/dev.sh b/rpc/grpc/stream/go-server/assembly/windows/dev.sh
similarity index 100%
rename from general/grpc/stream/go-server/assembly/windows/dev.sh
rename to rpc/grpc/stream/go-server/assembly/windows/dev.sh
diff --git a/general/grpc/stream/go-server/assembly/windows/release.sh b/rpc/grpc/stream/go-server/assembly/windows/release.sh
similarity index 100%
rename from general/grpc/stream/go-server/assembly/windows/release.sh
rename to rpc/grpc/stream/go-server/assembly/windows/release.sh
diff --git a/general/grpc/stream/go-server/assembly/windows/test.sh b/rpc/grpc/stream/go-server/assembly/windows/test.sh
similarity index 100%
rename from general/grpc/stream/go-server/assembly/windows/test.sh
rename to rpc/grpc/stream/go-server/assembly/windows/test.sh
diff --git a/general/jsonrpc/go-client/conf/log.yml b/rpc/grpc/stream/go-server/profiles/dev/log.yml
similarity index 100%
rename from general/jsonrpc/go-client/conf/log.yml
rename to rpc/grpc/stream/go-server/profiles/dev/log.yml
diff --git a/general/grpc/stream/go-server/profiles/dev/server.yml b/rpc/grpc/stream/go-server/profiles/dev/server.yml
similarity index 100%
rename from general/grpc/stream/go-server/profiles/dev/server.yml
rename to rpc/grpc/stream/go-server/profiles/dev/server.yml
diff --git a/general/grpc/stream/go-client/profiles/release/log.yml b/rpc/grpc/stream/go-server/profiles/release/log.yml
similarity index 100%
rename from general/grpc/stream/go-client/profiles/release/log.yml
rename to rpc/grpc/stream/go-server/profiles/release/log.yml
diff --git a/general/grpc/stream/go-server/profiles/release/server.yml b/rpc/grpc/stream/go-server/profiles/release/server.yml
similarity index 100%
rename from general/grpc/stream/go-server/profiles/release/server.yml
rename to rpc/grpc/stream/go-server/profiles/release/server.yml
diff --git a/general/grpc/stream/go-client/profiles/test/log.yml b/rpc/grpc/stream/go-server/profiles/test/log.yml
similarity index 100%
rename from general/grpc/stream/go-client/profiles/test/log.yml
rename to rpc/grpc/stream/go-server/profiles/test/log.yml
diff --git a/general/grpc/stream/go-server/profiles/test/server.yml b/rpc/grpc/stream/go-server/profiles/test/server.yml
similarity index 100%
rename from general/grpc/stream/go-server/profiles/test/server.yml
rename to rpc/grpc/stream/go-server/profiles/test/server.yml
diff --git a/general/jsonrpc/go-client/cmd/client.go b/rpc/jsonrpc/go-client/cmd/client.go
similarity index 100%
rename from general/jsonrpc/go-client/cmd/client.go
rename to rpc/jsonrpc/go-client/cmd/client.go
diff --git a/general/jsonrpc/go-client/conf/client.yml b/rpc/jsonrpc/go-client/conf/client.yml
similarity index 100%
rename from general/jsonrpc/go-client/conf/client.yml
rename to rpc/jsonrpc/go-client/conf/client.yml
diff --git a/general/grpc/stream/go-server/profiles/dev/log.yml b/rpc/jsonrpc/go-client/conf/log.yml
similarity index 100%
rename from general/grpc/stream/go-server/profiles/dev/log.yml
rename to rpc/jsonrpc/go-client/conf/log.yml
diff --git a/general/jsonrpc/go-client/pkg/user.go b/rpc/jsonrpc/go-client/pkg/user.go
similarity index 100%
rename from general/jsonrpc/go-client/pkg/user.go
rename to rpc/jsonrpc/go-client/pkg/user.go
diff --git a/general/jsonrpc/go-server/cmd/server.go b/rpc/jsonrpc/go-server/cmd/server.go
similarity index 100%
rename from general/jsonrpc/go-server/cmd/server.go
rename to rpc/jsonrpc/go-server/cmd/server.go
diff --git a/general/grpc/stream/go-client/profiles/dev/log.yml b/rpc/jsonrpc/go-server/conf/log.yml
similarity index 100%
rename from general/grpc/stream/go-client/profiles/dev/log.yml
rename to rpc/jsonrpc/go-server/conf/log.yml
diff --git a/general/jsonrpc/go-server/conf/server.yml b/rpc/jsonrpc/go-server/conf/server.yml
similarity index 100%
rename from general/jsonrpc/go-server/conf/server.yml
rename to rpc/jsonrpc/go-server/conf/server.yml
diff --git a/general/jsonrpc/go-server/pkg/user.go b/rpc/jsonrpc/go-server/pkg/user.go
similarity index 100%
rename from general/jsonrpc/go-server/pkg/user.go
rename to rpc/jsonrpc/go-server/pkg/user.go
diff --git a/general/jsonrpc/go-server/pkg/user_provider.go b/rpc/jsonrpc/go-server/pkg/user_provider.go
similarity index 100%
rename from general/jsonrpc/go-server/pkg/user_provider.go
rename to rpc/jsonrpc/go-server/pkg/user_provider.go
diff --git a/general/jsonrpc/go-server/pkg/user_provider1.go b/rpc/jsonrpc/go-server/pkg/user_provider1.go
similarity index 100%
rename from general/jsonrpc/go-server/pkg/user_provider1.go
rename to rpc/jsonrpc/go-server/pkg/user_provider1.go
diff --git a/general/jsonrpc/go-server/pkg/user_provider2.go b/rpc/jsonrpc/go-server/pkg/user_provider2.go
similarity index 100%
rename from general/jsonrpc/go-server/pkg/user_provider2.go
rename to rpc/jsonrpc/go-server/pkg/user_provider2.go
diff --git a/general/jsonrpc/java-client/build.sh b/rpc/jsonrpc/java-client/build.sh
similarity index 100%
rename from general/jsonrpc/java-client/build.sh
rename to rpc/jsonrpc/java-client/build.sh
diff --git a/general/jsonrpc/java-client/pom.xml b/rpc/jsonrpc/java-client/pom.xml
similarity index 100%
rename from general/jsonrpc/java-client/pom.xml
rename to rpc/jsonrpc/java-client/pom.xml
diff --git a/general/jsonrpc/java-client/src/main/assembly/assembly.xml b/rpc/jsonrpc/java-client/src/main/assembly/assembly.xml
similarity index 100%
rename from general/jsonrpc/java-client/src/main/assembly/assembly.xml
rename to rpc/jsonrpc/java-client/src/main/assembly/assembly.xml
diff --git a/general/jsonrpc/java-client/src/main/resources/dubbo.properties b/rpc/jsonrpc/java-client/src/main/assembly/conf/dubbo.properties
similarity index 100%
rename from general/jsonrpc/java-client/src/main/resources/dubbo.properties
rename to rpc/jsonrpc/java-client/src/main/assembly/conf/dubbo.properties
diff --git a/general/dubbo/java-client/2.7/src/main/resources/log4j.properties b/rpc/jsonrpc/java-client/src/main/assembly/conf/log4j.properties
similarity index 100%
rename from general/dubbo/java-client/2.7/src/main/resources/log4j.properties
rename to rpc/jsonrpc/java-client/src/main/assembly/conf/log4j.properties
diff --git a/general/jsonrpc/java-client/src/main/java/com/ikurento/user/Consumer.java b/rpc/jsonrpc/java-client/src/main/java/com/ikurento/user/Consumer.java
similarity index 100%
rename from general/jsonrpc/java-client/src/main/java/com/ikurento/user/Consumer.java
rename to rpc/jsonrpc/java-client/src/main/java/com/ikurento/user/Consumer.java
diff --git a/general/jsonrpc/java-server/src/main/java/com/ikurento/user/Gender.java b/rpc/jsonrpc/java-client/src/main/java/com/ikurento/user/Gender.java
similarity index 100%
rename from general/jsonrpc/java-server/src/main/java/com/ikurento/user/Gender.java
rename to rpc/jsonrpc/java-client/src/main/java/com/ikurento/user/Gender.java
diff --git a/general/jsonrpc/java-client/src/main/java/com/ikurento/user/User.java b/rpc/jsonrpc/java-client/src/main/java/com/ikurento/user/User.java
similarity index 100%
rename from general/jsonrpc/java-client/src/main/java/com/ikurento/user/User.java
rename to rpc/jsonrpc/java-client/src/main/java/com/ikurento/user/User.java
diff --git a/general/jsonrpc/java-client/src/main/java/com/ikurento/user/UserProvider.java b/rpc/jsonrpc/java-client/src/main/java/com/ikurento/user/UserProvider.java
similarity index 100%
rename from general/jsonrpc/java-client/src/main/java/com/ikurento/user/UserProvider.java
rename to rpc/jsonrpc/java-client/src/main/java/com/ikurento/user/UserProvider.java
diff --git a/general/jsonrpc/java-client/src/main/resources/META-INF/spring/dubbo.consumer.xml b/rpc/jsonrpc/java-client/src/main/resources/META-INF/spring/dubbo.consumer.xml
similarity index 100%
rename from general/jsonrpc/java-client/src/main/resources/META-INF/spring/dubbo.consumer.xml
rename to rpc/jsonrpc/java-client/src/main/resources/META-INF/spring/dubbo.consumer.xml
diff --git a/general/jsonrpc/java-client/src/main/resources/META-INF/spring/service.xml b/rpc/jsonrpc/java-client/src/main/resources/META-INF/spring/service.xml
similarity index 100%
rename from general/jsonrpc/java-client/src/main/resources/META-INF/spring/service.xml
rename to rpc/jsonrpc/java-client/src/main/resources/META-INF/spring/service.xml
diff --git a/general/jsonrpc/java-client/src/main/assembly/conf/dubbo.properties b/rpc/jsonrpc/java-client/src/main/resources/dubbo.properties
similarity index 100%
rename from general/jsonrpc/java-client/src/main/assembly/conf/dubbo.properties
rename to rpc/jsonrpc/java-client/src/main/resources/dubbo.properties
diff --git a/general/dubbo/java-client/2.6/src/main/resources/log4j.properties b/rpc/jsonrpc/java-client/src/main/resources/log4j.properties
similarity index 100%
rename from general/dubbo/java-client/2.6/src/main/resources/log4j.properties
rename to rpc/jsonrpc/java-client/src/main/resources/log4j.properties
diff --git a/general/jsonrpc/java-server/build.sh b/rpc/jsonrpc/java-server/build.sh
similarity index 100%
rename from general/jsonrpc/java-server/build.sh
rename to rpc/jsonrpc/java-server/build.sh
diff --git a/general/jsonrpc/java-server/pom.xml b/rpc/jsonrpc/java-server/pom.xml
similarity index 100%
rename from general/jsonrpc/java-server/pom.xml
rename to rpc/jsonrpc/java-server/pom.xml
diff --git a/general/jsonrpc/java-server/script/debug.sh b/rpc/jsonrpc/java-server/script/debug.sh
similarity index 100%
rename from general/jsonrpc/java-server/script/debug.sh
rename to rpc/jsonrpc/java-server/script/debug.sh
diff --git a/general/jsonrpc/java-server/src/main/assembly/assembly.xml b/rpc/jsonrpc/java-server/src/main/assembly/assembly.xml
similarity index 100%
rename from general/jsonrpc/java-server/src/main/assembly/assembly.xml
rename to rpc/jsonrpc/java-server/src/main/assembly/assembly.xml
diff --git a/general/jsonrpc/java-server/src/main/assembly/conf/dubbo.properties b/rpc/jsonrpc/java-server/src/main/assembly/conf/dubbo.properties
similarity index 100%
rename from general/jsonrpc/java-server/src/main/assembly/conf/dubbo.properties
rename to rpc/jsonrpc/java-server/src/main/assembly/conf/dubbo.properties
diff --git a/general/dubbo/java-server/2.7/src/main/resources/log4j.properties b/rpc/jsonrpc/java-server/src/main/assembly/conf/log4j.properties
similarity index 100%
rename from general/dubbo/java-server/2.7/src/main/resources/log4j.properties
rename to rpc/jsonrpc/java-server/src/main/assembly/conf/log4j.properties
diff --git a/general/jsonrpc/java-client/src/main/java/com/ikurento/user/Gender.java b/rpc/jsonrpc/java-server/src/main/java/com/ikurento/user/Gender.java
similarity index 100%
rename from general/jsonrpc/java-client/src/main/java/com/ikurento/user/Gender.java
rename to rpc/jsonrpc/java-server/src/main/java/com/ikurento/user/Gender.java
diff --git a/general/jsonrpc/java-server/src/main/java/com/ikurento/user/Provider.java b/rpc/jsonrpc/java-server/src/main/java/com/ikurento/user/Provider.java
similarity index 100%
rename from general/jsonrpc/java-server/src/main/java/com/ikurento/user/Provider.java
rename to rpc/jsonrpc/java-server/src/main/java/com/ikurento/user/Provider.java
diff --git a/general/jsonrpc/java-server/src/main/java/com/ikurento/user/Response.java b/rpc/jsonrpc/java-server/src/main/java/com/ikurento/user/Response.java
similarity index 100%
rename from general/jsonrpc/java-server/src/main/java/com/ikurento/user/Response.java
rename to rpc/jsonrpc/java-server/src/main/java/com/ikurento/user/Response.java
diff --git a/general/jsonrpc/java-server/src/main/java/com/ikurento/user/User.java b/rpc/jsonrpc/java-server/src/main/java/com/ikurento/user/User.java
similarity index 100%
rename from general/jsonrpc/java-server/src/main/java/com/ikurento/user/User.java
rename to rpc/jsonrpc/java-server/src/main/java/com/ikurento/user/User.java
diff --git a/general/jsonrpc/java-server/src/main/java/com/ikurento/user/UserProvider.java b/rpc/jsonrpc/java-server/src/main/java/com/ikurento/user/UserProvider.java
similarity index 100%
rename from general/jsonrpc/java-server/src/main/java/com/ikurento/user/UserProvider.java
rename to rpc/jsonrpc/java-server/src/main/java/com/ikurento/user/UserProvider.java
diff --git a/general/jsonrpc/java-server/src/main/java/com/ikurento/user/UserProviderAnotherImpl.java b/rpc/jsonrpc/java-server/src/main/java/com/ikurento/user/UserProviderAnotherImpl.java
similarity index 100%
rename from general/jsonrpc/java-server/src/main/java/com/ikurento/user/UserProviderAnotherImpl.java
rename to rpc/jsonrpc/java-server/src/main/java/com/ikurento/user/UserProviderAnotherImpl.java
diff --git a/general/jsonrpc/java-server/src/main/java/com/ikurento/user/UserProviderImpl.java b/rpc/jsonrpc/java-server/src/main/java/com/ikurento/user/UserProviderImpl.java
similarity index 100%
rename from general/jsonrpc/java-server/src/main/java/com/ikurento/user/UserProviderImpl.java
rename to rpc/jsonrpc/java-server/src/main/java/com/ikurento/user/UserProviderImpl.java
diff --git a/general/jsonrpc/java-server/src/main/resources/META-INF/spring/dubbo.provider.xml b/rpc/jsonrpc/java-server/src/main/resources/META-INF/spring/dubbo.provider.xml
similarity index 100%
rename from general/jsonrpc/java-server/src/main/resources/META-INF/spring/dubbo.provider.xml
rename to rpc/jsonrpc/java-server/src/main/resources/META-INF/spring/dubbo.provider.xml
diff --git a/general/dubbo/java-server/2.6/src/main/resources/log4j.properties b/rpc/jsonrpc/java-server/src/main/resources/log4j.properties
similarity index 100%
rename from general/dubbo/java-server/2.6/src/main/resources/log4j.properties
rename to rpc/jsonrpc/java-server/src/main/resources/log4j.properties
diff --git a/general/rest/README.md b/rpc/rest/README.md
similarity index 100%
rename from general/rest/README.md
rename to rpc/rest/README.md
diff --git a/general/rest/README_zh.md b/rpc/rest/README_zh.md
similarity index 100%
rename from general/rest/README_zh.md
rename to rpc/rest/README_zh.md
diff --git a/general/rest/go-client/cmd/client.go b/rpc/rest/go-client/cmd/client.go
similarity index 100%
rename from general/rest/go-client/cmd/client.go
rename to rpc/rest/go-client/cmd/client.go
diff --git a/general/grpc/stream/go-server/app/version.go b/rpc/rest/go-client/cmd/version.go
similarity index 100%
rename from general/grpc/stream/go-server/app/version.go
rename to rpc/rest/go-client/cmd/version.go
diff --git a/general/rest/go-client/conf/client.yml b/rpc/rest/go-client/conf/client.yml
similarity index 100%
rename from general/rest/go-client/conf/client.yml
rename to rpc/rest/go-client/conf/client.yml
diff --git a/general/rest/go-server/conf/log.yml b/rpc/rest/go-client/conf/log.yml
similarity index 100%
rename from general/rest/go-server/conf/log.yml
rename to rpc/rest/go-client/conf/log.yml
diff --git a/general/dubbo3/codec-extension/go-server/docker/docker-compose.yml b/rpc/rest/go-client/docker/docker-compose.yml
similarity index 100%
rename from general/dubbo3/codec-extension/go-server/docker/docker-compose.yml
rename to rpc/rest/go-client/docker/docker-compose.yml
diff --git a/general/rest/go-client/pkg/user.go b/rpc/rest/go-client/pkg/user.go
similarity index 100%
rename from general/rest/go-client/pkg/user.go
rename to rpc/rest/go-client/pkg/user.go
diff --git a/general/rest/go-server/cmd/server.go b/rpc/rest/go-server/cmd/server.go
similarity index 100%
rename from general/rest/go-server/cmd/server.go
rename to rpc/rest/go-server/cmd/server.go
diff --git a/general/grpc/stream/go-client/app/version.go b/rpc/rest/go-server/cmd/version.go
similarity index 100%
rename from general/grpc/stream/go-client/app/version.go
rename to rpc/rest/go-server/cmd/version.go
diff --git a/general/rest/go-client/conf/log.yml b/rpc/rest/go-server/conf/log.yml
similarity index 100%
rename from general/rest/go-client/conf/log.yml
rename to rpc/rest/go-server/conf/log.yml
diff --git a/general/rest/go-server/conf/server.yml b/rpc/rest/go-server/conf/server.yml
similarity index 100%
rename from general/rest/go-server/conf/server.yml
rename to rpc/rest/go-server/conf/server.yml
diff --git a/general/dubbo/go-server/docker/docker-compose.yml b/rpc/rest/go-server/docker/docker-compose.yml
similarity index 100%
rename from general/dubbo/go-server/docker/docker-compose.yml
rename to rpc/rest/go-server/docker/docker-compose.yml
diff --git a/general/rest/go-server/pkg/user.go b/rpc/rest/go-server/pkg/user.go
similarity index 100%
rename from general/rest/go-server/pkg/user.go
rename to rpc/rest/go-server/pkg/user.go
diff --git a/general/rest/go-server/pkg/user_provider.go b/rpc/rest/go-server/pkg/user_provider.go
similarity index 100%
rename from general/rest/go-server/pkg/user_provider.go
rename to rpc/rest/go-server/pkg/user_provider.go
diff --git a/general/rest/go-server/pkg/user_provider1.go b/rpc/rest/go-server/pkg/user_provider1.go
similarity index 100%
rename from general/rest/go-server/pkg/user_provider1.go
rename to rpc/rest/go-server/pkg/user_provider1.go
diff --git a/general/rest/go-server/pkg/user_provider2.go b/rpc/rest/go-server/pkg/user_provider2.go
similarity index 100%
rename from general/rest/go-server/pkg/user_provider2.go
rename to rpc/rest/go-server/pkg/user_provider2.go