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

[dubbo-go-samples] branch config-enhance updated: Rft: rpc/triple/pb config optimization (#224)

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

alexstocks 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 c44037b  Rft: rpc/triple/pb config optimization (#224)
c44037b is described below

commit c44037bc734167d45a4ebf99c13e216aa0e2572e
Author: XavierNiu <a...@nxw.name>
AuthorDate: Sun Sep 5 16:13:22 2021 +0800

    Rft: rpc/triple/pb config optimization (#224)
    
    * rename dubbo3 with triple
    
    * fit GreeterProvider with latest grpc version
    
    * rename dubbo3 with triple for integrated tests
    
    * fix import paths in integrated tests
---
 integrate_test/rpc/dubbo3/hessian2/conf/client.yml |  32 --
 integrate_test/rpc/dubbo3/hessian2/conf/log.yml    |  27 --
 integrate_test/rpc/dubbo3/hessian2/conf/server.yml |  30 --
 .../codec-extension}/docker/docker-compose.yml     |   0
 .../codec-extension}/docker/docker-health-check.sh |   0
 .../codec-extension/tests/integration/codec.go     |   0
 .../codec-extension/tests/integration/main_test.go |   0
 .../tests/integration/userprovider_test.go         |   0
 .../rpc/triple/hessian2}/docker/docker-compose.yml |   0
 .../hessian2/docker/docker-health-check.sh         |   0
 .../hessian2/tests/integration/main_test.go        |   0
 .../tests/integration/userprovider_test.go         |   0
 .../pb/dubbogo-grpc}/docker/docker-compose.yml     |   0
 .../pb/dubbogo-grpc}/docker/docker-health-check.sh |   0
 .../integration/grpc_test_proto/helloworld.pb.go   |   0
 .../dubbogo-grpc}/tests/integration/main_test.go   |   7 +-
 .../tests/integration/userprovider_test.go         |  15 +-
 .../pb/dubbogo-java}/docker/docker-compose.yml     |   0
 .../dubbogo-java}/tests/integration/main_test.go   |   6 +-
 .../tests/integration/userprovider_test.go         |   8 +-
 .../pb/dubbogo-grpc/protobuf/grpc/helloworld.pb.go | 412 ---------------------
 .../server/dubbogo-server/conf/client.yml          |  22 --
 .../server/dubbogo-server/conf/log.yml             |  27 --
 .../server/dubbogo-server/conf/server.yml          |  28 --
 .../stream-client/dubbogo-client/cmd/env.sh        |   2 -
 .../stream-client/dubbogo-client/conf/client.yml   |  23 --
 .../stream-client/dubbogo-client/conf/log.yml      |  27 --
 .../unary-client/dubbogo-client/conf/client.yml    |  23 --
 .../unary-client/dubbogo-client/conf/log.yml       |  27 --
 rpc/dubbo3/pb/dubbogo-java/go-client/cmd/env.sh    |   2 -
 .../pb/dubbogo-java/go-client/conf/client.yml      |  31 --
 rpc/dubbo3/pb/dubbogo-java/go-client/conf/log.yml  |  27 --
 rpc/dubbo3/pb/dubbogo-java/go-server/cmd/env.sh    |   2 -
 .../pb/dubbogo-java/go-server/conf/client.yml      |  31 --
 rpc/dubbo3/pb/dubbogo-java/go-server/conf/log.yml  |  27 --
 .../pb/dubbogo-java/go-server/conf/server.yml      |  29 --
 rpc/{dubbo3 => triple}/README.md                   |   0
 rpc/{dubbo3 => triple}/README_zh.md                |   0
 .../codec-extension/codec/codec.go                 |   0
 .../codec-extension/go-client/cmd/client.go        |   4 +-
 .../codec-extension/go-client/conf/dubbogo.yml     |   0
 .../codec-extension/go-server/cmd/server.go        |   4 +-
 .../codec-extension/go-server/conf/dubbogo.yml     |   0
 rpc/{dubbo3 => triple}/hessian2/README.md          |   0
 rpc/{dubbo3 => triple}/hessian2/README_zh.md       |   0
 .../hessian2/go-client/cmd/client.go               |   0
 .../hessian2/go-client/cmd/complex_service.go      |   0
 .../hessian2/go-client/cmd/simple_service.go       |   0
 .../hessian2/go-client/conf/dubbogo.yml            |   0
 .../hessian2/go-server/cmd/complex_service.go      |   0
 .../hessian2/go-server/cmd/server.go               |   2 +-
 .../hessian2/go-server/cmd/simple_service.go       |   0
 .../hessian2/go-server/conf/dubbogo.yml            |   0
 .../org/apache/dubbo/sample/hello/Helloworld.java  |   0
 .../hessian2/java-client/pom.xml                   |   0
 .../hessian2}/java-client/run.sh                   |   0
 .../com/apache/dubbo/sample/basic/ApiConsumer.java |   0
 .../com/apache/dubbo/sample/basic/ComplexData.java |   0
 .../apache/dubbo/sample/basic/ComplexProvider.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
 .../hessian2/java-server/pom.xml                   |   0
 .../hessian2}/java-server/run.sh                   |   0
 .../com/apache/dubbo/sample/basic/ApiProvider.java |   0
 .../com/apache/dubbo/sample/basic/ComplexData.java |   0
 .../apache/dubbo/sample/basic/ComplexProvider.java |   0
 .../dubbo/sample/basic/ComplexProviderImpl.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
 .../msgpack/go-client/cmd/client.go                |   0
 .../msgpack/go-client/conf/dubbogo.yml             |   0
 .../msgpack/go-server/cmd/server.go                |   0
 .../msgpack/go-server/conf/dubbogo.yml             |   0
 rpc/{dubbo3 => triple}/pb/dubbogo-grpc/README.md   |  10 +-
 .../pb/dubbogo-grpc/README_zh.md                   |   8 +-
 .../pb/dubbogo-grpc/protobuf/grpc/helloworld.pb.go | 253 +++++++++++++
 .../pb/dubbogo-grpc/protobuf/grpc/helloworld.proto |   5 +-
 .../protobuf/grpc/helloworld_grpc.pb.go            | 187 ++++++++++
 .../dubbogo-grpc/protobuf/triple}/helloworld.pb.go | 250 +++++++------
 .../dubbogo-grpc/protobuf/triple}/helloworld.proto |   2 +
 .../pb/dubbogo-grpc/protobuf/triple}/protobuf.mk   |   0
 .../server/dubbogo-server/cmd/server.go            |  17 +-
 .../server/dubbogo-server/conf/dubbogo.yml         |  16 +
 .../server/dubbogo-server/pkg/greeter.go           |  16 +-
 .../pb/dubbogo-grpc/server/grpcgo-server/main.go   |   8 +-
 .../stream-client/dubbogo-client/cmd/client.go     |  25 +-
 .../stream-client/dubbogo-client/conf/dubbogo.yml  |  10 +
 .../stream-client/grpcgo-client/main.go            |   4 +-
 .../unary-client/dubbogo-client/cmd/client.go      |  24 +-
 .../unary-client/dubbogo-client/conf/dubbogo.yml   |  10 +
 .../unary-client/grpcgo-client/main.go             |   4 +-
 rpc/{dubbo3 => triple}/pb/dubbogo-java/README.md   |   0
 .../pb/dubbogo-java/README_zh.md                   |   0
 .../pb/dubbogo-java/go-client/cmd/client.go        |  19 +-
 .../pb/dubbogo-java/go-client/conf/dubbogo.yml     |  10 +
 .../pb/dubbogo-java/go-server/cmd/server.go        |  17 +-
 .../pb/dubbogo-java/go-server/conf/dubbogo.yml     |  16 +
 .../pb/dubbogo-java/go-server/pkg/greeter.go       |   2 +-
 .../pb/dubbogo-java/java-client/pom.xml            |   2 +-
 .../pb/dubbogo-java}/java-client/run.sh            |   0
 .../java/org/apache/dubbo/demo}/ApiConsumer.java   |   7 +-
 .../java/org/apache/dubbo/demo/HelloWorld.java}    | 224 +++++------
 .../main/java/org/apache/dubbo/demo}/IGreeter.java |   6 +-
 .../java-client/src/main/proto/HelloWorld.proto}   |   5 +-
 .../src/main/resources/log4j.properties            |   0
 .../pb/dubbogo-java/java-server/pom.xml            |   4 +-
 .../pb/dubbogo-java}/java-server/run.sh            |   0
 .../java/org/apache/dubbo/demo}/ApiProvider.java   |   4 +-
 .../java/org/apache/dubbo/demo/HelloWorld.java}    | 224 +++++------
 .../main/java/org/apache/dubbo/demo}/IGreeter.java |   7 +-
 .../java/org/apache/dubbo/demo/IGreeterImpl.java}  |  12 +-
 .../java-server/src/main/proto/HelloWorld.proto}   |   5 +-
 .../src/main/resources/log4j.properties            |   0
 .../pb/dubbogo-java/protobuf/helloworld.pb.go      | 208 +++++------
 .../pb/dubbogo-java/protobuf/helloworld.proto      |   4 +-
 .../pb/dubbogo-java/protobuf/protobuf.mk           |   0
 start_integrate_test.sh                            |  20 +-
 123 files changed, 1077 insertions(+), 1443 deletions(-)

diff --git a/integrate_test/rpc/dubbo3/hessian2/conf/client.yml b/integrate_test/rpc/dubbo3/hessian2/conf/client.yml
deleted file mode 100644
index 7b8889c..0000000
--- a/integrate_test/rpc/dubbo3/hessian2/conf/client.yml
+++ /dev/null
@@ -1,32 +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: "UserProvider"
-  module: "dubbo-go3.0 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: "tri"
-    serialization: "hessian2"
-    interface: "org.apache.dubbo.UserProvider"
diff --git a/integrate_test/rpc/dubbo3/hessian2/conf/log.yml b/integrate_test/rpc/dubbo3/hessian2/conf/log.yml
deleted file mode 100644
index 8c3f700..0000000
--- a/integrate_test/rpc/dubbo3/hessian2/conf/log.yml
+++ /dev/null
@@ -1,27 +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/integrate_test/rpc/dubbo3/hessian2/conf/server.yml b/integrate_test/rpc/dubbo3/hessian2/conf/server.yml
deleted file mode 100644
index efa157b..0000000
--- a/integrate_test/rpc/dubbo3/hessian2/conf/server.yml
+++ /dev/null
@@ -1,30 +0,0 @@
-# dubbo server yaml configure file
-
-# application config
-application:
-  organization: "dubbo.io"
-  name: "UserProvider"
-  module: "dubbo-go3.0 greeter 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: "tri" # tri is dubbo-go3.0 protocol
-    serialization: "hessian2" # hessian is serialization type
-    interface: "org.apache.dubbo.UserProvider"
-
-# protocol config
-protocols:
-  "tri":
-    name: "tri"
-    port: 20001
\ No newline at end of file
diff --git a/rpc/dubbo3/pb/dubbogo-java/go-server/docker/docker-compose.yml b/integrate_test/rpc/triple/codec-extension/docker/docker-compose.yml
similarity index 100%
rename from rpc/dubbo3/pb/dubbogo-java/go-server/docker/docker-compose.yml
rename to integrate_test/rpc/triple/codec-extension/docker/docker-compose.yml
diff --git a/rpc/dubbo3/pb/dubbogo-grpc/server/dubbogo-server/docker/docker-health-check.sh b/integrate_test/rpc/triple/codec-extension/docker/docker-health-check.sh
similarity index 100%
rename from rpc/dubbo3/pb/dubbogo-grpc/server/dubbogo-server/docker/docker-health-check.sh
rename to integrate_test/rpc/triple/codec-extension/docker/docker-health-check.sh
diff --git a/integrate_test/rpc/dubbo3/codec-extension/tests/integration/codec.go b/integrate_test/rpc/triple/codec-extension/tests/integration/codec.go
similarity index 100%
rename from integrate_test/rpc/dubbo3/codec-extension/tests/integration/codec.go
rename to integrate_test/rpc/triple/codec-extension/tests/integration/codec.go
diff --git a/integrate_test/rpc/dubbo3/codec-extension/tests/integration/main_test.go b/integrate_test/rpc/triple/codec-extension/tests/integration/main_test.go
similarity index 100%
rename from integrate_test/rpc/dubbo3/codec-extension/tests/integration/main_test.go
rename to integrate_test/rpc/triple/codec-extension/tests/integration/main_test.go
diff --git a/integrate_test/rpc/dubbo3/codec-extension/tests/integration/userprovider_test.go b/integrate_test/rpc/triple/codec-extension/tests/integration/userprovider_test.go
similarity index 100%
rename from integrate_test/rpc/dubbo3/codec-extension/tests/integration/userprovider_test.go
rename to integrate_test/rpc/triple/codec-extension/tests/integration/userprovider_test.go
diff --git a/rpc/dubbo3/pb/dubbogo-grpc/server/dubbogo-server/docker/docker-compose.yml b/integrate_test/rpc/triple/hessian2/docker/docker-compose.yml
similarity index 100%
rename from rpc/dubbo3/pb/dubbogo-grpc/server/dubbogo-server/docker/docker-compose.yml
rename to integrate_test/rpc/triple/hessian2/docker/docker-compose.yml
diff --git a/integrate_test/rpc/dubbo3/hessian2/docker/docker-health-check.sh b/integrate_test/rpc/triple/hessian2/docker/docker-health-check.sh
similarity index 100%
rename from integrate_test/rpc/dubbo3/hessian2/docker/docker-health-check.sh
rename to integrate_test/rpc/triple/hessian2/docker/docker-health-check.sh
diff --git a/integrate_test/rpc/dubbo3/hessian2/tests/integration/main_test.go b/integrate_test/rpc/triple/hessian2/tests/integration/main_test.go
similarity index 100%
rename from integrate_test/rpc/dubbo3/hessian2/tests/integration/main_test.go
rename to integrate_test/rpc/triple/hessian2/tests/integration/main_test.go
diff --git a/integrate_test/rpc/dubbo3/hessian2/tests/integration/userprovider_test.go b/integrate_test/rpc/triple/hessian2/tests/integration/userprovider_test.go
similarity index 100%
rename from integrate_test/rpc/dubbo3/hessian2/tests/integration/userprovider_test.go
rename to integrate_test/rpc/triple/hessian2/tests/integration/userprovider_test.go
diff --git a/integrate_test/rpc/dubbo3/hessian2/docker/docker-compose.yml b/integrate_test/rpc/triple/pb/dubbogo-grpc/docker/docker-compose.yml
similarity index 100%
rename from integrate_test/rpc/dubbo3/hessian2/docker/docker-compose.yml
rename to integrate_test/rpc/triple/pb/dubbogo-grpc/docker/docker-compose.yml
diff --git a/integrate_test/rpc/dubbo3/codec-extension/docker/docker-health-check.sh b/integrate_test/rpc/triple/pb/dubbogo-grpc/docker/docker-health-check.sh
similarity index 100%
rename from integrate_test/rpc/dubbo3/codec-extension/docker/docker-health-check.sh
rename to integrate_test/rpc/triple/pb/dubbogo-grpc/docker/docker-health-check.sh
diff --git a/rpc/dubbo3/pb/dubbogo-grpc/server/dubbogo-server/tests/integration/grpc_test_proto/helloworld.pb.go b/integrate_test/rpc/triple/pb/dubbogo-grpc/tests/integration/grpc_test_proto/helloworld.pb.go
similarity index 100%
rename from rpc/dubbo3/pb/dubbogo-grpc/server/dubbogo-server/tests/integration/grpc_test_proto/helloworld.pb.go
rename to integrate_test/rpc/triple/pb/dubbogo-grpc/tests/integration/grpc_test_proto/helloworld.pb.go
diff --git a/rpc/dubbo3/pb/dubbogo-grpc/server/dubbogo-server/tests/integration/main_test.go b/integrate_test/rpc/triple/pb/dubbogo-grpc/tests/integration/main_test.go
similarity index 89%
rename from rpc/dubbo3/pb/dubbogo-grpc/server/dubbogo-server/tests/integration/main_test.go
rename to integrate_test/rpc/triple/pb/dubbogo-grpc/tests/integration/main_test.go
index ce7b8a4..5973644 100644
--- a/rpc/dubbo3/pb/dubbogo-grpc/server/dubbogo-server/tests/integration/main_test.go
+++ b/integrate_test/rpc/triple/pb/dubbogo-grpc/tests/integration/main_test.go
@@ -1,5 +1,3 @@
-// +build integration
-
 /*
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements.  See the NOTICE file distributed with
@@ -38,11 +36,10 @@ import (
 )
 
 import (
-	dubbo3pb "github.com/apache/dubbo-go-samples/general/dubbo3/pb/dubbogo-grpc/protobuf/dubbo3"
+	triplepb "github.com/apache/dubbo-go-samples/rpc/triple/pb/dubbogo-grpc/protobuf/triple"
 )
 
-var greeterProvider = new(dubbo3pb.GreeterClientImpl)
-
+var greeterProvider = new(triplepb.GreeterClientImpl)
 
 func TestMain(m *testing.M) {
 	config.SetConsumerService(greeterProvider)
diff --git a/rpc/dubbo3/pb/dubbogo-grpc/server/dubbogo-server/tests/integration/userprovider_test.go b/integrate_test/rpc/triple/pb/dubbogo-grpc/tests/integration/userprovider_test.go
similarity index 89%
rename from rpc/dubbo3/pb/dubbogo-grpc/server/dubbogo-server/tests/integration/userprovider_test.go
rename to integrate_test/rpc/triple/pb/dubbogo-grpc/tests/integration/userprovider_test.go
index 6148859..12252fb 100644
--- a/rpc/dubbo3/pb/dubbogo-grpc/server/dubbogo-server/tests/integration/userprovider_test.go
+++ b/integrate_test/rpc/triple/pb/dubbogo-grpc/tests/integration/userprovider_test.go
@@ -1,5 +1,3 @@
-// +build integration
-
 /*
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements.  See the NOTICE file distributed with
@@ -33,18 +31,17 @@ import (
 )
 
 import (
-	dubbo3pb "github.com/apache/dubbo-go-samples/general/dubbo3/pb/dubbogo-grpc/protobuf/dubbo3"
-	grpcpb "github.com/apache/dubbo-go-samples/general/dubbo3/pb/dubbogo-grpc/server/dubbogo-server/tests/integration/grpc_test_proto"
+	grpcpb "github.com/apache/dubbo-go-samples/integrate_test/rpc/triple/pb/dubbogo-grpc/tests/integration/grpc_test_proto"
+	triplepb "github.com/apache/dubbo-go-samples/rpc/triple/pb/dubbogo-grpc/protobuf/triple"
 )
 
 func TestSayHello(t *testing.T) {
 	ctx := context.Background()
 	ctx = context.WithValue(ctx, tripleConstant.TripleCtxKey(tripleConstant.TripleRequestID), "triple-request-id-demo")
-	req := dubbo3pb.HelloRequest{
+	req := triplepb.HelloRequest{
 		Name: "laurence",
 	}
-	user := dubbo3pb.User{}
-	err := greeterProvider.SayHello(ctx, &req, &user)
+	user, err := greeterProvider.SayHello(ctx, &req)
 	assert.Nil(t, err)
 	assert.Equal(t, "Hello laurence", user.Name)
 	assert.Equal(t, "12345", user.Id)
@@ -54,7 +51,7 @@ func TestSayHello(t *testing.T) {
 func TestStreamSayHello(t *testing.T) {
 	ctx := context.Background()
 	ctx = context.WithValue(ctx, tripleConstant.TripleCtxKey(tripleConstant.TripleRequestID), "triple-request-id-demo")
-	req := dubbo3pb.HelloRequest{
+	req := triplepb.HelloRequest{
 		Name: "laurence",
 	}
 
@@ -66,7 +63,7 @@ func TestStreamSayHello(t *testing.T) {
 		assert.Nil(t, err)
 	}
 
-	rspUser := &dubbo3pb.User{}
+	rspUser := &triplepb.User{}
 	err = r.RecvMsg(rspUser)
 	assert.Nil(t, err)
 	assert.Equal(t, "hello laurence", rspUser.Name)
diff --git a/integrate_test/rpc/dubbo3/codec-extension/docker/docker-compose.yml b/integrate_test/rpc/triple/pb/dubbogo-java/docker/docker-compose.yml
similarity index 100%
rename from integrate_test/rpc/dubbo3/codec-extension/docker/docker-compose.yml
rename to integrate_test/rpc/triple/pb/dubbogo-java/docker/docker-compose.yml
diff --git a/rpc/dubbo3/pb/dubbogo-java/go-server/tests/integration/main_test.go b/integrate_test/rpc/triple/pb/dubbogo-java/tests/integration/main_test.go
similarity index 90%
rename from rpc/dubbo3/pb/dubbogo-java/go-server/tests/integration/main_test.go
rename to integrate_test/rpc/triple/pb/dubbogo-java/tests/integration/main_test.go
index 8b8838d..d25080e 100644
--- a/rpc/dubbo3/pb/dubbogo-java/go-server/tests/integration/main_test.go
+++ b/integrate_test/rpc/triple/pb/dubbogo-java/tests/integration/main_test.go
@@ -1,5 +1,3 @@
-// +build integration
-
 /*
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements.  See the NOTICE file distributed with
@@ -38,10 +36,10 @@ import (
 )
 
 import (
-	dubbo3pb "github.com/apache/dubbo-go-samples/general/dubbo3/pb/dubbogo-java/protobuf"
+	triplepb "github.com/apache/dubbo-go-samples/rpc/triple/pb/dubbogo-java/protobuf"
 )
 
-var greeterProvider = new(dubbo3pb.GreeterClientImpl)
+var greeterProvider = new(triplepb.GreeterClientImpl)
 
 
 func TestMain(m *testing.M) {
diff --git a/rpc/dubbo3/pb/dubbogo-java/go-server/tests/integration/userprovider_test.go b/integrate_test/rpc/triple/pb/dubbogo-java/tests/integration/userprovider_test.go
similarity index 88%
rename from rpc/dubbo3/pb/dubbogo-java/go-server/tests/integration/userprovider_test.go
rename to integrate_test/rpc/triple/pb/dubbogo-java/tests/integration/userprovider_test.go
index 8f08877..0d9e16b 100644
--- a/rpc/dubbo3/pb/dubbogo-java/go-server/tests/integration/userprovider_test.go
+++ b/integrate_test/rpc/triple/pb/dubbogo-java/tests/integration/userprovider_test.go
@@ -1,5 +1,3 @@
-// +build integration
-
 /*
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements.  See the NOTICE file distributed with
@@ -29,15 +27,15 @@ import (
 )
 
 import (
-	dubbo3pb "github.com/apache/dubbo-go-samples/general/dubbo3/pb/dubbogo-java/protobuf"
+	triplepb "github.com/apache/dubbo-go-samples/rpc/triple/pb/dubbogo-java/protobuf"
 )
 
 func TestSayHello(t *testing.T) {
-	req := &dubbo3pb.HelloRequest{
+	req := &triplepb.HelloRequest{
 		Name: "laurence",
 	}
 
-	reply := &dubbo3pb.User{}
+	reply := &triplepb.User{}
 
 	ctx := context.Background()
 	ctx = context.WithValue(ctx, "tri-req-id", "test_value_XXXXXXXX")
diff --git a/rpc/dubbo3/pb/dubbogo-grpc/protobuf/grpc/helloworld.pb.go b/rpc/dubbo3/pb/dubbogo-grpc/protobuf/grpc/helloworld.pb.go
deleted file mode 100644
index ef574c0..0000000
--- a/rpc/dubbo3/pb/dubbogo-grpc/protobuf/grpc/helloworld.pb.go
+++ /dev/null
@@ -1,412 +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.
-
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// versions:
-// 	protoc-gen-go v1.26.0
-// 	protoc        v3.15.6
-// source: helloworld.proto
-
-package grpc
-
-import (
-	context "context"
-	reflect "reflect"
-	sync "sync"
-)
-
-import (
-	grpc "google.golang.org/grpc"
-	codes "google.golang.org/grpc/codes"
-	status "google.golang.org/grpc/status"
-
-	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
-
-	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
-)
-
-const (
-	// Verify that this generated code is sufficiently up-to-date.
-	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
-	// Verify that runtime/protoimpl is sufficiently up-to-date.
-	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
-)
-
-// The request message containing the user's name.
-type HelloRequest struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
-}
-
-func (x *HelloRequest) Reset() {
-	*x = HelloRequest{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_helloworld_proto_msgTypes[0]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *HelloRequest) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*HelloRequest) ProtoMessage() {}
-
-func (x *HelloRequest) ProtoReflect() protoreflect.Message {
-	mi := &file_helloworld_proto_msgTypes[0]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use HelloRequest.ProtoReflect.Descriptor instead.
-func (*HelloRequest) Descriptor() ([]byte, []int) {
-	return file_helloworld_proto_rawDescGZIP(), []int{0}
-}
-
-func (x *HelloRequest) GetName() string {
-	if x != nil {
-		return x.Name
-	}
-	return ""
-}
-
-// The response message containing the greetings
-type User struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
-	Id   string `protobuf:"bytes,2,opt,name=id,proto3" json:"id,omitempty"`
-	Age  int32  `protobuf:"varint,3,opt,name=age,proto3" json:"age,omitempty"`
-}
-
-func (x *User) Reset() {
-	*x = User{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_helloworld_proto_msgTypes[1]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *User) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*User) ProtoMessage() {}
-
-func (x *User) ProtoReflect() protoreflect.Message {
-	mi := &file_helloworld_proto_msgTypes[1]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use User.ProtoReflect.Descriptor instead.
-func (*User) Descriptor() ([]byte, []int) {
-	return file_helloworld_proto_rawDescGZIP(), []int{1}
-}
-
-func (x *User) GetName() string {
-	if x != nil {
-		return x.Name
-	}
-	return ""
-}
-
-func (x *User) GetID() string {
-	if x != nil {
-		return x.Id
-	}
-	return ""
-}
-
-func (x *User) GetAge() int32 {
-	if x != nil {
-		return x.Age
-	}
-	return 0
-}
-
-var File_helloworld_proto protoreflect.FileDescriptor
-
-var file_helloworld_proto_rawDesc = []byte{
-	0x0a, 0x10, 0x68, 0x65, 0x6c, 0x6c, 0x6f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x2e, 0x70, 0x72, 0x6f,
-	0x74, 0x6f, 0x12, 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x22, 0x22, 0x0a, 0x0c,
-	0x48, 0x65, 0x6c, 0x6c, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04,
-	0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65,
-	0x22, 0x3c, 0x0a, 0x04, 0x55, 0x73, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65,
-	0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x0e, 0x0a, 0x02,
-	0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x10, 0x0a, 0x03,
-	0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x61, 0x67, 0x65, 0x32, 0x7f,
-	0x0a, 0x07, 0x47, 0x72, 0x65, 0x65, 0x74, 0x65, 0x72, 0x12, 0x34, 0x0a, 0x08, 0x53, 0x61, 0x79,
-	0x48, 0x65, 0x6c, 0x6c, 0x6f, 0x12, 0x16, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
-	0x2e, 0x48, 0x65, 0x6c, 0x6c, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0e, 0x2e,
-	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x22, 0x00, 0x12,
-	0x3e, 0x0a, 0x0e, 0x53, 0x61, 0x79, 0x48, 0x65, 0x6c, 0x6c, 0x6f, 0x53, 0x74, 0x72, 0x65, 0x61,
-	0x6d, 0x12, 0x16, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x48, 0x65, 0x6c,
-	0x6c, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0e, 0x2e, 0x70, 0x72, 0x6f, 0x74,
-	0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x22, 0x00, 0x28, 0x01, 0x30, 0x01, 0x42,
-	0x11, 0x5a, 0x0f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x75, 0x62, 0x62,
-	0x6f, 0x33, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
-}
-
-var (
-	file_helloworld_proto_rawDescOnce sync.Once
-	file_helloworld_proto_rawDescData = file_helloworld_proto_rawDesc
-)
-
-func file_helloworld_proto_rawDescGZIP() []byte {
-	file_helloworld_proto_rawDescOnce.Do(func() {
-		file_helloworld_proto_rawDescData = protoimpl.X.CompressGZIP(file_helloworld_proto_rawDescData)
-	})
-	return file_helloworld_proto_rawDescData
-}
-
-var file_helloworld_proto_msgTypes = make([]protoimpl.MessageInfo, 2)
-var file_helloworld_proto_goTypes = []interface{}{
-	(*HelloRequest)(nil), // 0: protobuf.HelloRequest
-	(*User)(nil),         // 1: protobuf.User
-}
-var file_helloworld_proto_depIdxs = []int32{
-	0, // 0: protobuf.Greeter.SayHello:input_type -> protobuf.HelloRequest
-	0, // 1: protobuf.Greeter.SayHelloStream:input_type -> protobuf.HelloRequest
-	1, // 2: protobuf.Greeter.SayHello:output_type -> protobuf.User
-	1, // 3: protobuf.Greeter.SayHelloStream:output_type -> protobuf.User
-	2, // [2:4] is the sub-list for method output_type
-	0, // [0:2] is the sub-list for method input_type
-	0, // [0:0] is the sub-list for extension type_name
-	0, // [0:0] is the sub-list for extension extendee
-	0, // [0:0] is the sub-list for field type_name
-}
-
-func init() { file_helloworld_proto_init() }
-func file_helloworld_proto_init() {
-	if File_helloworld_proto != nil {
-		return
-	}
-	if !protoimpl.UnsafeEnabled {
-		file_helloworld_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*HelloRequest); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_helloworld_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*User); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-	}
-	type x struct{}
-	out := protoimpl.TypeBuilder{
-		File: protoimpl.DescBuilder{
-			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
-			RawDescriptor: file_helloworld_proto_rawDesc,
-			NumEnums:      0,
-			NumMessages:   2,
-			NumExtensions: 0,
-			NumServices:   1,
-		},
-		GoTypes:           file_helloworld_proto_goTypes,
-		DependencyIndexes: file_helloworld_proto_depIdxs,
-		MessageInfos:      file_helloworld_proto_msgTypes,
-	}.Build()
-	File_helloworld_proto = out.File
-	file_helloworld_proto_rawDesc = nil
-	file_helloworld_proto_goTypes = nil
-	file_helloworld_proto_depIdxs = nil
-}
-
-// 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)
-	SayHelloStream(ctx context.Context, opts ...grpc.CallOption) (Greeter_SayHelloStreamClient, 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
-}
-
-func (c *greeterClient) SayHelloStream(ctx context.Context, opts ...grpc.CallOption) (Greeter_SayHelloStreamClient, error) {
-	stream, err := c.cc.NewStream(ctx, &_Greeter_serviceDesc.Streams[0], "/protobuf.Greeter/SayHelloStream", opts...)
-	if err != nil {
-		return nil, err
-	}
-	x := &greeterSayHelloStreamClient{stream}
-	return x, nil
-}
-
-type Greeter_SayHelloStreamClient interface {
-	Send(*HelloRequest) error
-	Recv() (*User, error)
-	grpc.ClientStream
-}
-
-type greeterSayHelloStreamClient struct {
-	grpc.ClientStream
-}
-
-func (x *greeterSayHelloStreamClient) Send(m *HelloRequest) error {
-	return x.ClientStream.SendMsg(m)
-}
-
-func (x *greeterSayHelloStreamClient) Recv() (*User, error) {
-	m := new(User)
-	if err := x.ClientStream.RecvMsg(m); err != nil {
-		return nil, err
-	}
-	return m, nil
-}
-
-// GreeterServer is the server API for Greeter service.
-type GreeterServer interface {
-	// Sends a greeting
-	SayHello(context.Context, *HelloRequest) (*User, error)
-	SayHelloStream(Greeter_SayHelloStreamServer) error
-}
-
-// UnimplementedGreeterServer can be embedded to have forward compatible implementations.
-type UnimplementedGreeterServer struct {
-}
-
-func (*UnimplementedGreeterServer) SayHello(context.Context, *HelloRequest) (*User, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method SayHello not implemented")
-}
-func (*UnimplementedGreeterServer) SayHelloStream(Greeter_SayHelloStreamServer) error {
-	return status.Errorf(codes.Unimplemented, "method SayHelloStream 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)
-}
-
-func _Greeter_SayHelloStream_Handler(srv interface{}, stream grpc.ServerStream) error {
-	return srv.(GreeterServer).SayHelloStream(&greeterSayHelloStreamServer{stream})
-}
-
-type Greeter_SayHelloStreamServer interface {
-	Send(*User) error
-	Recv() (*HelloRequest, error)
-	grpc.ServerStream
-}
-
-type greeterSayHelloStreamServer struct {
-	grpc.ServerStream
-}
-
-func (x *greeterSayHelloStreamServer) Send(m *User) error {
-	return x.ServerStream.SendMsg(m)
-}
-
-func (x *greeterSayHelloStreamServer) Recv() (*HelloRequest, error) {
-	m := new(HelloRequest)
-	if err := x.ServerStream.RecvMsg(m); err != nil {
-		return nil, err
-	}
-	return m, nil
-}
-
-var _Greeter_serviceDesc = grpc.ServiceDesc{
-	ServiceName: "protobuf.Greeter",
-	HandlerType: (*GreeterServer)(nil),
-	Methods: []grpc.MethodDesc{
-		{
-			MethodName: "SayHello",
-			Handler:    _Greeter_SayHello_Handler,
-		},
-	},
-	Streams: []grpc.StreamDesc{
-		{
-			StreamName:    "SayHelloStream",
-			Handler:       _Greeter_SayHelloStream_Handler,
-			ServerStreams: true,
-			ClientStreams: true,
-		},
-	},
-	Metadata: "helloworld.proto",
-}
diff --git a/rpc/dubbo3/pb/dubbogo-grpc/server/dubbogo-server/conf/client.yml b/rpc/dubbo3/pb/dubbogo-grpc/server/dubbogo-server/conf/client.yml
deleted file mode 100644
index eb65e8c..0000000
--- a/rpc/dubbo3/pb/dubbogo-grpc/server/dubbogo-server/conf/client.yml
+++ /dev/null
@@ -1,22 +0,0 @@
-# dubbo-go3 client yaml configure file
-# application config (not necessary)
-application:
-  organization: "dubbo.io"
-  name: "greeterImpl"
-  module: "dubbo-go3.0 client"
-  version: "0.0.1"
-  environment: "dev"
-
-# registry config
-registries:
-  "demoZk":
-    protocol: "zookeeper"
-    timeout: "3s"
-    address: "127.0.0.1:2181"
-
-# reference config
-references:
-  "greeterImpl":
-    registry: "demoZk"
-    protocol: "tri"
-    interface: "protobuf.Greeter"
\ No newline at end of file
diff --git a/rpc/dubbo3/pb/dubbogo-grpc/server/dubbogo-server/conf/log.yml b/rpc/dubbo3/pb/dubbogo-grpc/server/dubbogo-server/conf/log.yml
deleted file mode 100644
index 8c3f700..0000000
--- a/rpc/dubbo3/pb/dubbogo-grpc/server/dubbogo-server/conf/log.yml
+++ /dev/null
@@ -1,27 +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/rpc/dubbo3/pb/dubbogo-grpc/server/dubbogo-server/conf/server.yml b/rpc/dubbo3/pb/dubbogo-grpc/server/dubbogo-server/conf/server.yml
deleted file mode 100644
index aa17206..0000000
--- a/rpc/dubbo3/pb/dubbogo-grpc/server/dubbogo-server/conf/server.yml
+++ /dev/null
@@ -1,28 +0,0 @@
-# dubbo-go3 server yaml configure file
-# application config (not necessary)
-application:
-  organization: "dubbo.io"
-  name: "GreeterProvider"
-  module: "dubbo-go3.0 server"
-  version: "0.0.1"
-  environment: "dev"
-
-# registry config
-registries:
-  "demoZK":
-    protocol: "zookeeper"
-    timeout: "3s"
-    address: "127.0.0.1:2181"
-
-# service config
-services:
-  "greeterImpl":
-    registry: "demoZK"
-    protocol: "tri"
-    interface: "protobuf.Greeter" # must be compatible with grpc or dubbo-java
-
-# protocol config
-protocols:
-  "tri":
-    name: "tri"
-    port: 20001
\ No newline at end of file
diff --git a/rpc/dubbo3/pb/dubbogo-grpc/stream-client/dubbogo-client/cmd/env.sh b/rpc/dubbo3/pb/dubbogo-grpc/stream-client/dubbogo-client/cmd/env.sh
deleted file mode 100644
index 4ac7e80..0000000
--- a/rpc/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/rpc/dubbo3/pb/dubbogo-grpc/stream-client/dubbogo-client/conf/client.yml b/rpc/dubbo3/pb/dubbogo-grpc/stream-client/dubbogo-client/conf/client.yml
deleted file mode 100644
index 1369f75..0000000
--- a/rpc/dubbo3/pb/dubbogo-grpc/stream-client/dubbogo-client/conf/client.yml
+++ /dev/null
@@ -1,23 +0,0 @@
-# dubbo-go3 client yaml configure file
-# application config (not necessary)
-application:
-  organization: "dubbo.io"
-  name: "greeterImpl"
-  module: "dubbo-go3.0 client"
-  version: "0.0.1"
-  environment: "dev"
-
-# registry config
-registries:
-  "demoZk":
-    protocol: "zookeeper"
-    timeout: "3s"
-    address: "127.0.0.1:2181"
-
-# reference config
-references:
-  "greeterImpl":
-    registry: "demoZk"
-    protocol: "tri"
-    interface: "protobuf.Greeter"
-    url: tri://localhost:20001
\ No newline at end of file
diff --git a/rpc/dubbo3/pb/dubbogo-grpc/stream-client/dubbogo-client/conf/log.yml b/rpc/dubbo3/pb/dubbogo-grpc/stream-client/dubbogo-client/conf/log.yml
deleted file mode 100644
index 8c3f700..0000000
--- a/rpc/dubbo3/pb/dubbogo-grpc/stream-client/dubbogo-client/conf/log.yml
+++ /dev/null
@@ -1,27 +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/rpc/dubbo3/pb/dubbogo-grpc/unary-client/dubbogo-client/conf/client.yml b/rpc/dubbo3/pb/dubbogo-grpc/unary-client/dubbogo-client/conf/client.yml
deleted file mode 100644
index d814a11..0000000
--- a/rpc/dubbo3/pb/dubbogo-grpc/unary-client/dubbogo-client/conf/client.yml
+++ /dev/null
@@ -1,23 +0,0 @@
-# dubbo client yaml configure file
-# application config (not necessary)
-application:
-  organization: "dubbo.io"
-  name: "GreeterProvider"
-  module: "dubbo-go greeter  client"
-  version: "0.0.1"
-  environment: "dev"
-
-# registry config
-registries:
-  "demoZk":
-    protocol: "zookeeper"
-    timeout: "3s"
-    address: "127.0.0.1:2181"
-
-# reference config
-references:
-  "greeterImpl":
-    registry: "demoZk"
-    protocol: "tri"
-    interface: "protobuf.Greeter"
-    url: tri://localhost:20001
\ No newline at end of file
diff --git a/rpc/dubbo3/pb/dubbogo-grpc/unary-client/dubbogo-client/conf/log.yml b/rpc/dubbo3/pb/dubbogo-grpc/unary-client/dubbogo-client/conf/log.yml
deleted file mode 100644
index 8c3f700..0000000
--- a/rpc/dubbo3/pb/dubbogo-grpc/unary-client/dubbogo-client/conf/log.yml
+++ /dev/null
@@ -1,27 +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/rpc/dubbo3/pb/dubbogo-java/go-client/cmd/env.sh b/rpc/dubbo3/pb/dubbogo-java/go-client/cmd/env.sh
deleted file mode 100644
index 4ac7e80..0000000
--- a/rpc/dubbo3/pb/dubbogo-java/go-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/rpc/dubbo3/pb/dubbogo-java/go-client/conf/client.yml b/rpc/dubbo3/pb/dubbogo-java/go-client/conf/client.yml
deleted file mode 100644
index f9e9eed..0000000
--- a/rpc/dubbo3/pb/dubbogo-java/go-client/conf/client.yml
+++ /dev/null
@@ -1,31 +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: "GreeterGrpcConsumer"
-  module: "dubbo-go greeter grpc 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:
-  "greeterImpl":
-    registry: "demoZk"
-    protocol: "tri"
-    interface: "com.apache.dubbo.sample.basic.IGreeter"
\ No newline at end of file
diff --git a/rpc/dubbo3/pb/dubbogo-java/go-client/conf/log.yml b/rpc/dubbo3/pb/dubbogo-java/go-client/conf/log.yml
deleted file mode 100644
index 8c3f700..0000000
--- a/rpc/dubbo3/pb/dubbogo-java/go-client/conf/log.yml
+++ /dev/null
@@ -1,27 +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/rpc/dubbo3/pb/dubbogo-java/go-server/cmd/env.sh b/rpc/dubbo3/pb/dubbogo-java/go-server/cmd/env.sh
deleted file mode 100644
index d4a72c2..0000000
--- a/rpc/dubbo3/pb/dubbogo-java/go-server/cmd/env.sh
+++ /dev/null
@@ -1,2 +0,0 @@
-export CONF_PROVIDER_FILE_PATH="../conf/server.yml"
-export APP_LOG_CONF_FILE="../conf/log.yml"
\ No newline at end of file
diff --git a/rpc/dubbo3/pb/dubbogo-java/go-server/conf/client.yml b/rpc/dubbo3/pb/dubbogo-java/go-server/conf/client.yml
deleted file mode 100644
index f9e9eed..0000000
--- a/rpc/dubbo3/pb/dubbogo-java/go-server/conf/client.yml
+++ /dev/null
@@ -1,31 +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: "GreeterGrpcConsumer"
-  module: "dubbo-go greeter grpc 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:
-  "greeterImpl":
-    registry: "demoZk"
-    protocol: "tri"
-    interface: "com.apache.dubbo.sample.basic.IGreeter"
\ No newline at end of file
diff --git a/rpc/dubbo3/pb/dubbogo-java/go-server/conf/log.yml b/rpc/dubbo3/pb/dubbogo-java/go-server/conf/log.yml
deleted file mode 100644
index 8c3f700..0000000
--- a/rpc/dubbo3/pb/dubbogo-java/go-server/conf/log.yml
+++ /dev/null
@@ -1,27 +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/rpc/dubbo3/pb/dubbogo-java/go-server/conf/server.yml b/rpc/dubbo3/pb/dubbogo-java/go-server/conf/server.yml
deleted file mode 100644
index 87fc9f1..0000000
--- a/rpc/dubbo3/pb/dubbogo-java/go-server/conf/server.yml
+++ /dev/null
@@ -1,29 +0,0 @@
-# dubbo server yaml configure file
-
-# application config
-application:
-  organization: "dubbo.io"
-  name: "GreeterGrpcServer"
-  module: "dubbo-go3.0 greeter server"
-  version: "0.0.1"
-  environment: "dev"
-
-# registry config
-registries:
-  "demoZK":
-    protocol: "zookeeper"
-    timeout: "3s"
-    address: "127.0.0.1:2181"
-
-# service config
-services:
-  "greeterImpl":
-    registry: "demoZK"
-    protocol: "tri"
-    interface: "com.apache.dubbo.sample.basic.IGreeter"
-
-# protocol config
-protocols:
-  "tri":
-    name: "tri"
-    port: 20001
\ No newline at end of file
diff --git a/rpc/dubbo3/README.md b/rpc/triple/README.md
similarity index 100%
rename from rpc/dubbo3/README.md
rename to rpc/triple/README.md
diff --git a/rpc/dubbo3/README_zh.md b/rpc/triple/README_zh.md
similarity index 100%
rename from rpc/dubbo3/README_zh.md
rename to rpc/triple/README_zh.md
diff --git a/rpc/dubbo3/codec-extension/codec/codec.go b/rpc/triple/codec-extension/codec/codec.go
similarity index 100%
rename from rpc/dubbo3/codec-extension/codec/codec.go
rename to rpc/triple/codec-extension/codec/codec.go
diff --git a/rpc/dubbo3/codec-extension/go-client/cmd/client.go b/rpc/triple/codec-extension/go-client/cmd/client.go
similarity index 92%
rename from rpc/dubbo3/codec-extension/go-client/cmd/client.go
rename to rpc/triple/codec-extension/go-client/cmd/client.go
index 087b7a5..e11ed01 100644
--- a/rpc/dubbo3/codec-extension/go-client/cmd/client.go
+++ b/rpc/triple/codec-extension/go-client/cmd/client.go
@@ -29,7 +29,7 @@ import (
 )
 
 import (
-	_ "github.com/apache/dubbo-go-samples/rpc/dubbo3/codec-extension/codec"
+	_ "github.com/apache/dubbo-go-samples/rpc/triple/codec-extension/codec"
 )
 
 type User struct {
@@ -44,7 +44,7 @@ type UserProvider struct {
 
 var userProvider = new(UserProvider)
 
-// export DUBBO_GO_CONFIG_PATH=PATH_TO_SAMPLES/rpc/dubbo3/codec-extension/go-client/conf/dubbogo.yml
+// export DUBBO_GO_CONFIG_PATH=PATH_TO_SAMPLES/rpc/triple/codec-extension/go-client/conf/dubbogo.yml
 func main() {
 	config.SetConsumerService(userProvider)
 	if err := config.Load(); err != nil {
diff --git a/rpc/dubbo3/codec-extension/go-client/conf/dubbogo.yml b/rpc/triple/codec-extension/go-client/conf/dubbogo.yml
similarity index 100%
rename from rpc/dubbo3/codec-extension/go-client/conf/dubbogo.yml
rename to rpc/triple/codec-extension/go-client/conf/dubbogo.yml
diff --git a/rpc/dubbo3/codec-extension/go-server/cmd/server.go b/rpc/triple/codec-extension/go-server/cmd/server.go
similarity index 92%
rename from rpc/dubbo3/codec-extension/go-server/cmd/server.go
rename to rpc/triple/codec-extension/go-server/cmd/server.go
index 0555c45..7080b5f 100644
--- a/rpc/dubbo3/codec-extension/go-server/cmd/server.go
+++ b/rpc/triple/codec-extension/go-server/cmd/server.go
@@ -28,7 +28,7 @@ import (
 )
 
 import (
-	_ "github.com/apache/dubbo-go-samples/rpc/dubbo3/codec-extension/codec"
+	_ "github.com/apache/dubbo-go-samples/rpc/triple/codec-extension/codec"
 )
 
 type User struct {
@@ -49,7 +49,7 @@ func (u *UserProvider) GetUser(ctx context.Context, req *User, req2 *User, name
 	return &rsp, nil
 }
 
-// export DUBBO_GO_CONFIG_PATH=PATH_TO_SAMPLES/rpc/dubbo3/codec-extension/go-server/conf/dubbogo.yml
+// export DUBBO_GO_CONFIG_PATH=PATH_TO_SAMPLES/rpc/triple/codec-extension/go-server/conf/dubbogo.yml
 func main() {
 	config.SetProviderService(&UserProvider{})
 	if err := config.Load(); err != nil {
diff --git a/rpc/dubbo3/codec-extension/go-server/conf/dubbogo.yml b/rpc/triple/codec-extension/go-server/conf/dubbogo.yml
similarity index 100%
rename from rpc/dubbo3/codec-extension/go-server/conf/dubbogo.yml
rename to rpc/triple/codec-extension/go-server/conf/dubbogo.yml
diff --git a/rpc/dubbo3/hessian2/README.md b/rpc/triple/hessian2/README.md
similarity index 100%
rename from rpc/dubbo3/hessian2/README.md
rename to rpc/triple/hessian2/README.md
diff --git a/rpc/dubbo3/hessian2/README_zh.md b/rpc/triple/hessian2/README_zh.md
similarity index 100%
rename from rpc/dubbo3/hessian2/README_zh.md
rename to rpc/triple/hessian2/README_zh.md
diff --git a/rpc/dubbo3/hessian2/go-client/cmd/client.go b/rpc/triple/hessian2/go-client/cmd/client.go
similarity index 100%
rename from rpc/dubbo3/hessian2/go-client/cmd/client.go
rename to rpc/triple/hessian2/go-client/cmd/client.go
diff --git a/rpc/dubbo3/hessian2/go-client/cmd/complex_service.go b/rpc/triple/hessian2/go-client/cmd/complex_service.go
similarity index 100%
rename from rpc/dubbo3/hessian2/go-client/cmd/complex_service.go
rename to rpc/triple/hessian2/go-client/cmd/complex_service.go
diff --git a/rpc/dubbo3/hessian2/go-client/cmd/simple_service.go b/rpc/triple/hessian2/go-client/cmd/simple_service.go
similarity index 100%
rename from rpc/dubbo3/hessian2/go-client/cmd/simple_service.go
rename to rpc/triple/hessian2/go-client/cmd/simple_service.go
diff --git a/rpc/dubbo3/hessian2/go-client/conf/dubbogo.yml b/rpc/triple/hessian2/go-client/conf/dubbogo.yml
similarity index 100%
rename from rpc/dubbo3/hessian2/go-client/conf/dubbogo.yml
rename to rpc/triple/hessian2/go-client/conf/dubbogo.yml
diff --git a/rpc/dubbo3/hessian2/go-server/cmd/complex_service.go b/rpc/triple/hessian2/go-server/cmd/complex_service.go
similarity index 100%
rename from rpc/dubbo3/hessian2/go-server/cmd/complex_service.go
rename to rpc/triple/hessian2/go-server/cmd/complex_service.go
diff --git a/rpc/dubbo3/hessian2/go-server/cmd/server.go b/rpc/triple/hessian2/go-server/cmd/server.go
similarity index 97%
rename from rpc/dubbo3/hessian2/go-server/cmd/server.go
rename to rpc/triple/hessian2/go-server/cmd/server.go
index 299d554..d977e8b 100644
--- a/rpc/dubbo3/hessian2/go-server/cmd/server.go
+++ b/rpc/triple/hessian2/go-server/cmd/server.go
@@ -45,7 +45,7 @@ func init() {
 	config.SetProviderService(new(ComplexProvider))
 }
 
-// export DUBBO_GO_CONFIG_PATH= PATH_TO_SAMPLES/rpc/dubbo3/hessian2/go-server/conf/dubbogo.yml
+// export DUBBO_GO_CONFIG_PATH= PATH_TO_SAMPLES/rpc/triple/hessian2/go-server/conf/dubbogo.yml
 func main() {
 	if err := config.Load(); err != nil {
 		panic(err)
diff --git a/rpc/dubbo3/hessian2/go-server/cmd/simple_service.go b/rpc/triple/hessian2/go-server/cmd/simple_service.go
similarity index 100%
rename from rpc/dubbo3/hessian2/go-server/cmd/simple_service.go
rename to rpc/triple/hessian2/go-server/cmd/simple_service.go
diff --git a/rpc/dubbo3/hessian2/go-server/conf/dubbogo.yml b/rpc/triple/hessian2/go-server/conf/dubbogo.yml
similarity index 100%
rename from rpc/dubbo3/hessian2/go-server/conf/dubbogo.yml
rename to rpc/triple/hessian2/go-server/conf/dubbogo.yml
diff --git a/rpc/dubbo3/hessian2/java-server/build/generated/source/proto/main/java/org/apache/dubbo/sample/hello/Helloworld.java b/rpc/triple/hessian2/java-client/build/generated/source/proto/main/java/org/apache/dubbo/sample/hello/Helloworld.java
similarity index 100%
rename from rpc/dubbo3/hessian2/java-server/build/generated/source/proto/main/java/org/apache/dubbo/sample/hello/Helloworld.java
rename to rpc/triple/hessian2/java-client/build/generated/source/proto/main/java/org/apache/dubbo/sample/hello/Helloworld.java
diff --git a/rpc/dubbo3/hessian2/java-client/pom.xml b/rpc/triple/hessian2/java-client/pom.xml
similarity index 100%
rename from rpc/dubbo3/hessian2/java-client/pom.xml
rename to rpc/triple/hessian2/java-client/pom.xml
diff --git a/rpc/dubbo3/pb/dubbogo-java/java-client/run.sh b/rpc/triple/hessian2/java-client/run.sh
similarity index 100%
rename from rpc/dubbo3/pb/dubbogo-java/java-client/run.sh
rename to rpc/triple/hessian2/java-client/run.sh
diff --git a/rpc/dubbo3/hessian2/java-client/src/main/java/com/apache/dubbo/sample/basic/ApiConsumer.java b/rpc/triple/hessian2/java-client/src/main/java/com/apache/dubbo/sample/basic/ApiConsumer.java
similarity index 100%
rename from rpc/dubbo3/hessian2/java-client/src/main/java/com/apache/dubbo/sample/basic/ApiConsumer.java
rename to rpc/triple/hessian2/java-client/src/main/java/com/apache/dubbo/sample/basic/ApiConsumer.java
diff --git a/rpc/dubbo3/hessian2/java-client/src/main/java/com/apache/dubbo/sample/basic/ComplexData.java b/rpc/triple/hessian2/java-client/src/main/java/com/apache/dubbo/sample/basic/ComplexData.java
similarity index 100%
rename from rpc/dubbo3/hessian2/java-client/src/main/java/com/apache/dubbo/sample/basic/ComplexData.java
rename to rpc/triple/hessian2/java-client/src/main/java/com/apache/dubbo/sample/basic/ComplexData.java
diff --git a/rpc/dubbo3/hessian2/java-client/src/main/java/com/apache/dubbo/sample/basic/ComplexProvider.java b/rpc/triple/hessian2/java-client/src/main/java/com/apache/dubbo/sample/basic/ComplexProvider.java
similarity index 100%
rename from rpc/dubbo3/hessian2/java-client/src/main/java/com/apache/dubbo/sample/basic/ComplexProvider.java
rename to rpc/triple/hessian2/java-client/src/main/java/com/apache/dubbo/sample/basic/ComplexProvider.java
diff --git a/rpc/dubbo3/hessian2/java-client/src/main/java/com/apache/dubbo/sample/basic/IGreeter.java b/rpc/triple/hessian2/java-client/src/main/java/com/apache/dubbo/sample/basic/IGreeter.java
similarity index 100%
rename from rpc/dubbo3/hessian2/java-client/src/main/java/com/apache/dubbo/sample/basic/IGreeter.java
rename to rpc/triple/hessian2/java-client/src/main/java/com/apache/dubbo/sample/basic/IGreeter.java
diff --git a/rpc/dubbo3/hessian2/java-server/src/main/java/com/apache/dubbo/sample/basic/User.java b/rpc/triple/hessian2/java-client/src/main/java/com/apache/dubbo/sample/basic/User.java
similarity index 100%
rename from rpc/dubbo3/hessian2/java-server/src/main/java/com/apache/dubbo/sample/basic/User.java
rename to rpc/triple/hessian2/java-client/src/main/java/com/apache/dubbo/sample/basic/User.java
diff --git a/rpc/dubbo3/pb/dubbogo-java/java-server/src/main/proto/helloworld.proto b/rpc/triple/hessian2/java-client/src/main/proto/helloworld.proto
similarity index 100%
rename from rpc/dubbo3/pb/dubbogo-java/java-server/src/main/proto/helloworld.proto
rename to rpc/triple/hessian2/java-client/src/main/proto/helloworld.proto
diff --git a/rpc/dubbo3/pb/dubbogo-java/java-server/src/main/resources/log4j.properties b/rpc/triple/hessian2/java-client/src/main/resources/log4j.properties
similarity index 100%
rename from rpc/dubbo3/pb/dubbogo-java/java-server/src/main/resources/log4j.properties
rename to rpc/triple/hessian2/java-client/src/main/resources/log4j.properties
diff --git a/rpc/dubbo3/hessian2/java-client/build/generated/source/proto/main/java/org/apache/dubbo/sample/hello/Helloworld.java b/rpc/triple/hessian2/java-server/build/generated/source/proto/main/java/org/apache/dubbo/sample/hello/Helloworld.java
similarity index 100%
rename from rpc/dubbo3/hessian2/java-client/build/generated/source/proto/main/java/org/apache/dubbo/sample/hello/Helloworld.java
rename to rpc/triple/hessian2/java-server/build/generated/source/proto/main/java/org/apache/dubbo/sample/hello/Helloworld.java
diff --git a/rpc/dubbo3/hessian2/java-server/pom.xml b/rpc/triple/hessian2/java-server/pom.xml
similarity index 100%
rename from rpc/dubbo3/hessian2/java-server/pom.xml
rename to rpc/triple/hessian2/java-server/pom.xml
diff --git a/rpc/dubbo3/pb/dubbogo-java/java-server/run.sh b/rpc/triple/hessian2/java-server/run.sh
similarity index 100%
rename from rpc/dubbo3/pb/dubbogo-java/java-server/run.sh
rename to rpc/triple/hessian2/java-server/run.sh
diff --git a/rpc/dubbo3/hessian2/java-server/src/main/java/com/apache/dubbo/sample/basic/ApiProvider.java b/rpc/triple/hessian2/java-server/src/main/java/com/apache/dubbo/sample/basic/ApiProvider.java
similarity index 100%
rename from rpc/dubbo3/hessian2/java-server/src/main/java/com/apache/dubbo/sample/basic/ApiProvider.java
rename to rpc/triple/hessian2/java-server/src/main/java/com/apache/dubbo/sample/basic/ApiProvider.java
diff --git a/rpc/dubbo3/hessian2/java-server/src/main/java/com/apache/dubbo/sample/basic/ComplexData.java b/rpc/triple/hessian2/java-server/src/main/java/com/apache/dubbo/sample/basic/ComplexData.java
similarity index 100%
rename from rpc/dubbo3/hessian2/java-server/src/main/java/com/apache/dubbo/sample/basic/ComplexData.java
rename to rpc/triple/hessian2/java-server/src/main/java/com/apache/dubbo/sample/basic/ComplexData.java
diff --git a/rpc/dubbo3/hessian2/java-server/src/main/java/com/apache/dubbo/sample/basic/ComplexProvider.java b/rpc/triple/hessian2/java-server/src/main/java/com/apache/dubbo/sample/basic/ComplexProvider.java
similarity index 100%
rename from rpc/dubbo3/hessian2/java-server/src/main/java/com/apache/dubbo/sample/basic/ComplexProvider.java
rename to rpc/triple/hessian2/java-server/src/main/java/com/apache/dubbo/sample/basic/ComplexProvider.java
diff --git a/rpc/dubbo3/hessian2/java-server/src/main/java/com/apache/dubbo/sample/basic/ComplexProviderImpl.java b/rpc/triple/hessian2/java-server/src/main/java/com/apache/dubbo/sample/basic/ComplexProviderImpl.java
similarity index 100%
rename from rpc/dubbo3/hessian2/java-server/src/main/java/com/apache/dubbo/sample/basic/ComplexProviderImpl.java
rename to rpc/triple/hessian2/java-server/src/main/java/com/apache/dubbo/sample/basic/ComplexProviderImpl.java
diff --git a/rpc/dubbo3/hessian2/java-server/src/main/java/com/apache/dubbo/sample/basic/IGreeter.java b/rpc/triple/hessian2/java-server/src/main/java/com/apache/dubbo/sample/basic/IGreeter.java
similarity index 100%
rename from rpc/dubbo3/hessian2/java-server/src/main/java/com/apache/dubbo/sample/basic/IGreeter.java
rename to rpc/triple/hessian2/java-server/src/main/java/com/apache/dubbo/sample/basic/IGreeter.java
diff --git a/rpc/dubbo3/hessian2/java-server/src/main/java/com/apache/dubbo/sample/basic/IGreeter1Impl.java b/rpc/triple/hessian2/java-server/src/main/java/com/apache/dubbo/sample/basic/IGreeter1Impl.java
similarity index 100%
rename from rpc/dubbo3/hessian2/java-server/src/main/java/com/apache/dubbo/sample/basic/IGreeter1Impl.java
rename to rpc/triple/hessian2/java-server/src/main/java/com/apache/dubbo/sample/basic/IGreeter1Impl.java
diff --git a/rpc/dubbo3/hessian2/java-client/src/main/java/com/apache/dubbo/sample/basic/User.java b/rpc/triple/hessian2/java-server/src/main/java/com/apache/dubbo/sample/basic/User.java
similarity index 100%
rename from rpc/dubbo3/hessian2/java-client/src/main/java/com/apache/dubbo/sample/basic/User.java
rename to rpc/triple/hessian2/java-server/src/main/java/com/apache/dubbo/sample/basic/User.java
diff --git a/rpc/dubbo3/pb/dubbogo-java/java-client/src/main/proto/helloworld.proto b/rpc/triple/hessian2/java-server/src/main/proto/helloworld.proto
similarity index 100%
rename from rpc/dubbo3/pb/dubbogo-java/java-client/src/main/proto/helloworld.proto
rename to rpc/triple/hessian2/java-server/src/main/proto/helloworld.proto
diff --git a/rpc/dubbo3/pb/dubbogo-java/java-client/src/main/resources/log4j.properties b/rpc/triple/hessian2/java-server/src/main/resources/log4j.properties
similarity index 100%
rename from rpc/dubbo3/pb/dubbogo-java/java-client/src/main/resources/log4j.properties
rename to rpc/triple/hessian2/java-server/src/main/resources/log4j.properties
diff --git a/rpc/dubbo3/msgpack/go-client/cmd/client.go b/rpc/triple/msgpack/go-client/cmd/client.go
similarity index 100%
rename from rpc/dubbo3/msgpack/go-client/cmd/client.go
rename to rpc/triple/msgpack/go-client/cmd/client.go
diff --git a/rpc/dubbo3/msgpack/go-client/conf/dubbogo.yml b/rpc/triple/msgpack/go-client/conf/dubbogo.yml
similarity index 100%
rename from rpc/dubbo3/msgpack/go-client/conf/dubbogo.yml
rename to rpc/triple/msgpack/go-client/conf/dubbogo.yml
diff --git a/rpc/dubbo3/msgpack/go-server/cmd/server.go b/rpc/triple/msgpack/go-server/cmd/server.go
similarity index 100%
rename from rpc/dubbo3/msgpack/go-server/cmd/server.go
rename to rpc/triple/msgpack/go-server/cmd/server.go
diff --git a/rpc/dubbo3/msgpack/go-server/conf/dubbogo.yml b/rpc/triple/msgpack/go-server/conf/dubbogo.yml
similarity index 100%
rename from rpc/dubbo3/msgpack/go-server/conf/dubbogo.yml
rename to rpc/triple/msgpack/go-server/conf/dubbogo.yml
diff --git a/rpc/dubbo3/pb/dubbogo-grpc/README.md b/rpc/triple/pb/dubbogo-grpc/README.md
similarity index 89%
rename from rpc/dubbo3/pb/dubbogo-grpc/README.md
rename to rpc/triple/pb/dubbogo-grpc/README.md
index 3f30b60..32208b7 100644
--- a/rpc/dubbo3/pb/dubbogo-grpc/README.md
+++ b/rpc/triple/pb/dubbogo-grpc/README.md
@@ -14,7 +14,7 @@ Any group of client and server can be used interchangeably to implement RPC call
 ```protobuf
 syntax = "proto3";
 
-option go_package = "protobuf/dubbo3";
+option go_package = "protobuf/triple";
 package protobuf;
 
 // The greeting service definition.
@@ -41,7 +41,7 @@ message User {
     
 3. Install protoc-gen-dubbo3 (used to generate a stub suitable for triple)    
 ```shell
-    go get -u dubbo.apache.org/dubbo-go/v3/protocol/dubbo3/protoc-gen-dubbo3@3.0
+    go get -u dubbo.apache.org/dubbo-go/v3/protocol/triple/protoc-gen-triple@3.0
 ```
 
 4. generate api file
@@ -64,11 +64,11 @@ import (
 )
 
 import (
-    dubbo3 "github.com/apache/dubbo-go-samples/general/dubbo3/api/dubbogo-grpc/protobuf/dubbo3"
+    dubbo3 "github.com/apache/dubbo-go-samples/rpc/triple/api/dubbogo-grpc/protobuf/grpc"
 )
 
 type GreeterProvider struct {
-// Introduce dubbo3 provider base
+// Introduce triple provider base
     *dubbo3.GreeterProviderBase
 }
 
@@ -158,7 +158,7 @@ triple/triple-server
    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/api/dubbogo-grpc/protobuf/dubbo3"
+    dubbo3pb "github.com/apache/dubbo-go-samples/rpc/triple/api/dubbogo-grpc/protobuf/triple"
 )
 
 // Directly introduce the GreeterClientImpl structure, you can enter the structure, and see the Reference as "greeterImpl"
diff --git a/rpc/dubbo3/pb/dubbogo-grpc/README_zh.md b/rpc/triple/pb/dubbogo-grpc/README_zh.md
similarity index 89%
rename from rpc/dubbo3/pb/dubbogo-grpc/README_zh.md
rename to rpc/triple/pb/dubbogo-grpc/README_zh.md
index 0d0e946..e20988f 100644
--- a/rpc/dubbo3/pb/dubbogo-grpc/README_zh.md
+++ b/rpc/triple/pb/dubbogo-grpc/README_zh.md
@@ -14,7 +14,7 @@
 ```protobuf
 syntax = "proto3";
 
-option go_package = "protobuf/dubbo3";
+option go_package = "protobuf/triple";
 package protobuf;
 
 // The greeting service definition.
@@ -41,7 +41,7 @@ message User {
    
 3. 安装 protoc-gen-dubbo3(用于生成适配于triple的stub)
 ```shell
-go get -u dubbo.apache.org/dubbo-go/v3/protocol/dubbo3/protoc-gen-dubbo3@3.0
+go get -u dubbo.apache.org/dubbo-go/v3/protocol/triple/protoc-gen-triple@3.0
 ```
 4. 生成 api 文件
 ```shell
@@ -63,7 +63,7 @@ import (
 )
 
 import (
-	dubbo3 "github.com/apache/dubbo-go-samples/general/dubbo3/api/dubbogo-grpc/protobuf/dubbo3"
+	dubbo3 "github.com/apache/dubbo-go-samples/rpc/triple/api/dubbogo-grpc/protobuf/triple"
 )
 
 type GreeterProvider struct {
@@ -158,7 +158,7 @@ triple/triple-server
 Consumer 结构已经在pb文件中实现好,可直接引入
 ```go
 import (
-    dubbo3pb "github.com/apache/dubbo-go-samples/general/dubbo3/api/dubbogo-grpc/protobuf/dubbo3"
+    dubbo3pb "github.com/apache/dubbo-go-samples/general/triple/api/dubbogo-grpc/protobuf/triple"
 )
 
 // 直接引入GreeterClientImpl 结构,可以进入该结构,查看Reference为“greeterImpl”
diff --git a/rpc/triple/pb/dubbogo-grpc/protobuf/grpc/helloworld.pb.go b/rpc/triple/pb/dubbogo-grpc/protobuf/grpc/helloworld.pb.go
new file mode 100644
index 0000000..1899aac
--- /dev/null
+++ b/rpc/triple/pb/dubbogo-grpc/protobuf/grpc/helloworld.pb.go
@@ -0,0 +1,253 @@
+// 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.
+
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// versions:
+// 	protoc-gen-go v1.26.0
+// 	protoc        v3.17.3
+// source: helloworld.proto
+
+package grpc
+
+import (
+	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+	reflect "reflect"
+	sync "sync"
+)
+
+const (
+	// Verify that this generated code is sufficiently up-to-date.
+	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
+	// Verify that runtime/protoimpl is sufficiently up-to-date.
+	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
+)
+
+// The request message containing the user's name.
+type HelloRequest struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
+}
+
+func (x *HelloRequest) Reset() {
+	*x = HelloRequest{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_helloworld_proto_msgTypes[0]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *HelloRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*HelloRequest) ProtoMessage() {}
+
+func (x *HelloRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_helloworld_proto_msgTypes[0]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use HelloRequest.ProtoReflect.Descriptor instead.
+func (*HelloRequest) Descriptor() ([]byte, []int) {
+	return file_helloworld_proto_rawDescGZIP(), []int{0}
+}
+
+func (x *HelloRequest) GetName() string {
+	if x != nil {
+		return x.Name
+	}
+	return ""
+}
+
+// The response message containing the greetings
+type User struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
+	Id   string `protobuf:"bytes,2,opt,name=id,proto3" json:"id,omitempty"`
+	Age  int32  `protobuf:"varint,3,opt,name=age,proto3" json:"age,omitempty"`
+}
+
+func (x *User) Reset() {
+	*x = User{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_helloworld_proto_msgTypes[1]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *User) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*User) ProtoMessage() {}
+
+func (x *User) ProtoReflect() protoreflect.Message {
+	mi := &file_helloworld_proto_msgTypes[1]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use User.ProtoReflect.Descriptor instead.
+func (*User) Descriptor() ([]byte, []int) {
+	return file_helloworld_proto_rawDescGZIP(), []int{1}
+}
+
+func (x *User) GetName() string {
+	if x != nil {
+		return x.Name
+	}
+	return ""
+}
+
+func (x *User) GetId() string {
+	if x != nil {
+		return x.Id
+	}
+	return ""
+}
+
+func (x *User) GetAge() int32 {
+	if x != nil {
+		return x.Age
+	}
+	return 0
+}
+
+var File_helloworld_proto protoreflect.FileDescriptor
+
+var file_helloworld_proto_rawDesc = []byte{
+	0x0a, 0x10, 0x68, 0x65, 0x6c, 0x6c, 0x6f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x2e, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x12, 0x10, 0x6f, 0x72, 0x67, 0x2e, 0x61, 0x70, 0x61, 0x63, 0x68, 0x65, 0x2e, 0x64,
+	0x75, 0x62, 0x62, 0x6f, 0x22, 0x22, 0x0a, 0x0c, 0x48, 0x65, 0x6c, 0x6c, 0x6f, 0x52, 0x65, 0x71,
+	0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01,
+	0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x3c, 0x0a, 0x04, 0x55, 0x73, 0x65, 0x72,
+	0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04,
+	0x6e, 0x61, 0x6d, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
+	0x52, 0x02, 0x69, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28,
+	0x05, 0x52, 0x03, 0x61, 0x67, 0x65, 0x32, 0x9f, 0x01, 0x0a, 0x07, 0x47, 0x72, 0x65, 0x65, 0x74,
+	0x65, 0x72, 0x12, 0x44, 0x0a, 0x08, 0x53, 0x61, 0x79, 0x48, 0x65, 0x6c, 0x6c, 0x6f, 0x12, 0x1e,
+	0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x61, 0x70, 0x61, 0x63, 0x68, 0x65, 0x2e, 0x64, 0x75, 0x62, 0x62,
+	0x6f, 0x2e, 0x48, 0x65, 0x6c, 0x6c, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16,
+	0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x61, 0x70, 0x61, 0x63, 0x68, 0x65, 0x2e, 0x64, 0x75, 0x62, 0x62,
+	0x6f, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x22, 0x00, 0x12, 0x4e, 0x0a, 0x0e, 0x53, 0x61, 0x79, 0x48,
+	0x65, 0x6c, 0x6c, 0x6f, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x12, 0x1e, 0x2e, 0x6f, 0x72, 0x67,
+	0x2e, 0x61, 0x70, 0x61, 0x63, 0x68, 0x65, 0x2e, 0x64, 0x75, 0x62, 0x62, 0x6f, 0x2e, 0x48, 0x65,
+	0x6c, 0x6c, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x6f, 0x72, 0x67,
+	0x2e, 0x61, 0x70, 0x61, 0x63, 0x68, 0x65, 0x2e, 0x64, 0x75, 0x62, 0x62, 0x6f, 0x2e, 0x55, 0x73,
+	0x65, 0x72, 0x22, 0x00, 0x28, 0x01, 0x30, 0x01, 0x42, 0x09, 0x5a, 0x07, 0x2e, 0x2f, 0x3b, 0x67,
+	0x72, 0x70, 0x63, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
+}
+
+var (
+	file_helloworld_proto_rawDescOnce sync.Once
+	file_helloworld_proto_rawDescData = file_helloworld_proto_rawDesc
+)
+
+func file_helloworld_proto_rawDescGZIP() []byte {
+	file_helloworld_proto_rawDescOnce.Do(func() {
+		file_helloworld_proto_rawDescData = protoimpl.X.CompressGZIP(file_helloworld_proto_rawDescData)
+	})
+	return file_helloworld_proto_rawDescData
+}
+
+var file_helloworld_proto_msgTypes = make([]protoimpl.MessageInfo, 2)
+var file_helloworld_proto_goTypes = []interface{}{
+	(*HelloRequest)(nil), // 0: org.apache.dubbo.HelloRequest
+	(*User)(nil),         // 1: org.apache.dubbo.User
+}
+var file_helloworld_proto_depIdxs = []int32{
+	0, // 0: org.apache.dubbo.Greeter.SayHello:input_type -> org.apache.dubbo.HelloRequest
+	0, // 1: org.apache.dubbo.Greeter.SayHelloStream:input_type -> org.apache.dubbo.HelloRequest
+	1, // 2: org.apache.dubbo.Greeter.SayHello:output_type -> org.apache.dubbo.User
+	1, // 3: org.apache.dubbo.Greeter.SayHelloStream:output_type -> org.apache.dubbo.User
+	2, // [2:4] is the sub-list for method output_type
+	0, // [0:2] is the sub-list for method input_type
+	0, // [0:0] is the sub-list for extension type_name
+	0, // [0:0] is the sub-list for extension extendee
+	0, // [0:0] is the sub-list for field type_name
+}
+
+func init() { file_helloworld_proto_init() }
+func file_helloworld_proto_init() {
+	if File_helloworld_proto != nil {
+		return
+	}
+	if !protoimpl.UnsafeEnabled {
+		file_helloworld_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*HelloRequest); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_helloworld_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*User); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+	}
+	type x struct{}
+	out := protoimpl.TypeBuilder{
+		File: protoimpl.DescBuilder{
+			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+			RawDescriptor: file_helloworld_proto_rawDesc,
+			NumEnums:      0,
+			NumMessages:   2,
+			NumExtensions: 0,
+			NumServices:   1,
+		},
+		GoTypes:           file_helloworld_proto_goTypes,
+		DependencyIndexes: file_helloworld_proto_depIdxs,
+		MessageInfos:      file_helloworld_proto_msgTypes,
+	}.Build()
+	File_helloworld_proto = out.File
+	file_helloworld_proto_rawDesc = nil
+	file_helloworld_proto_goTypes = nil
+	file_helloworld_proto_depIdxs = nil
+}
diff --git a/rpc/dubbo3/pb/dubbogo-grpc/protobuf/grpc/helloworld.proto b/rpc/triple/pb/dubbogo-grpc/protobuf/grpc/helloworld.proto
similarity index 92%
rename from rpc/dubbo3/pb/dubbogo-grpc/protobuf/grpc/helloworld.proto
rename to rpc/triple/pb/dubbogo-grpc/protobuf/grpc/helloworld.proto
index dfec744..d6c47ef 100644
--- a/rpc/dubbo3/pb/dubbogo-grpc/protobuf/grpc/helloworld.proto
+++ b/rpc/triple/pb/dubbogo-grpc/protobuf/grpc/helloworld.proto
@@ -16,8 +16,9 @@
  */
 syntax = "proto3";
 
-option go_package = "protobuf/dubbo3";
-package protobuf;
+package org.apache.dubbo;
+
+option go_package = "./;grpc";
 
 // The greeting service definition.
 service Greeter {
diff --git a/rpc/triple/pb/dubbogo-grpc/protobuf/grpc/helloworld_grpc.pb.go b/rpc/triple/pb/dubbogo-grpc/protobuf/grpc/helloworld_grpc.pb.go
new file mode 100644
index 0000000..ab1d31e
--- /dev/null
+++ b/rpc/triple/pb/dubbogo-grpc/protobuf/grpc/helloworld_grpc.pb.go
@@ -0,0 +1,187 @@
+// 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.
+
+// Code generated by protoc-gen-go-grpc. DO NOT EDIT.
+
+package grpc
+
+import (
+	context "context"
+	grpc "google.golang.org/grpc"
+	codes "google.golang.org/grpc/codes"
+	status "google.golang.org/grpc/status"
+)
+
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the grpc package it is being compiled against.
+// Requires gRPC-Go v1.32.0 or later.
+const _ = grpc.SupportPackageIsVersion7
+
+// GreeterClient is the client API for Greeter service.
+//
+// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
+type GreeterClient interface {
+	// Sends a greeting
+	SayHello(ctx context.Context, in *HelloRequest, opts ...grpc.CallOption) (*User, error)
+	SayHelloStream(ctx context.Context, opts ...grpc.CallOption) (Greeter_SayHelloStreamClient, 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, "/org.apache.dubbo.Greeter/SayHello", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *greeterClient) SayHelloStream(ctx context.Context, opts ...grpc.CallOption) (Greeter_SayHelloStreamClient, error) {
+	stream, err := c.cc.NewStream(ctx, &Greeter_ServiceDesc.Streams[0], "/org.apache.dubbo.Greeter/SayHelloStream", opts...)
+	if err != nil {
+		return nil, err
+	}
+	x := &greeterSayHelloStreamClient{stream}
+	return x, nil
+}
+
+type Greeter_SayHelloStreamClient interface {
+	Send(*HelloRequest) error
+	Recv() (*User, error)
+	grpc.ClientStream
+}
+
+type greeterSayHelloStreamClient struct {
+	grpc.ClientStream
+}
+
+func (x *greeterSayHelloStreamClient) Send(m *HelloRequest) error {
+	return x.ClientStream.SendMsg(m)
+}
+
+func (x *greeterSayHelloStreamClient) Recv() (*User, error) {
+	m := new(User)
+	if err := x.ClientStream.RecvMsg(m); err != nil {
+		return nil, err
+	}
+	return m, nil
+}
+
+// GreeterServer is the server API for Greeter service.
+// All implementations must embed UnimplementedGreeterServer
+// for forward compatibility
+type GreeterServer interface {
+	// Sends a greeting
+	SayHello(context.Context, *HelloRequest) (*User, error)
+	SayHelloStream(Greeter_SayHelloStreamServer) error
+	mustEmbedUnimplementedGreeterServer()
+}
+
+// UnimplementedGreeterServer must be embedded to have forward compatible implementations.
+type UnimplementedGreeterServer struct {
+}
+
+func (UnimplementedGreeterServer) SayHello(context.Context, *HelloRequest) (*User, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method SayHello not implemented")
+}
+func (UnimplementedGreeterServer) SayHelloStream(Greeter_SayHelloStreamServer) error {
+	return status.Errorf(codes.Unimplemented, "method SayHelloStream not implemented")
+}
+func (UnimplementedGreeterServer) mustEmbedUnimplementedGreeterServer() {}
+
+// UnsafeGreeterServer may be embedded to opt out of forward compatibility for this service.
+// Use of this interface is not recommended, as added methods to GreeterServer will
+// result in compilation errors.
+type UnsafeGreeterServer interface {
+	mustEmbedUnimplementedGreeterServer()
+}
+
+func RegisterGreeterServer(s grpc.ServiceRegistrar, 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: "/org.apache.dubbo.Greeter/SayHello",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(GreeterServer).SayHello(ctx, req.(*HelloRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _Greeter_SayHelloStream_Handler(srv interface{}, stream grpc.ServerStream) error {
+	return srv.(GreeterServer).SayHelloStream(&greeterSayHelloStreamServer{stream})
+}
+
+type Greeter_SayHelloStreamServer interface {
+	Send(*User) error
+	Recv() (*HelloRequest, error)
+	grpc.ServerStream
+}
+
+type greeterSayHelloStreamServer struct {
+	grpc.ServerStream
+}
+
+func (x *greeterSayHelloStreamServer) Send(m *User) error {
+	return x.ServerStream.SendMsg(m)
+}
+
+func (x *greeterSayHelloStreamServer) Recv() (*HelloRequest, error) {
+	m := new(HelloRequest)
+	if err := x.ServerStream.RecvMsg(m); err != nil {
+		return nil, err
+	}
+	return m, nil
+}
+
+// Greeter_ServiceDesc is the grpc.ServiceDesc for Greeter service.
+// It's only intended for direct use with grpc.RegisterService,
+// and not to be introspected or modified (even as a copy)
+var Greeter_ServiceDesc = grpc.ServiceDesc{
+	ServiceName: "org.apache.dubbo.Greeter",
+	HandlerType: (*GreeterServer)(nil),
+	Methods: []grpc.MethodDesc{
+		{
+			MethodName: "SayHello",
+			Handler:    _Greeter_SayHello_Handler,
+		},
+	},
+	Streams: []grpc.StreamDesc{
+		{
+			StreamName:    "SayHelloStream",
+			Handler:       _Greeter_SayHelloStream_Handler,
+			ServerStreams: true,
+			ClientStreams: true,
+		},
+	},
+	Metadata: "helloworld.proto",
+}
diff --git a/rpc/dubbo3/pb/dubbogo-grpc/protobuf/dubbo3/helloworld.pb.go b/rpc/triple/pb/dubbogo-grpc/protobuf/triple/helloworld.pb.go
similarity index 96%
rename from rpc/dubbo3/pb/dubbogo-grpc/protobuf/dubbo3/helloworld.pb.go
rename to rpc/triple/pb/dubbogo-grpc/protobuf/triple/helloworld.pb.go
index 3d5988c..0257779 100644
--- a/rpc/dubbo3/pb/dubbogo-grpc/protobuf/dubbo3/helloworld.pb.go
+++ b/rpc/triple/pb/dubbogo-grpc/protobuf/triple/helloworld.pb.go
@@ -1,11 +1,15 @@
 // Code generated by protoc-gen-go. DO NOT EDIT.
 // source: helloworld.proto
 
-package protobuf
+package triple
 
 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,17 +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
@@ -138,7 +136,7 @@ func init() {
 func init() { proto.RegisterFile("helloworld.proto", fileDescriptor_17b8c58d586b62f2) }
 
 var fileDescriptor_17b8c58d586b62f2 = []byte{
-	// 178 bytes of a gzipped FileDescriptorProto
+	// 191 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,
@@ -148,9 +146,123 @@ var fileDescriptor_17b8c58d586b62f2 = []byte{
 	0x82, 0x59, 0x81, 0x51, 0x83, 0x35, 0x08, 0xc4, 0x34, 0xaa, 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, 0x84, 0xec, 0xb8,
-	0xf8, 0x60, 0xba, 0x82, 0x4b, 0x8a, 0x52, 0x13, 0x73, 0x89, 0xd7, 0xab, 0xc1, 0x68, 0xc0, 0x98,
-	0xc4, 0x06, 0x16, 0x34, 0x06, 0x04, 0x00, 0x00, 0xff, 0xff, 0x98, 0x59, 0x9f, 0x6b, 0x07, 0x01,
-	0x00, 0x00,
+	0xf8, 0x60, 0xba, 0x82, 0x4b, 0x8a, 0x52, 0x13, 0x73, 0x89, 0xd7, 0xab, 0xc1, 0x68, 0xc0, 0xe8,
+	0xc4, 0x1d, 0xc5, 0xa9, 0xa7, 0x6f, 0x5d, 0x52, 0x94, 0x59, 0x90, 0x93, 0x9a, 0xc4, 0x06, 0x56,
+	0x61, 0x0c, 0x08, 0x00, 0x00, 0xff, 0xff, 0x12, 0x44, 0x1c, 0xfd, 0x14, 0x01, 0x00, 0x00,
+}
+
+type greeterDubbo3Client struct {
+	cc *dubbo3.TripleConn
+}
+
+func NewGreeterDubbo3Client(cc *dubbo3.TripleConn) GreeterClient {
+	return &greeterDubbo3Client{cc}
+}
+func (c *greeterDubbo3Client) SayHello(ctx context.Context, in *HelloRequest, opt ...grpc.CallOption) (*User, error) {
+	out := new(User)
+	interfaceKey := ctx.Value(tripleConstant.InterfaceKey).(string)
+	err := c.cc.Invoke(ctx, "/"+interfaceKey+"/SayHello", in, out)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+func (c *greeterDubbo3Client) SayHelloStream(ctx context.Context, opt ...grpc.CallOption) (Greeter_SayHelloStreamClient, error) {
+	interfaceKey := ctx.Value(tripleConstant.InterfaceKey).(string)
+	stream, err := c.cc.NewStream(ctx, "/"+interfaceKey+"/SayHelloStream", opt...)
+	if err != nil {
+		return nil, err
+	}
+	x := &greeterSayHelloStreamClient{stream}
+	return x, nil
+}
+
+// GreeterClientImpl 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 GreeterClientImpl struct {
+	// Sends a greeting
+	SayHello       func(ctx context.Context, in *HelloRequest) (*User, error)
+	SayHelloStream func(ctx context.Context) (Greeter_SayHelloStreamClient, error)
+}
+
+func (c *GreeterClientImpl) Reference() string {
+	return "greeterImpl"
+}
+
+func (c *GreeterClientImpl) GetDubboStub(cc *dubbo3.TripleConn) GreeterClient {
+	return NewGreeterDubbo3Client(cc)
+}
+
+type GreeterProviderBase struct {
+	proxyImpl protocol.Invoker
+}
+
+func (s *GreeterProviderBase) SetProxyImpl(impl protocol.Invoker) {
+	s.proxyImpl = impl
+}
+
+func (s *GreeterProviderBase) GetProxyImpl() protocol.Invoker {
+	return s.proxyImpl
+}
+
+func (c *GreeterProviderBase) Reference() string {
+	return "greeterImpl"
+}
+
+func _DUBBO_Greeter_SayHello_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(HelloRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	base := srv.(dgrpc.Dubbo3GrpcService)
+	args := []interface{}{}
+	args = append(args, in)
+	invo := invocation.NewRPCInvocation("SayHello", args, nil)
+	if interceptor == nil {
+		result := base.GetProxyImpl().Invoke(ctx, invo)
+		return result.Result(), result.Error()
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/protobuf.Greeter/SayHello",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		result := base.GetProxyImpl().Invoke(context.Background(), invo)
+		return result.Result(), result.Error()
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _DUBBO_Greeter_SayHelloStream_Handler(srv interface{}, stream grpc.ServerStream) error {
+	_, ok := srv.(dgrpc.Dubbo3GrpcService)
+	invo := invocation.NewRPCInvocation("SayHelloStream", nil, nil)
+	if !ok {
+		fmt.Println(invo)
+	}
+	return srv.(GreeterServer).SayHelloStream(&greeterSayHelloStreamServer{stream})
+}
+
+func (s *GreeterProviderBase) ServiceDesc() *grpc.ServiceDesc {
+	return &grpc.ServiceDesc{
+		ServiceName: "protobuf.Greeter",
+		HandlerType: (*GreeterServer)(nil),
+		Methods: []grpc.MethodDesc{
+			{
+				MethodName: "SayHello",
+				Handler:    _DUBBO_Greeter_SayHello_Handler,
+			},
+		},
+		Streams: []grpc.StreamDesc{
+			{
+				StreamName:    "SayHelloStream",
+				Handler:       _DUBBO_Greeter_SayHelloStream_Handler,
+				ServerStreams: true,
+				ClientStreams: true,
+			},
+		},
+		Metadata: "helloworld.proto",
+	}
 }
 
 // Reference imports to suppress errors if they are not otherwise used.
@@ -303,117 +415,3 @@ var _Greeter_serviceDesc = grpc.ServiceDesc{
 	},
 	Metadata: "helloworld.proto",
 }
-
-type greeterDubbo3Client struct {
-	cc *dubbo3.TripleConn
-}
-
-func NewGreeterDubbo3Client(cc *dubbo3.TripleConn) GreeterClient {
-	return &greeterDubbo3Client{cc}
-}
-func (c *greeterDubbo3Client) SayHello(ctx context.Context, in *HelloRequest, opt ...grpc.CallOption) (*User, error) {
-	out := new(User)
-	interfaceKey := ctx.Value(tripleConstant.InterfaceKey).(string)
-	err := c.cc.Invoke(ctx, "/"+interfaceKey+"/SayHello", in, out)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-func (c *greeterDubbo3Client) SayHelloStream(ctx context.Context, opt ...grpc.CallOption) (Greeter_SayHelloStreamClient, error) {
-	interfaceKey := ctx.Value(tripleConstant.InterfaceKey).(string)
-	stream, err := c.cc.NewStream(ctx, "/"+interfaceKey+"/SayHelloStream", opt...)
-	if err != nil {
-		return nil, err
-	}
-	x := &greeterSayHelloStreamClient{stream}
-	return x, nil
-}
-
-// GreeterClientImpl 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 GreeterClientImpl struct {
-	// Sends a greeting
-	SayHello       func(ctx context.Context, in *HelloRequest, out *User) error
-	SayHelloStream func(ctx context.Context) (Greeter_SayHelloStreamClient, error)
-}
-
-func (c *GreeterClientImpl) Reference() string {
-	return "greeterImpl"
-}
-
-func (c *GreeterClientImpl) GetDubboStub(cc *dubbo3.TripleConn) GreeterClient {
-	return NewGreeterDubbo3Client(cc)
-}
-
-type GreeterProviderBase struct {
-	proxyImpl protocol.Invoker
-}
-
-func (s *GreeterProviderBase) SetProxyImpl(impl protocol.Invoker) {
-	s.proxyImpl = impl
-}
-
-func (s *GreeterProviderBase) GetProxyImpl() protocol.Invoker {
-	return s.proxyImpl
-}
-
-func (c *GreeterProviderBase) Reference() string {
-	return "greeterImpl"
-}
-
-func _DUBBO_Greeter_SayHello_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(HelloRequest)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	base := srv.(dgrpc.Dubbo3GrpcService)
-	args := []interface{}{}
-	args = append(args, in)
-	invo := invocation.NewRPCInvocation("SayHello", args, nil)
-	if interceptor == nil {
-		result := base.GetProxyImpl().Invoke(ctx, invo)
-		return result.Result(), result.Error()
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/protobuf.Greeter/SayHello",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		result := base.GetProxyImpl().Invoke(context.Background(), invo)
-		return result.Result(), result.Error()
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _DUBBO_Greeter_SayHelloStream_Handler(srv interface{}, stream grpc.ServerStream) error {
-	_, ok := srv.(dgrpc.Dubbo3GrpcService)
-	invo := invocation.NewRPCInvocation("SayHelloStream", nil, nil)
-	if !ok {
-		fmt.Println(invo)
-	}
-	return srv.(GreeterServer).SayHelloStream(&greeterSayHelloStreamServer{stream})
-}
-
-func (s *GreeterProviderBase) ServiceDesc() *grpc.ServiceDesc {
-	return &grpc.ServiceDesc{
-		ServiceName: "protobuf.Greeter",
-		HandlerType: (*GreeterServer)(nil),
-		Methods: []grpc.MethodDesc{
-			{
-				MethodName: "SayHello",
-				Handler:    _DUBBO_Greeter_SayHello_Handler,
-			},
-		},
-		Streams: []grpc.StreamDesc{
-			{
-				StreamName:    "SayHelloStream",
-				Handler:       _DUBBO_Greeter_SayHelloStream_Handler,
-				ServerStreams: true,
-				ClientStreams: true,
-			},
-		},
-		Metadata: "helloworld.proto",
-	}
-}
diff --git a/rpc/dubbo3/pb/dubbogo-grpc/protobuf/dubbo3/helloworld.proto b/rpc/triple/pb/dubbogo-grpc/protobuf/triple/helloworld.proto
similarity index 97%
rename from rpc/dubbo3/pb/dubbogo-grpc/protobuf/dubbo3/helloworld.proto
rename to rpc/triple/pb/dubbogo-grpc/protobuf/triple/helloworld.proto
index d0a746e..0fd85a6 100644
--- a/rpc/dubbo3/pb/dubbogo-grpc/protobuf/dubbo3/helloworld.proto
+++ b/rpc/triple/pb/dubbogo-grpc/protobuf/triple/helloworld.proto
@@ -18,6 +18,8 @@
 syntax = "proto3";
 package protobuf;
 
+option go_package = "./;triple";
+
 // The greeting service definition.
 service Greeter {
   // Sends a greeting
diff --git a/rpc/dubbo3/pb/dubbogo-grpc/protobuf/dubbo3/protobuf.mk b/rpc/triple/pb/dubbogo-grpc/protobuf/triple/protobuf.mk
similarity index 100%
rename from rpc/dubbo3/pb/dubbogo-grpc/protobuf/dubbo3/protobuf.mk
rename to rpc/triple/pb/dubbogo-grpc/protobuf/triple/protobuf.mk
diff --git a/rpc/dubbo3/pb/dubbogo-grpc/server/dubbogo-server/cmd/server.go b/rpc/triple/pb/dubbogo-grpc/server/dubbogo-server/cmd/server.go
similarity index 75%
rename from rpc/dubbo3/pb/dubbogo-grpc/server/dubbogo-server/cmd/server.go
rename to rpc/triple/pb/dubbogo-grpc/server/dubbogo-server/cmd/server.go
index d54bf26..0865203 100644
--- a/rpc/dubbo3/pb/dubbogo-grpc/server/dubbogo-server/cmd/server.go
+++ b/rpc/triple/pb/dubbogo-grpc/server/dubbogo-server/cmd/server.go
@@ -26,32 +26,27 @@ 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/dubbo3"
-	_ "dubbo.apache.org/dubbo-go/v3/registry/nacos"
-	_ "dubbo.apache.org/dubbo-go/v3/registry/protocol"
-	_ "dubbo.apache.org/dubbo-go/v3/registry/zookeeper"
+	_ "dubbo.apache.org/dubbo-go/v3/imports"
 
 	_ "github.com/dubbogo/triple/pkg/triple"
 )
 
 import (
-	"github.com/apache/dubbo-go-samples/rpc/dubbo3/pb/dubbogo-grpc/server/dubbogo-server/pkg"
+	"github.com/apache/dubbo-go-samples/rpc/triple/pb/dubbogo-grpc/server/dubbogo-server/pkg"
 )
 
 var (
 	survivalTimeout = int(3 * time.Second)
 )
 
-// need to setup environment variable "CONF_PROVIDER_FILE_PATH" to "conf/server.yml" before run
+// export DUBBO_GO_CONFIG_PATH=$PATH_TO_SAMPLES/rpc/triple/pb/dubbogo-grpc/server/dubbogo-server/conf/dubbogo.yml
 func main() {
 	config.SetProviderService(pkg.NewGreeterProvider())
-	config.Load()
+	if err := config.Load(); err != nil {
+		panic(err)
+	}
 	initSignal()
 }
 
diff --git a/rpc/triple/pb/dubbogo-grpc/server/dubbogo-server/conf/dubbogo.yml b/rpc/triple/pb/dubbogo-grpc/server/dubbogo-server/conf/dubbogo.yml
new file mode 100644
index 0000000..ba654af
--- /dev/null
+++ b/rpc/triple/pb/dubbogo-grpc/server/dubbogo-server/conf/dubbogo.yml
@@ -0,0 +1,16 @@
+dubbo:
+  registries:
+    zk:
+      address: zookeeper://127.0.0.1:2181
+  protocols:
+    triple:
+      name: tri
+      port: 20000
+  provider:
+    registry: zk
+    services:
+      # you may refer to `Reference()` method defined in `protobuf/triple/helloworld.pb.go`
+      greeterImpl:
+        protocol: triple
+        # interface is for registry
+        interface: org.apache.dubbo.Greeter
\ No newline at end of file
diff --git a/rpc/dubbo3/pb/dubbogo-grpc/server/dubbogo-server/pkg/greeter.go b/rpc/triple/pb/dubbogo-grpc/server/dubbogo-server/pkg/greeter.go
similarity index 79%
rename from rpc/dubbo3/pb/dubbogo-grpc/server/dubbogo-server/pkg/greeter.go
rename to rpc/triple/pb/dubbogo-grpc/server/dubbogo-server/pkg/greeter.go
index 39777a0..6f21629 100644
--- a/rpc/dubbo3/pb/dubbogo-grpc/server/dubbogo-server/pkg/greeter.go
+++ b/rpc/triple/pb/dubbogo-grpc/server/dubbogo-server/pkg/greeter.go
@@ -29,20 +29,20 @@ import (
 )
 
 import (
-	dubbo3 "github.com/apache/dubbo-go-samples/general/dubbo3/pb/dubbogo-grpc/protobuf/dubbo3"
+	triplepb "github.com/apache/dubbo-go-samples/rpc/triple/pb/dubbogo-grpc/protobuf/triple"
 )
 
 type GreeterProvider struct {
-	*dubbo3.GreeterProviderBase
+	*triplepb.GreeterProviderBase
 }
 
 func NewGreeterProvider() *GreeterProvider {
 	return &GreeterProvider{
-		GreeterProviderBase: &dubbo3.GreeterProviderBase{},
+		GreeterProviderBase: &triplepb.GreeterProviderBase{},
 	}
 }
 
-func (s *GreeterProvider) SayHelloStream(svr dubbo3.Greeter_SayHelloStreamServer) error {
+func (s *GreeterProvider) SayHelloStream(svr triplepb.Greeter_SayHelloStreamServer) error {
 	c, err := svr.Recv()
 	if err != nil {
 		return err
@@ -54,7 +54,7 @@ func (s *GreeterProvider) SayHelloStream(svr dubbo3.Greeter_SayHelloStreamServer
 	}
 	logger.Infof("Dubbo-go3 GreeterProvider recv 2 user, name = %s\n", c2.Name)
 
-	svr.Send(&dubbo3.User{
+	svr.Send(&triplepb.User{
 		Name: "hello " + c.Name,
 		Age:  18,
 		Id:   "123456789",
@@ -65,7 +65,7 @@ func (s *GreeterProvider) SayHelloStream(svr dubbo3.Greeter_SayHelloStreamServer
 	}
 	logger.Infof("Dubbo-go3 GreeterProvider recv 3 user, name = %s\n", c3.Name)
 
-	svr.Send(&dubbo3.User{
+	svr.Send(&triplepb.User{
 		Name: "hello " + c2.Name,
 		Age:  19,
 		Id:   "123456789",
@@ -73,9 +73,9 @@ func (s *GreeterProvider) SayHelloStream(svr dubbo3.Greeter_SayHelloStreamServer
 	return nil
 }
 
-func (s *GreeterProvider) SayHello(ctx context.Context, in *dubbo3.HelloRequest) (*dubbo3.User, error) {
+func (s *GreeterProvider) SayHello(ctx context.Context, in *triplepb.HelloRequest) (*triplepb.User, error) {
 	logger.Infof("Dubbo3 GreeterProvider get user name = %s\n" + in.Name)
 	fmt.Println("get triple header tri-req-id = ", ctx.Value(tripleConstant.TripleCtxKey(tripleConstant.TripleRequestID)))
 	fmt.Println("get triple header tri-service-version = ", ctx.Value(tripleConstant.TripleCtxKey(tripleConstant.TripleServiceVersion)))
-	return &dubbo3.User{Name: "Hello " + in.Name, Id: "12345", Age: 21}, nil
+	return &triplepb.User{Name: "Hello " + in.Name, Id: "12345", Age: 21}, nil
 }
diff --git a/rpc/dubbo3/pb/dubbogo-grpc/server/grpcgo-server/main.go b/rpc/triple/pb/dubbogo-grpc/server/grpcgo-server/main.go
similarity index 93%
rename from rpc/dubbo3/pb/dubbogo-grpc/server/grpcgo-server/main.go
rename to rpc/triple/pb/dubbogo-grpc/server/grpcgo-server/main.go
index df828eb..7a914bd 100644
--- a/rpc/dubbo3/pb/dubbogo-grpc/server/grpcgo-server/main.go
+++ b/rpc/triple/pb/dubbogo-grpc/server/grpcgo-server/main.go
@@ -31,15 +31,17 @@ import (
 )
 
 import (
-	pb "github.com/apache/dubbo-go-samples/general/dubbo3/pb/dubbogo-grpc/protobuf/grpc"
+	pb "github.com/apache/dubbo-go-samples/rpc/triple/pb/dubbogo-grpc/protobuf/grpc"
 )
 
 const (
-	port = ":20001"
+	port = ":20000"
 )
 
 // GreeterProvider is used as provider
-type GreeterProvider struct{}
+type GreeterProvider struct{
+	pb.UnimplementedGreeterServer
+}
 
 func (s *GreeterProvider) SayHelloStream(svr pb.Greeter_SayHelloStreamServer) error {
 	c, err := svr.Recv()
diff --git a/rpc/dubbo3/pb/dubbogo-grpc/stream-client/dubbogo-client/cmd/client.go b/rpc/triple/pb/dubbogo-grpc/stream-client/dubbogo-client/cmd/client.go
similarity index 71%
rename from rpc/dubbo3/pb/dubbogo-grpc/stream-client/dubbogo-client/cmd/client.go
rename to rpc/triple/pb/dubbogo-grpc/stream-client/dubbogo-client/cmd/client.go
index 6f08767..46033d2 100644
--- a/rpc/dubbo3/pb/dubbogo-grpc/stream-client/dubbogo-client/cmd/client.go
+++ b/rpc/triple/pb/dubbogo-grpc/stream-client/dubbogo-client/cmd/client.go
@@ -23,31 +23,26 @@ 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/dubbo3"
-	_ "dubbo.apache.org/dubbo-go/v3/protocol/grpc"
-	_ "dubbo.apache.org/dubbo-go/v3/registry/protocol"
-	_ "dubbo.apache.org/dubbo-go/v3/registry/zookeeper"
+	_ "dubbo.apache.org/dubbo-go/v3/imports"
 )
 
 import (
-	dubbo3pb "github.com/apache/dubbo-go-samples/general/dubbo3/pb/dubbogo-grpc/protobuf/dubbo3"
+	triplepb "github.com/apache/dubbo-go-samples/rpc/triple/pb/dubbogo-grpc/protobuf/triple"
 )
 
-var greeterProvider = new(dubbo3pb.GreeterClientImpl)
+var greeterProvider = new(triplepb.GreeterClientImpl)
 
 func init() {
 	config.SetConsumerService(greeterProvider)
 }
 
-// need to setup environment variable "CONF_CONSUMER_FILE_PATH" to "conf/client.yml" before run
+// export DUBBO_GO_CONFIG_PATH=$PATH_TO_SAMPLES/rpc/triple/pb/dubbogo-grpc/stream-client/dubbogo-client/conf/dubbogo.yml
 func main() {
-	config.Load()
+	if err := config.Load(); err != nil {
+		panic(err)
+	}
 	time.Sleep(time.Second * 3)
 
 	testSayHello()
@@ -57,7 +52,7 @@ func testSayHello() {
 	ctx := context.Background()
 	ctx = context.WithValue(ctx, "tri-req-id", "triple-request-id-demo")
 
-	req := dubbo3pb.HelloRequest{
+	req := triplepb.HelloRequest{
 		Name: "laurence",
 	}
 
@@ -73,7 +68,7 @@ func testSayHello() {
 		}
 	}
 
-	rspUser := &dubbo3pb.User{}
+	rspUser := &triplepb.User{}
 	if err := r.RecvMsg(rspUser); err != nil {
 		logger.Errorf("Receive 1 SayHelloStream response user error = %v\n", err)
 		return
@@ -83,7 +78,7 @@ func testSayHello() {
 		logger.Errorf("Send SayHelloStream num %d request error = %v\n", 3, err)
 		return
 	}
-	rspUser2 := &dubbo3pb.User{}
+	rspUser2 := &triplepb.User{}
 	if err := r.RecvMsg(rspUser2); err != nil {
 		logger.Errorf("Receive 2 SayHelloStream response user error = %v\n", err)
 		return
diff --git a/rpc/triple/pb/dubbogo-grpc/stream-client/dubbogo-client/conf/dubbogo.yml b/rpc/triple/pb/dubbogo-grpc/stream-client/dubbogo-client/conf/dubbogo.yml
new file mode 100644
index 0000000..89b9dd2
--- /dev/null
+++ b/rpc/triple/pb/dubbogo-grpc/stream-client/dubbogo-client/conf/dubbogo.yml
@@ -0,0 +1,10 @@
+dubbo:
+  registries:
+    zk:
+      address: zookeeper://127.0.0.1:2181
+  consumer:
+    registry: zk
+    references:
+      greeterImpl:
+        protocol: tri
+        interface: org.apache.dubbo.Greeter
\ No newline at end of file
diff --git a/rpc/dubbo3/pb/dubbogo-grpc/stream-client/grpcgo-client/main.go b/rpc/triple/pb/dubbogo-grpc/stream-client/grpcgo-client/main.go
similarity index 93%
rename from rpc/dubbo3/pb/dubbogo-grpc/stream-client/grpcgo-client/main.go
rename to rpc/triple/pb/dubbogo-grpc/stream-client/grpcgo-client/main.go
index 0b84e61..68aa040 100644
--- a/rpc/dubbo3/pb/dubbogo-grpc/stream-client/grpcgo-client/main.go
+++ b/rpc/triple/pb/dubbogo-grpc/stream-client/grpcgo-client/main.go
@@ -29,11 +29,11 @@ import (
 )
 
 import (
-	pb "github.com/apache/dubbo-go-samples/general/dubbo3/pb/dubbogo-grpc/protobuf/grpc"
+	pb "github.com/apache/dubbo-go-samples/rpc/triple/pb/dubbogo-grpc/protobuf/grpc"
 )
 
 const (
-	address = "localhost:20001"
+	address = "localhost:20000"
 )
 
 func main() {
diff --git a/rpc/dubbo3/pb/dubbogo-grpc/unary-client/dubbogo-client/cmd/client.go b/rpc/triple/pb/dubbogo-grpc/unary-client/dubbogo-client/cmd/client.go
similarity index 64%
rename from rpc/dubbo3/pb/dubbogo-grpc/unary-client/dubbogo-client/cmd/client.go
rename to rpc/triple/pb/dubbogo-grpc/unary-client/dubbogo-client/cmd/client.go
index fc798a2..184ac41 100644
--- a/rpc/dubbo3/pb/dubbogo-grpc/unary-client/dubbogo-client/cmd/client.go
+++ b/rpc/triple/pb/dubbogo-grpc/unary-client/dubbogo-client/cmd/client.go
@@ -23,33 +23,28 @@ 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/dubbo3"
-	_ "dubbo.apache.org/dubbo-go/v3/protocol/grpc"
-	_ "dubbo.apache.org/dubbo-go/v3/registry/protocol"
-	_ "dubbo.apache.org/dubbo-go/v3/registry/zookeeper"
+	_ "dubbo.apache.org/dubbo-go/v3/imports"
 
 	tripleConstant "github.com/dubbogo/triple/pkg/common/constant"
 )
 
 import (
-	dubbo3pb "github.com/apache/dubbo-go-samples/general/dubbo3/pb/dubbogo-grpc/protobuf/dubbo3"
+	triplepb "github.com/apache/dubbo-go-samples/rpc/triple/pb/dubbogo-grpc/protobuf/triple"
 )
 
-var greeterProvider = new(dubbo3pb.GreeterClientImpl)
+var greeterProvider = new(triplepb.GreeterClientImpl)
 
 func init() {
 	config.SetConsumerService(greeterProvider)
 }
 
-// need to setup environment variable "CONF_CONSUMER_FILE_PATH" to "conf/client.yml" before run
+// export DUBBO_GO_CONFIG_PATH=$PATH_TO_SAMPLES/rpc/triple/pb/dubbogo-grpc/unary-client/dubbogo-client/conf/dubbogo.yml
 func main() {
-	config.Load()
+	if err := config.Load(); err != nil {
+		panic(err)
+	}
 	time.Sleep(time.Second * 3)
 
 	testSayHello()
@@ -59,11 +54,10 @@ func testSayHello() {
 	ctx := context.Background()
 	ctx = context.WithValue(ctx, tripleConstant.TripleCtxKey(tripleConstant.TripleRequestID), "triple-request-id-demo")
 
-	req := dubbo3pb.HelloRequest{
+	req := triplepb.HelloRequest{
 		Name: "laurence",
 	}
-	user := dubbo3pb.User{}
-	err := greeterProvider.SayHello(ctx, &req, &user)
+	user, err := greeterProvider.SayHello(ctx, &req)
 	if err != nil {
 		panic(err)
 	}
diff --git a/rpc/triple/pb/dubbogo-grpc/unary-client/dubbogo-client/conf/dubbogo.yml b/rpc/triple/pb/dubbogo-grpc/unary-client/dubbogo-client/conf/dubbogo.yml
new file mode 100644
index 0000000..89b9dd2
--- /dev/null
+++ b/rpc/triple/pb/dubbogo-grpc/unary-client/dubbogo-client/conf/dubbogo.yml
@@ -0,0 +1,10 @@
+dubbo:
+  registries:
+    zk:
+      address: zookeeper://127.0.0.1:2181
+  consumer:
+    registry: zk
+    references:
+      greeterImpl:
+        protocol: tri
+        interface: org.apache.dubbo.Greeter
\ No newline at end of file
diff --git a/rpc/dubbo3/pb/dubbogo-grpc/unary-client/grpcgo-client/main.go b/rpc/triple/pb/dubbogo-grpc/unary-client/grpcgo-client/main.go
similarity index 92%
rename from rpc/dubbo3/pb/dubbogo-grpc/unary-client/grpcgo-client/main.go
rename to rpc/triple/pb/dubbogo-grpc/unary-client/grpcgo-client/main.go
index d4a2220..9899de4 100644
--- a/rpc/dubbo3/pb/dubbogo-grpc/unary-client/grpcgo-client/main.go
+++ b/rpc/triple/pb/dubbogo-grpc/unary-client/grpcgo-client/main.go
@@ -29,11 +29,11 @@ import (
 )
 
 import (
-	pb "github.com/apache/dubbo-go-samples/general/dubbo3/pb/dubbogo-grpc/protobuf/grpc"
+	pb "github.com/apache/dubbo-go-samples/rpc/triple/pb/dubbogo-grpc/protobuf/grpc"
 )
 
 const (
-	address = "localhost:20001"
+	address = "localhost:20000"
 )
 
 func main() {
diff --git a/rpc/dubbo3/pb/dubbogo-java/README.md b/rpc/triple/pb/dubbogo-java/README.md
similarity index 100%
rename from rpc/dubbo3/pb/dubbogo-java/README.md
rename to rpc/triple/pb/dubbogo-java/README.md
diff --git a/rpc/dubbo3/pb/dubbogo-java/README_zh.md b/rpc/triple/pb/dubbogo-java/README_zh.md
similarity index 100%
rename from rpc/dubbo3/pb/dubbogo-java/README_zh.md
rename to rpc/triple/pb/dubbogo-java/README_zh.md
diff --git a/rpc/dubbo3/pb/dubbogo-java/go-client/cmd/client.go b/rpc/triple/pb/dubbogo-java/go-client/cmd/client.go
similarity index 67%
rename from rpc/dubbo3/pb/dubbogo-java/go-client/cmd/client.go
rename to rpc/triple/pb/dubbogo-java/go-client/cmd/client.go
index c8a1b28..dff136f 100644
--- a/rpc/dubbo3/pb/dubbogo-java/go-client/cmd/client.go
+++ b/rpc/triple/pb/dubbogo-java/go-client/cmd/client.go
@@ -24,21 +24,14 @@ 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/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/dubbo3"
-	_ "dubbo.apache.org/dubbo-go/v3/protocol/grpc"
-	_ "dubbo.apache.org/dubbo-go/v3/registry/protocol"
-	_ "dubbo.apache.org/dubbo-go/v3/registry/zookeeper"
+	_ "dubbo.apache.org/dubbo-go/v3/imports"
 
 	"github.com/dubbogo/gost/log"
 )
 
 import (
-	pb "github.com/apache/dubbo-go-samples/general/dubbo3/pb/dubbogo-java/protobuf"
+	pb "github.com/apache/dubbo-go-samples/rpc/triple/pb/dubbogo-java/protobuf"
 )
 
 var grpcGreeterImpl = new(pb.GreeterClientImpl)
@@ -47,9 +40,11 @@ func init() {
 	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/rpc/triple/pb/dubbogo-java/go-client/conf/dubbogo.yml
 func main() {
-	config.Load()
+	if err := config.Load(); err != nil {
+		panic(err)
+	}
 	time.Sleep(3 * time.Second)
 
 	gxlog.CInfo("\n\n\nstart to test dubbo")
@@ -62,7 +57,7 @@ func main() {
 	ctx := context.Background()
 	ctx = context.WithValue(ctx, "tri-req-id", "test_value_XXXXXXXX")
 
-	err := grpcGreeterImpl.SayHello(ctx, req, reply)
+	reply, err := grpcGreeterImpl.SayHello(ctx, req)
 	if err != nil {
 		panic(err)
 	}
diff --git a/rpc/triple/pb/dubbogo-java/go-client/conf/dubbogo.yml b/rpc/triple/pb/dubbogo-java/go-client/conf/dubbogo.yml
new file mode 100644
index 0000000..ac9303d
--- /dev/null
+++ b/rpc/triple/pb/dubbogo-java/go-client/conf/dubbogo.yml
@@ -0,0 +1,10 @@
+dubbo:
+  registries:
+    zk:
+      address: zookeeper://127.0.0.1:2181
+  consumer:
+    registry: zk
+    references:
+      greeterImpl:
+        protocol: tri
+        interface: org.apache.dubbo.demo.IGreeter
\ No newline at end of file
diff --git a/rpc/dubbo3/pb/dubbogo-java/go-server/cmd/server.go b/rpc/triple/pb/dubbogo-java/go-server/cmd/server.go
similarity index 74%
rename from rpc/dubbo3/pb/dubbogo-java/go-server/cmd/server.go
rename to rpc/triple/pb/dubbogo-java/go-server/cmd/server.go
index ff56011..ebb361d 100644
--- a/rpc/dubbo3/pb/dubbogo-java/go-server/cmd/server.go
+++ b/rpc/triple/pb/dubbogo-java/go-server/cmd/server.go
@@ -26,32 +26,27 @@ 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/dubbo3"
-	_ "dubbo.apache.org/dubbo-go/v3/registry/nacos"
-	_ "dubbo.apache.org/dubbo-go/v3/registry/protocol"
-	_ "dubbo.apache.org/dubbo-go/v3/registry/zookeeper"
+	_ "dubbo.apache.org/dubbo-go/v3/imports"
 
 	_ "github.com/dubbogo/triple/pkg/triple"
 )
 
 import (
-	"github.com/apache/dubbo-go-samples/general/dubbo3/pb/dubbogo-java/go-server/pkg"
+	"github.com/apache/dubbo-go-samples/rpc/triple/pb/dubbogo-java/go-server/pkg"
 )
 
 var (
 	survivalTimeout = int(3 * time.Second)
 )
 
-// need to setup environment variable "CONF_PROVIDER_FILE_PATH" to "conf/server.yml" before run
+// export DUBBO_GO_CONFIG_PATH=$PATH_TO_SAMPLES/rpc/triple/pb/dubbogo-java/go-server/conf/dubbogo.yml
 func main() {
 	config.SetProviderService(pkg.NewGreeterProvider())
-	config.Load()
+	if err := config.Load(); err != nil {
+		panic(err)
+	}
 	initSignal()
 }
 
diff --git a/rpc/triple/pb/dubbogo-java/go-server/conf/dubbogo.yml b/rpc/triple/pb/dubbogo-java/go-server/conf/dubbogo.yml
new file mode 100644
index 0000000..7efa6c4
--- /dev/null
+++ b/rpc/triple/pb/dubbogo-java/go-server/conf/dubbogo.yml
@@ -0,0 +1,16 @@
+dubbo:
+  registries:
+    zk:
+      address: zookeeper://127.0.0.1:2181
+  protocols:
+    triple:
+      name: tri
+      port: 20001
+  provider:
+    registry: zk
+    services:
+      # you may refer to `Reference()` method defined at `protobuf/helloworld.pb.go`
+      greeterImpl:
+        protocol: triple
+        # interface is for registry
+        interface: org.apache.dubbo.demo.IGreeter
\ No newline at end of file
diff --git a/rpc/dubbo3/pb/dubbogo-java/go-server/pkg/greeter.go b/rpc/triple/pb/dubbogo-java/go-server/pkg/greeter.go
similarity index 94%
rename from rpc/dubbo3/pb/dubbogo-java/go-server/pkg/greeter.go
rename to rpc/triple/pb/dubbogo-java/go-server/pkg/greeter.go
index ced01a0..c5b242a 100644
--- a/rpc/dubbo3/pb/dubbogo-java/go-server/pkg/greeter.go
+++ b/rpc/triple/pb/dubbogo-java/go-server/pkg/greeter.go
@@ -26,7 +26,7 @@ import (
 )
 
 import (
-	pb "github.com/apache/dubbo-go-samples/general/dubbo3/pb/dubbogo-java/protobuf"
+	pb "github.com/apache/dubbo-go-samples/rpc/triple/pb/dubbogo-java/protobuf"
 )
 
 type GreeterProvider struct {
diff --git a/rpc/dubbo3/pb/dubbogo-java/java-client/pom.xml b/rpc/triple/pb/dubbogo-java/java-client/pom.xml
similarity index 99%
rename from rpc/dubbo3/pb/dubbogo-java/java-client/pom.xml
rename to rpc/triple/pb/dubbogo-java/java-client/pom.xml
index 10ae5bb..4cf91bd 100644
--- a/rpc/dubbo3/pb/dubbogo-java/java-client/pom.xml
+++ b/rpc/triple/pb/dubbogo-java/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/rpc/dubbo3/hessian2/java-client/run.sh b/rpc/triple/pb/dubbogo-java/java-client/run.sh
similarity index 100%
rename from rpc/dubbo3/hessian2/java-client/run.sh
rename to rpc/triple/pb/dubbogo-java/java-client/run.sh
diff --git a/rpc/dubbo3/pb/dubbogo-java/java-client/src/main/java/com/apache/dubbo/sample/basic/ApiConsumer.java b/rpc/triple/pb/dubbogo-java/java-client/src/main/java/org/apache/dubbo/demo/ApiConsumer.java
similarity index 89%
rename from rpc/dubbo3/pb/dubbogo-java/java-client/src/main/java/com/apache/dubbo/sample/basic/ApiConsumer.java
rename to rpc/triple/pb/dubbogo-java/java-client/src/main/java/org/apache/dubbo/demo/ApiConsumer.java
index 71e5f2a..fbf3605 100644
--- a/rpc/dubbo3/pb/dubbogo-java/java-client/src/main/java/com/apache/dubbo/sample/basic/ApiConsumer.java
+++ b/rpc/triple/pb/dubbogo-java/java-client/src/main/java/org/apache/dubbo/demo/ApiConsumer.java
@@ -15,13 +15,12 @@
  *  limitations under the License.
  */
 
-package com.apache.dubbo.sample.basic;
+package org.apache.dubbo.demo;
 
 import org.apache.dubbo.common.constants.CommonConstants;
 import org.apache.dubbo.config.ApplicationConfig;
 import org.apache.dubbo.config.ReferenceConfig;
 import org.apache.dubbo.config.RegistryConfig;
-import org.apache.dubbo.sample.hello.Helloworld;
 
 import java.io.IOException;
 import java.util.concurrent.TimeUnit;
@@ -39,9 +38,9 @@ public class ApiConsumer {
         final IGreeter iGreeter = ref.get();
 
         System.out.println("dubbo ref started");
-        Helloworld.HelloRequest req = Helloworld.HelloRequest.newBuilder().setName("laurence").build();
+        HelloWorld.HelloRequest req = HelloWorld.HelloRequest.newBuilder().setName("laurence").build();
         try {
-            final Helloworld.User reply = iGreeter.sayHello(req);
+            final HelloWorld.User reply = iGreeter.sayHello(req);
             TimeUnit.SECONDS.sleep(1);
             System.out.println("Reply:" + reply);
         } catch (Throwable t) {
diff --git a/rpc/dubbo3/pb/dubbogo-java/java-client/build/generated/source/proto/main/java/org/apache/dubbo/sample/hello/Helloworld.java b/rpc/triple/pb/dubbogo-java/java-client/src/main/java/org/apache/dubbo/demo/HelloWorld.java
similarity index 81%
rename from rpc/dubbo3/pb/dubbogo-java/java-client/build/generated/source/proto/main/java/org/apache/dubbo/sample/hello/Helloworld.java
rename to rpc/triple/pb/dubbogo-java/java-client/src/main/java/org/apache/dubbo/demo/HelloWorld.java
index 99758ac..dc23698 100644
--- a/rpc/dubbo3/pb/dubbogo-java/java-client/build/generated/source/proto/main/java/org/apache/dubbo/sample/hello/Helloworld.java
+++ b/rpc/triple/pb/dubbogo-java/java-client/src/main/java/org/apache/dubbo/demo/HelloWorld.java
@@ -1,10 +1,10 @@
 // Generated by the protocol buffer compiler.  DO NOT EDIT!
-// source: helloworld.proto
+// source: HelloWorld.proto
 
-package org.apache.dubbo.sample.hello;
+package org.apache.dubbo.demo;
 
-public final class Helloworld {
-  private Helloworld() {}
+public final class HelloWorld {
+  private HelloWorld() {}
   public static void registerAllExtensions(
       com.google.protobuf.ExtensionRegistryLite registry) {
   }
@@ -15,7 +15,7 @@ public final class Helloworld {
         (com.google.protobuf.ExtensionRegistryLite) registry);
   }
   public interface HelloRequestOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:helloworld.HelloRequest)
+      // @@protoc_insertion_point(interface_extends:org.apache.dubbo.demo.HelloRequest)
       com.google.protobuf.MessageOrBuilder {
 
     /**
@@ -35,11 +35,11 @@ public final class Helloworld {
    * The request message containing the user's name.
    * </pre>
    *
-   * Protobuf type {@code helloworld.HelloRequest}
+   * Protobuf type {@code org.apache.dubbo.demo.HelloRequest}
    */
   public static final class HelloRequest extends
       com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:helloworld.HelloRequest)
+      // @@protoc_insertion_point(message_implements:org.apache.dubbo.demo.HelloRequest)
       HelloRequestOrBuilder {
   private static final long serialVersionUID = 0L;
     // Use HelloRequest.newBuilder() to construct.
@@ -107,15 +107,15 @@ public final class Helloworld {
     }
     public static final com.google.protobuf.Descriptors.Descriptor
         getDescriptor() {
-      return org.apache.dubbo.sample.hello.Helloworld.internal_static_helloworld_HelloRequest_descriptor;
+      return org.apache.dubbo.demo.HelloWorld.internal_static_org_apache_dubbo_demo_HelloRequest_descriptor;
     }
 
     @java.lang.Override
     protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
         internalGetFieldAccessorTable() {
-      return org.apache.dubbo.sample.hello.Helloworld.internal_static_helloworld_HelloRequest_fieldAccessorTable
+      return org.apache.dubbo.demo.HelloWorld.internal_static_org_apache_dubbo_demo_HelloRequest_fieldAccessorTable
           .ensureFieldAccessorsInitialized(
-              org.apache.dubbo.sample.hello.Helloworld.HelloRequest.class, org.apache.dubbo.sample.hello.Helloworld.HelloRequest.Builder.class);
+              org.apache.dubbo.demo.HelloWorld.HelloRequest.class, org.apache.dubbo.demo.HelloWorld.HelloRequest.Builder.class);
     }
 
     public static final int NAME_FIELD_NUMBER = 1;
@@ -195,10 +195,10 @@ public final class Helloworld {
       if (obj == this) {
        return true;
       }
-      if (!(obj instanceof org.apache.dubbo.sample.hello.Helloworld.HelloRequest)) {
+      if (!(obj instanceof org.apache.dubbo.demo.HelloWorld.HelloRequest)) {
         return super.equals(obj);
       }
-      org.apache.dubbo.sample.hello.Helloworld.HelloRequest other = (org.apache.dubbo.sample.hello.Helloworld.HelloRequest) obj;
+      org.apache.dubbo.demo.HelloWorld.HelloRequest other = (org.apache.dubbo.demo.HelloWorld.HelloRequest) obj;
 
       if (!getName()
           .equals(other.getName())) return false;
@@ -220,69 +220,69 @@ public final class Helloworld {
       return hash;
     }
 
-    public static org.apache.dubbo.sample.hello.Helloworld.HelloRequest parseFrom(
+    public static org.apache.dubbo.demo.HelloWorld.HelloRequest parseFrom(
         java.nio.ByteBuffer data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static org.apache.dubbo.sample.hello.Helloworld.HelloRequest parseFrom(
+    public static org.apache.dubbo.demo.HelloWorld.HelloRequest parseFrom(
         java.nio.ByteBuffer data,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data, extensionRegistry);
     }
-    public static org.apache.dubbo.sample.hello.Helloworld.HelloRequest parseFrom(
+    public static org.apache.dubbo.demo.HelloWorld.HelloRequest parseFrom(
         com.google.protobuf.ByteString data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static org.apache.dubbo.sample.hello.Helloworld.HelloRequest parseFrom(
+    public static org.apache.dubbo.demo.HelloWorld.HelloRequest parseFrom(
         com.google.protobuf.ByteString data,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data, extensionRegistry);
     }
-    public static org.apache.dubbo.sample.hello.Helloworld.HelloRequest parseFrom(byte[] data)
+    public static org.apache.dubbo.demo.HelloWorld.HelloRequest parseFrom(byte[] data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static org.apache.dubbo.sample.hello.Helloworld.HelloRequest parseFrom(
+    public static org.apache.dubbo.demo.HelloWorld.HelloRequest parseFrom(
         byte[] data,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data, extensionRegistry);
     }
-    public static org.apache.dubbo.sample.hello.Helloworld.HelloRequest parseFrom(java.io.InputStream input)
+    public static org.apache.dubbo.demo.HelloWorld.HelloRequest parseFrom(java.io.InputStream input)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input);
     }
-    public static org.apache.dubbo.sample.hello.Helloworld.HelloRequest parseFrom(
+    public static org.apache.dubbo.demo.HelloWorld.HelloRequest parseFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
-    public static org.apache.dubbo.sample.hello.Helloworld.HelloRequest parseDelimitedFrom(java.io.InputStream input)
+    public static org.apache.dubbo.demo.HelloWorld.HelloRequest parseDelimitedFrom(java.io.InputStream input)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessageV3
           .parseDelimitedWithIOException(PARSER, input);
     }
-    public static org.apache.dubbo.sample.hello.Helloworld.HelloRequest parseDelimitedFrom(
+    public static org.apache.dubbo.demo.HelloWorld.HelloRequest parseDelimitedFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessageV3
           .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
     }
-    public static org.apache.dubbo.sample.hello.Helloworld.HelloRequest parseFrom(
+    public static org.apache.dubbo.demo.HelloWorld.HelloRequest parseFrom(
         com.google.protobuf.CodedInputStream input)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input);
     }
-    public static org.apache.dubbo.sample.hello.Helloworld.HelloRequest parseFrom(
+    public static org.apache.dubbo.demo.HelloWorld.HelloRequest parseFrom(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
@@ -295,7 +295,7 @@ public final class Helloworld {
     public static Builder newBuilder() {
       return DEFAULT_INSTANCE.toBuilder();
     }
-    public static Builder newBuilder(org.apache.dubbo.sample.hello.Helloworld.HelloRequest prototype) {
+    public static Builder newBuilder(org.apache.dubbo.demo.HelloWorld.HelloRequest prototype) {
       return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
     }
     @java.lang.Override
@@ -315,26 +315,26 @@ public final class Helloworld {
      * The request message containing the user's name.
      * </pre>
      *
-     * Protobuf type {@code helloworld.HelloRequest}
+     * Protobuf type {@code org.apache.dubbo.demo.HelloRequest}
      */
     public static final class Builder extends
         com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:helloworld.HelloRequest)
-        org.apache.dubbo.sample.hello.Helloworld.HelloRequestOrBuilder {
+        // @@protoc_insertion_point(builder_implements:org.apache.dubbo.demo.HelloRequest)
+        org.apache.dubbo.demo.HelloWorld.HelloRequestOrBuilder {
       public static final com.google.protobuf.Descriptors.Descriptor
           getDescriptor() {
-        return org.apache.dubbo.sample.hello.Helloworld.internal_static_helloworld_HelloRequest_descriptor;
+        return org.apache.dubbo.demo.HelloWorld.internal_static_org_apache_dubbo_demo_HelloRequest_descriptor;
       }
 
       @java.lang.Override
       protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
           internalGetFieldAccessorTable() {
-        return org.apache.dubbo.sample.hello.Helloworld.internal_static_helloworld_HelloRequest_fieldAccessorTable
+        return org.apache.dubbo.demo.HelloWorld.internal_static_org_apache_dubbo_demo_HelloRequest_fieldAccessorTable
             .ensureFieldAccessorsInitialized(
-                org.apache.dubbo.sample.hello.Helloworld.HelloRequest.class, org.apache.dubbo.sample.hello.Helloworld.HelloRequest.Builder.class);
+                org.apache.dubbo.demo.HelloWorld.HelloRequest.class, org.apache.dubbo.demo.HelloWorld.HelloRequest.Builder.class);
       }
 
-      // Construct using org.apache.dubbo.sample.hello.Helloworld.HelloRequest.newBuilder()
+      // Construct using org.apache.dubbo.demo.HelloWorld.HelloRequest.newBuilder()
       private Builder() {
         maybeForceBuilderInitialization();
       }
@@ -360,17 +360,17 @@ public final class Helloworld {
       @java.lang.Override
       public com.google.protobuf.Descriptors.Descriptor
           getDescriptorForType() {
-        return org.apache.dubbo.sample.hello.Helloworld.internal_static_helloworld_HelloRequest_descriptor;
+        return org.apache.dubbo.demo.HelloWorld.internal_static_org_apache_dubbo_demo_HelloRequest_descriptor;
       }
 
       @java.lang.Override
-      public org.apache.dubbo.sample.hello.Helloworld.HelloRequest getDefaultInstanceForType() {
-        return org.apache.dubbo.sample.hello.Helloworld.HelloRequest.getDefaultInstance();
+      public org.apache.dubbo.demo.HelloWorld.HelloRequest getDefaultInstanceForType() {
+        return org.apache.dubbo.demo.HelloWorld.HelloRequest.getDefaultInstance();
       }
 
       @java.lang.Override
-      public org.apache.dubbo.sample.hello.Helloworld.HelloRequest build() {
-        org.apache.dubbo.sample.hello.Helloworld.HelloRequest result = buildPartial();
+      public org.apache.dubbo.demo.HelloWorld.HelloRequest build() {
+        org.apache.dubbo.demo.HelloWorld.HelloRequest result = buildPartial();
         if (!result.isInitialized()) {
           throw newUninitializedMessageException(result);
         }
@@ -378,8 +378,8 @@ public final class Helloworld {
       }
 
       @java.lang.Override
-      public org.apache.dubbo.sample.hello.Helloworld.HelloRequest buildPartial() {
-        org.apache.dubbo.sample.hello.Helloworld.HelloRequest result = new org.apache.dubbo.sample.hello.Helloworld.HelloRequest(this);
+      public org.apache.dubbo.demo.HelloWorld.HelloRequest buildPartial() {
+        org.apache.dubbo.demo.HelloWorld.HelloRequest result = new org.apache.dubbo.demo.HelloWorld.HelloRequest(this);
         result.name_ = name_;
         onBuilt();
         return result;
@@ -419,16 +419,16 @@ public final class Helloworld {
       }
       @java.lang.Override
       public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof org.apache.dubbo.sample.hello.Helloworld.HelloRequest) {
-          return mergeFrom((org.apache.dubbo.sample.hello.Helloworld.HelloRequest)other);
+        if (other instanceof org.apache.dubbo.demo.HelloWorld.HelloRequest) {
+          return mergeFrom((org.apache.dubbo.demo.HelloWorld.HelloRequest)other);
         } else {
           super.mergeFrom(other);
           return this;
         }
       }
 
-      public Builder mergeFrom(org.apache.dubbo.sample.hello.Helloworld.HelloRequest other) {
-        if (other == org.apache.dubbo.sample.hello.Helloworld.HelloRequest.getDefaultInstance()) return this;
+      public Builder mergeFrom(org.apache.dubbo.demo.HelloWorld.HelloRequest other) {
+        if (other == org.apache.dubbo.demo.HelloWorld.HelloRequest.getDefaultInstance()) return this;
         if (!other.getName().isEmpty()) {
           name_ = other.name_;
           onChanged();
@@ -448,11 +448,11 @@ public final class Helloworld {
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws java.io.IOException {
-        org.apache.dubbo.sample.hello.Helloworld.HelloRequest parsedMessage = null;
+        org.apache.dubbo.demo.HelloWorld.HelloRequest parsedMessage = null;
         try {
           parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
         } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (org.apache.dubbo.sample.hello.Helloworld.HelloRequest) e.getUnfinishedMessage();
+          parsedMessage = (org.apache.dubbo.demo.HelloWorld.HelloRequest) e.getUnfinishedMessage();
           throw e.unwrapIOException();
         } finally {
           if (parsedMessage != null) {
@@ -550,16 +550,16 @@ public final class Helloworld {
       }
 
 
-      // @@protoc_insertion_point(builder_scope:helloworld.HelloRequest)
+      // @@protoc_insertion_point(builder_scope:org.apache.dubbo.demo.HelloRequest)
     }
 
-    // @@protoc_insertion_point(class_scope:helloworld.HelloRequest)
-    private static final org.apache.dubbo.sample.hello.Helloworld.HelloRequest DEFAULT_INSTANCE;
+    // @@protoc_insertion_point(class_scope:org.apache.dubbo.demo.HelloRequest)
+    private static final org.apache.dubbo.demo.HelloWorld.HelloRequest DEFAULT_INSTANCE;
     static {
-      DEFAULT_INSTANCE = new org.apache.dubbo.sample.hello.Helloworld.HelloRequest();
+      DEFAULT_INSTANCE = new org.apache.dubbo.demo.HelloWorld.HelloRequest();
     }
 
-    public static org.apache.dubbo.sample.hello.Helloworld.HelloRequest getDefaultInstance() {
+    public static org.apache.dubbo.demo.HelloWorld.HelloRequest getDefaultInstance() {
       return DEFAULT_INSTANCE;
     }
 
@@ -584,14 +584,14 @@ public final class Helloworld {
     }
 
     @java.lang.Override
-    public org.apache.dubbo.sample.hello.Helloworld.HelloRequest getDefaultInstanceForType() {
+    public org.apache.dubbo.demo.HelloWorld.HelloRequest getDefaultInstanceForType() {
       return DEFAULT_INSTANCE;
     }
 
   }
 
   public interface UserOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:helloworld.User)
+      // @@protoc_insertion_point(interface_extends:org.apache.dubbo.demo.User)
       com.google.protobuf.MessageOrBuilder {
 
     /**
@@ -629,11 +629,11 @@ public final class Helloworld {
    * The response message containing the greetings
    * </pre>
    *
-   * Protobuf type {@code helloworld.User}
+   * Protobuf type {@code org.apache.dubbo.demo.User}
    */
   public static final class User extends
       com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:helloworld.User)
+      // @@protoc_insertion_point(message_implements:org.apache.dubbo.demo.User)
       UserOrBuilder {
   private static final long serialVersionUID = 0L;
     // Use User.newBuilder() to construct.
@@ -713,15 +713,15 @@ public final class Helloworld {
     }
     public static final com.google.protobuf.Descriptors.Descriptor
         getDescriptor() {
-      return org.apache.dubbo.sample.hello.Helloworld.internal_static_helloworld_User_descriptor;
+      return org.apache.dubbo.demo.HelloWorld.internal_static_org_apache_dubbo_demo_User_descriptor;
     }
 
     @java.lang.Override
     protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
         internalGetFieldAccessorTable() {
-      return org.apache.dubbo.sample.hello.Helloworld.internal_static_helloworld_User_fieldAccessorTable
+      return org.apache.dubbo.demo.HelloWorld.internal_static_org_apache_dubbo_demo_User_fieldAccessorTable
           .ensureFieldAccessorsInitialized(
-              org.apache.dubbo.sample.hello.Helloworld.User.class, org.apache.dubbo.sample.hello.Helloworld.User.Builder.class);
+              org.apache.dubbo.demo.HelloWorld.User.class, org.apache.dubbo.demo.HelloWorld.User.Builder.class);
     }
 
     public static final int NAME_FIELD_NUMBER = 1;
@@ -863,10 +863,10 @@ public final class Helloworld {
       if (obj == this) {
        return true;
       }
-      if (!(obj instanceof org.apache.dubbo.sample.hello.Helloworld.User)) {
+      if (!(obj instanceof org.apache.dubbo.demo.HelloWorld.User)) {
         return super.equals(obj);
       }
-      org.apache.dubbo.sample.hello.Helloworld.User other = (org.apache.dubbo.sample.hello.Helloworld.User) obj;
+      org.apache.dubbo.demo.HelloWorld.User other = (org.apache.dubbo.demo.HelloWorld.User) obj;
 
       if (!getName()
           .equals(other.getName())) return false;
@@ -896,69 +896,69 @@ public final class Helloworld {
       return hash;
     }
 
-    public static org.apache.dubbo.sample.hello.Helloworld.User parseFrom(
+    public static org.apache.dubbo.demo.HelloWorld.User parseFrom(
         java.nio.ByteBuffer data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static org.apache.dubbo.sample.hello.Helloworld.User parseFrom(
+    public static org.apache.dubbo.demo.HelloWorld.User parseFrom(
         java.nio.ByteBuffer data,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data, extensionRegistry);
     }
-    public static org.apache.dubbo.sample.hello.Helloworld.User parseFrom(
+    public static org.apache.dubbo.demo.HelloWorld.User parseFrom(
         com.google.protobuf.ByteString data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static org.apache.dubbo.sample.hello.Helloworld.User parseFrom(
+    public static org.apache.dubbo.demo.HelloWorld.User parseFrom(
         com.google.protobuf.ByteString data,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data, extensionRegistry);
     }
-    public static org.apache.dubbo.sample.hello.Helloworld.User parseFrom(byte[] data)
+    public static org.apache.dubbo.demo.HelloWorld.User parseFrom(byte[] data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static org.apache.dubbo.sample.hello.Helloworld.User parseFrom(
+    public static org.apache.dubbo.demo.HelloWorld.User parseFrom(
         byte[] data,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data, extensionRegistry);
     }
-    public static org.apache.dubbo.sample.hello.Helloworld.User parseFrom(java.io.InputStream input)
+    public static org.apache.dubbo.demo.HelloWorld.User parseFrom(java.io.InputStream input)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input);
     }
-    public static org.apache.dubbo.sample.hello.Helloworld.User parseFrom(
+    public static org.apache.dubbo.demo.HelloWorld.User parseFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
-    public static org.apache.dubbo.sample.hello.Helloworld.User parseDelimitedFrom(java.io.InputStream input)
+    public static org.apache.dubbo.demo.HelloWorld.User parseDelimitedFrom(java.io.InputStream input)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessageV3
           .parseDelimitedWithIOException(PARSER, input);
     }
-    public static org.apache.dubbo.sample.hello.Helloworld.User parseDelimitedFrom(
+    public static org.apache.dubbo.demo.HelloWorld.User parseDelimitedFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessageV3
           .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
     }
-    public static org.apache.dubbo.sample.hello.Helloworld.User parseFrom(
+    public static org.apache.dubbo.demo.HelloWorld.User parseFrom(
         com.google.protobuf.CodedInputStream input)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input);
     }
-    public static org.apache.dubbo.sample.hello.Helloworld.User parseFrom(
+    public static org.apache.dubbo.demo.HelloWorld.User parseFrom(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
@@ -971,7 +971,7 @@ public final class Helloworld {
     public static Builder newBuilder() {
       return DEFAULT_INSTANCE.toBuilder();
     }
-    public static Builder newBuilder(org.apache.dubbo.sample.hello.Helloworld.User prototype) {
+    public static Builder newBuilder(org.apache.dubbo.demo.HelloWorld.User prototype) {
       return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
     }
     @java.lang.Override
@@ -991,26 +991,26 @@ public final class Helloworld {
      * The response message containing the greetings
      * </pre>
      *
-     * Protobuf type {@code helloworld.User}
+     * Protobuf type {@code org.apache.dubbo.demo.User}
      */
     public static final class Builder extends
         com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:helloworld.User)
-        org.apache.dubbo.sample.hello.Helloworld.UserOrBuilder {
+        // @@protoc_insertion_point(builder_implements:org.apache.dubbo.demo.User)
+        org.apache.dubbo.demo.HelloWorld.UserOrBuilder {
       public static final com.google.protobuf.Descriptors.Descriptor
           getDescriptor() {
-        return org.apache.dubbo.sample.hello.Helloworld.internal_static_helloworld_User_descriptor;
+        return org.apache.dubbo.demo.HelloWorld.internal_static_org_apache_dubbo_demo_User_descriptor;
       }
 
       @java.lang.Override
       protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
           internalGetFieldAccessorTable() {
-        return org.apache.dubbo.sample.hello.Helloworld.internal_static_helloworld_User_fieldAccessorTable
+        return org.apache.dubbo.demo.HelloWorld.internal_static_org_apache_dubbo_demo_User_fieldAccessorTable
             .ensureFieldAccessorsInitialized(
-                org.apache.dubbo.sample.hello.Helloworld.User.class, org.apache.dubbo.sample.hello.Helloworld.User.Builder.class);
+                org.apache.dubbo.demo.HelloWorld.User.class, org.apache.dubbo.demo.HelloWorld.User.Builder.class);
       }
 
-      // Construct using org.apache.dubbo.sample.hello.Helloworld.User.newBuilder()
+      // Construct using org.apache.dubbo.demo.HelloWorld.User.newBuilder()
       private Builder() {
         maybeForceBuilderInitialization();
       }
@@ -1040,17 +1040,17 @@ public final class Helloworld {
       @java.lang.Override
       public com.google.protobuf.Descriptors.Descriptor
           getDescriptorForType() {
-        return org.apache.dubbo.sample.hello.Helloworld.internal_static_helloworld_User_descriptor;
+        return org.apache.dubbo.demo.HelloWorld.internal_static_org_apache_dubbo_demo_User_descriptor;
       }
 
       @java.lang.Override
-      public org.apache.dubbo.sample.hello.Helloworld.User getDefaultInstanceForType() {
-        return org.apache.dubbo.sample.hello.Helloworld.User.getDefaultInstance();
+      public org.apache.dubbo.demo.HelloWorld.User getDefaultInstanceForType() {
+        return org.apache.dubbo.demo.HelloWorld.User.getDefaultInstance();
       }
 
       @java.lang.Override
-      public org.apache.dubbo.sample.hello.Helloworld.User build() {
-        org.apache.dubbo.sample.hello.Helloworld.User result = buildPartial();
+      public org.apache.dubbo.demo.HelloWorld.User build() {
+        org.apache.dubbo.demo.HelloWorld.User result = buildPartial();
         if (!result.isInitialized()) {
           throw newUninitializedMessageException(result);
         }
@@ -1058,8 +1058,8 @@ public final class Helloworld {
       }
 
       @java.lang.Override
-      public org.apache.dubbo.sample.hello.Helloworld.User buildPartial() {
-        org.apache.dubbo.sample.hello.Helloworld.User result = new org.apache.dubbo.sample.hello.Helloworld.User(this);
+      public org.apache.dubbo.demo.HelloWorld.User buildPartial() {
+        org.apache.dubbo.demo.HelloWorld.User result = new org.apache.dubbo.demo.HelloWorld.User(this);
         result.name_ = name_;
         result.id_ = id_;
         result.age_ = age_;
@@ -1101,16 +1101,16 @@ public final class Helloworld {
       }
       @java.lang.Override
       public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof org.apache.dubbo.sample.hello.Helloworld.User) {
-          return mergeFrom((org.apache.dubbo.sample.hello.Helloworld.User)other);
+        if (other instanceof org.apache.dubbo.demo.HelloWorld.User) {
+          return mergeFrom((org.apache.dubbo.demo.HelloWorld.User)other);
         } else {
           super.mergeFrom(other);
           return this;
         }
       }
 
-      public Builder mergeFrom(org.apache.dubbo.sample.hello.Helloworld.User other) {
-        if (other == org.apache.dubbo.sample.hello.Helloworld.User.getDefaultInstance()) return this;
+      public Builder mergeFrom(org.apache.dubbo.demo.HelloWorld.User other) {
+        if (other == org.apache.dubbo.demo.HelloWorld.User.getDefaultInstance()) return this;
         if (!other.getName().isEmpty()) {
           name_ = other.name_;
           onChanged();
@@ -1137,11 +1137,11 @@ public final class Helloworld {
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws java.io.IOException {
-        org.apache.dubbo.sample.hello.Helloworld.User parsedMessage = null;
+        org.apache.dubbo.demo.HelloWorld.User parsedMessage = null;
         try {
           parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
         } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (org.apache.dubbo.sample.hello.Helloworld.User) e.getUnfinishedMessage();
+          parsedMessage = (org.apache.dubbo.demo.HelloWorld.User) e.getUnfinishedMessage();
           throw e.unwrapIOException();
         } finally {
           if (parsedMessage != null) {
@@ -1346,16 +1346,16 @@ public final class Helloworld {
       }
 
 
-      // @@protoc_insertion_point(builder_scope:helloworld.User)
+      // @@protoc_insertion_point(builder_scope:org.apache.dubbo.demo.User)
     }
 
-    // @@protoc_insertion_point(class_scope:helloworld.User)
-    private static final org.apache.dubbo.sample.hello.Helloworld.User DEFAULT_INSTANCE;
+    // @@protoc_insertion_point(class_scope:org.apache.dubbo.demo.User)
+    private static final org.apache.dubbo.demo.HelloWorld.User DEFAULT_INSTANCE;
     static {
-      DEFAULT_INSTANCE = new org.apache.dubbo.sample.hello.Helloworld.User();
+      DEFAULT_INSTANCE = new org.apache.dubbo.demo.HelloWorld.User();
     }
 
-    public static org.apache.dubbo.sample.hello.Helloworld.User getDefaultInstance() {
+    public static org.apache.dubbo.demo.HelloWorld.User getDefaultInstance() {
       return DEFAULT_INSTANCE;
     }
 
@@ -1380,22 +1380,22 @@ public final class Helloworld {
     }
 
     @java.lang.Override
-    public org.apache.dubbo.sample.hello.Helloworld.User getDefaultInstanceForType() {
+    public org.apache.dubbo.demo.HelloWorld.User getDefaultInstanceForType() {
       return DEFAULT_INSTANCE;
     }
 
   }
 
   private static final com.google.protobuf.Descriptors.Descriptor
-    internal_static_helloworld_HelloRequest_descriptor;
+    internal_static_org_apache_dubbo_demo_HelloRequest_descriptor;
   private static final 
     com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-      internal_static_helloworld_HelloRequest_fieldAccessorTable;
+      internal_static_org_apache_dubbo_demo_HelloRequest_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
-    internal_static_helloworld_User_descriptor;
+    internal_static_org_apache_dubbo_demo_User_descriptor;
   private static final 
     com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-      internal_static_helloworld_User_fieldAccessorTable;
+      internal_static_org_apache_dubbo_demo_User_fieldAccessorTable;
 
   public static com.google.protobuf.Descriptors.FileDescriptor
       getDescriptor() {
@@ -1405,26 +1405,26 @@ public final class Helloworld {
       descriptor;
   static {
     java.lang.String[] descriptorData = {
-      "\n\020helloworld.proto\022\nhelloworld\"\034\n\014HelloR" +
-      "equest\022\014\n\004name\030\001 \001(\t\"-\n\004User\022\014\n\004name\030\001 \001" +
-      "(\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"
+      "\n\020HelloWorld.proto\022\025org.apache.dubbo.dem" +
+      "o\"\034\n\014HelloRequest\022\014\n\004name\030\001 \001(\t\"-\n\004User\022" +
+      "\014\n\004name\030\001 \001(\t\022\n\n\002id\030\002 \001(\t\022\013\n\003age\030\003 \001(\005B\027" +
+      "\n\025org.apache.dubbo.demob\006proto3"
     };
     descriptor = com.google.protobuf.Descriptors.FileDescriptor
       .internalBuildGeneratedFileFrom(descriptorData,
         new com.google.protobuf.Descriptors.FileDescriptor[] {
         });
-    internal_static_helloworld_HelloRequest_descriptor =
+    internal_static_org_apache_dubbo_demo_HelloRequest_descriptor =
       getDescriptor().getMessageTypes().get(0);
-    internal_static_helloworld_HelloRequest_fieldAccessorTable = new
+    internal_static_org_apache_dubbo_demo_HelloRequest_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
-        internal_static_helloworld_HelloRequest_descriptor,
+        internal_static_org_apache_dubbo_demo_HelloRequest_descriptor,
         new java.lang.String[] { "Name", });
-    internal_static_helloworld_User_descriptor =
+    internal_static_org_apache_dubbo_demo_User_descriptor =
       getDescriptor().getMessageTypes().get(1);
-    internal_static_helloworld_User_fieldAccessorTable = new
+    internal_static_org_apache_dubbo_demo_User_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
-        internal_static_helloworld_User_descriptor,
+        internal_static_org_apache_dubbo_demo_User_descriptor,
         new java.lang.String[] { "Name", "Id", "Age", });
   }
 
diff --git a/rpc/dubbo3/pb/dubbogo-java/java-server/src/main/java/com/apache/dubbo/sample/basic/IGreeter.java b/rpc/triple/pb/dubbogo-java/java-client/src/main/java/org/apache/dubbo/demo/IGreeter.java
similarity index 85%
rename from rpc/dubbo3/pb/dubbogo-java/java-server/src/main/java/com/apache/dubbo/sample/basic/IGreeter.java
rename to rpc/triple/pb/dubbogo-java/java-client/src/main/java/org/apache/dubbo/demo/IGreeter.java
index e8aa2fe..3db1c45 100644
--- a/rpc/dubbo3/pb/dubbogo-java/java-server/src/main/java/com/apache/dubbo/sample/basic/IGreeter.java
+++ b/rpc/triple/pb/dubbogo-java/java-client/src/main/java/org/apache/dubbo/demo/IGreeter.java
@@ -15,9 +15,9 @@
  *  limitations under the License.
  */
 
-package com.apache.dubbo.sample.basic;
+package org.apache.dubbo.demo;
 
-import org.apache.dubbo.sample.hello.Helloworld;
+import org.apache.dubbo.demo.HelloWorld;
 
 public interface IGreeter {
     /**
@@ -25,6 +25,6 @@ public interface IGreeter {
      *  Sends a greeting
      * </pre>
      */
-    Helloworld.User sayHello(Helloworld.HelloRequest request);
+    HelloWorld.User sayHello(HelloWorld.HelloRequest request);
 
 }
diff --git a/rpc/dubbo3/hessian2/java-client/src/main/proto/helloworld.proto b/rpc/triple/pb/dubbogo-java/java-client/src/main/proto/HelloWorld.proto
similarity index 91%
rename from rpc/dubbo3/hessian2/java-client/src/main/proto/helloworld.proto
rename to rpc/triple/pb/dubbogo-java/java-client/src/main/proto/HelloWorld.proto
index ee6ca29..3aa4af0 100644
--- a/rpc/dubbo3/hessian2/java-client/src/main/proto/helloworld.proto
+++ b/rpc/triple/pb/dubbogo-java/java-client/src/main/proto/HelloWorld.proto
@@ -10,10 +10,9 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 syntax = "proto3";
+package org.apache.dubbo.demo;
 
-option java_package = "org.apache.dubbo.sample.hello";
-
-package helloworld;
+option java_package = "org.apache.dubbo.demo";
 
 // The request message containing the user's name.
 message HelloRequest {
diff --git a/rpc/dubbo3/hessian2/java-server/src/main/resources/log4j.properties b/rpc/triple/pb/dubbogo-java/java-client/src/main/resources/log4j.properties
similarity index 100%
rename from rpc/dubbo3/hessian2/java-server/src/main/resources/log4j.properties
rename to rpc/triple/pb/dubbogo-java/java-client/src/main/resources/log4j.properties
diff --git a/rpc/dubbo3/pb/dubbogo-java/java-server/pom.xml b/rpc/triple/pb/dubbogo-java/java-server/pom.xml
similarity index 98%
rename from rpc/dubbo3/pb/dubbogo-java/java-server/pom.xml
rename to rpc/triple/pb/dubbogo-java/java-server/pom.xml
index dd518ca..24676a6 100644
--- a/rpc/dubbo3/pb/dubbogo-java/java-server/pom.xml
+++ b/rpc/triple/pb/dubbogo-java/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>
@@ -106,7 +106,6 @@
     </profiles>
 
     <build>
-        <defaultGoal>package</defaultGoal>
         <extensions>
             <extension>
                 <groupId>kr.motd.maven</groupId>
@@ -114,7 +113,6 @@
                 <version>1.6.1</version>
             </extension>
         </extensions>
-
         <plugins>
             <plugin>
                 <groupId>org.xolstice.maven.plugins</groupId>
diff --git a/rpc/dubbo3/hessian2/java-server/run.sh b/rpc/triple/pb/dubbogo-java/java-server/run.sh
old mode 100644
new mode 100755
similarity index 100%
rename from rpc/dubbo3/hessian2/java-server/run.sh
rename to rpc/triple/pb/dubbogo-java/java-server/run.sh
diff --git a/rpc/dubbo3/pb/dubbogo-java/java-server/src/main/java/com/apache/dubbo/sample/basic/ApiProvider.java b/rpc/triple/pb/dubbogo-java/java-server/src/main/java/org/apache/dubbo/demo/ApiProvider.java
similarity index 95%
rename from rpc/dubbo3/pb/dubbogo-java/java-server/src/main/java/com/apache/dubbo/sample/basic/ApiProvider.java
rename to rpc/triple/pb/dubbogo-java/java-server/src/main/java/org/apache/dubbo/demo/ApiProvider.java
index e052dcb..53a6260 100644
--- a/rpc/dubbo3/pb/dubbogo-java/java-server/src/main/java/com/apache/dubbo/sample/basic/ApiProvider.java
+++ b/rpc/triple/pb/dubbogo-java/java-server/src/main/java/org/apache/dubbo/demo/ApiProvider.java
@@ -15,7 +15,7 @@
  *  limitations under the License.
  */
 
-package com.apache.dubbo.sample.basic;
+package org.apache.dubbo.demo;
 
 import org.apache.dubbo.common.constants.CommonConstants;
 import org.apache.dubbo.config.ApplicationConfig;
@@ -28,7 +28,7 @@ public class ApiProvider {
     public static void main(String[] args) throws InterruptedException {
         ServiceConfig<IGreeter> service = new ServiceConfig<>();
         service.setInterface(IGreeter.class);
-        service.setRef(new IGreeter1Impl());
+        service.setRef(new IGreeterImpl());
         service.setProtocol(new ProtocolConfig(CommonConstants.TRIPLE, 50051));
         service.setApplication(new ApplicationConfig("demo-provider"));
         service.setRegistry(new RegistryConfig("zookeeper://127.0.0.1:2181"));
diff --git a/rpc/dubbo3/pb/dubbogo-java/java-server/build/generated/source/proto/main/java/org/apache/dubbo/sample/hello/Helloworld.java b/rpc/triple/pb/dubbogo-java/java-server/src/main/java/org/apache/dubbo/demo/HelloWorld.java
similarity index 81%
rename from rpc/dubbo3/pb/dubbogo-java/java-server/build/generated/source/proto/main/java/org/apache/dubbo/sample/hello/Helloworld.java
rename to rpc/triple/pb/dubbogo-java/java-server/src/main/java/org/apache/dubbo/demo/HelloWorld.java
index 99758ac..dc23698 100644
--- a/rpc/dubbo3/pb/dubbogo-java/java-server/build/generated/source/proto/main/java/org/apache/dubbo/sample/hello/Helloworld.java
+++ b/rpc/triple/pb/dubbogo-java/java-server/src/main/java/org/apache/dubbo/demo/HelloWorld.java
@@ -1,10 +1,10 @@
 // Generated by the protocol buffer compiler.  DO NOT EDIT!
-// source: helloworld.proto
+// source: HelloWorld.proto
 
-package org.apache.dubbo.sample.hello;
+package org.apache.dubbo.demo;
 
-public final class Helloworld {
-  private Helloworld() {}
+public final class HelloWorld {
+  private HelloWorld() {}
   public static void registerAllExtensions(
       com.google.protobuf.ExtensionRegistryLite registry) {
   }
@@ -15,7 +15,7 @@ public final class Helloworld {
         (com.google.protobuf.ExtensionRegistryLite) registry);
   }
   public interface HelloRequestOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:helloworld.HelloRequest)
+      // @@protoc_insertion_point(interface_extends:org.apache.dubbo.demo.HelloRequest)
       com.google.protobuf.MessageOrBuilder {
 
     /**
@@ -35,11 +35,11 @@ public final class Helloworld {
    * The request message containing the user's name.
    * </pre>
    *
-   * Protobuf type {@code helloworld.HelloRequest}
+   * Protobuf type {@code org.apache.dubbo.demo.HelloRequest}
    */
   public static final class HelloRequest extends
       com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:helloworld.HelloRequest)
+      // @@protoc_insertion_point(message_implements:org.apache.dubbo.demo.HelloRequest)
       HelloRequestOrBuilder {
   private static final long serialVersionUID = 0L;
     // Use HelloRequest.newBuilder() to construct.
@@ -107,15 +107,15 @@ public final class Helloworld {
     }
     public static final com.google.protobuf.Descriptors.Descriptor
         getDescriptor() {
-      return org.apache.dubbo.sample.hello.Helloworld.internal_static_helloworld_HelloRequest_descriptor;
+      return org.apache.dubbo.demo.HelloWorld.internal_static_org_apache_dubbo_demo_HelloRequest_descriptor;
     }
 
     @java.lang.Override
     protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
         internalGetFieldAccessorTable() {
-      return org.apache.dubbo.sample.hello.Helloworld.internal_static_helloworld_HelloRequest_fieldAccessorTable
+      return org.apache.dubbo.demo.HelloWorld.internal_static_org_apache_dubbo_demo_HelloRequest_fieldAccessorTable
           .ensureFieldAccessorsInitialized(
-              org.apache.dubbo.sample.hello.Helloworld.HelloRequest.class, org.apache.dubbo.sample.hello.Helloworld.HelloRequest.Builder.class);
+              org.apache.dubbo.demo.HelloWorld.HelloRequest.class, org.apache.dubbo.demo.HelloWorld.HelloRequest.Builder.class);
     }
 
     public static final int NAME_FIELD_NUMBER = 1;
@@ -195,10 +195,10 @@ public final class Helloworld {
       if (obj == this) {
        return true;
       }
-      if (!(obj instanceof org.apache.dubbo.sample.hello.Helloworld.HelloRequest)) {
+      if (!(obj instanceof org.apache.dubbo.demo.HelloWorld.HelloRequest)) {
         return super.equals(obj);
       }
-      org.apache.dubbo.sample.hello.Helloworld.HelloRequest other = (org.apache.dubbo.sample.hello.Helloworld.HelloRequest) obj;
+      org.apache.dubbo.demo.HelloWorld.HelloRequest other = (org.apache.dubbo.demo.HelloWorld.HelloRequest) obj;
 
       if (!getName()
           .equals(other.getName())) return false;
@@ -220,69 +220,69 @@ public final class Helloworld {
       return hash;
     }
 
-    public static org.apache.dubbo.sample.hello.Helloworld.HelloRequest parseFrom(
+    public static org.apache.dubbo.demo.HelloWorld.HelloRequest parseFrom(
         java.nio.ByteBuffer data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static org.apache.dubbo.sample.hello.Helloworld.HelloRequest parseFrom(
+    public static org.apache.dubbo.demo.HelloWorld.HelloRequest parseFrom(
         java.nio.ByteBuffer data,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data, extensionRegistry);
     }
-    public static org.apache.dubbo.sample.hello.Helloworld.HelloRequest parseFrom(
+    public static org.apache.dubbo.demo.HelloWorld.HelloRequest parseFrom(
         com.google.protobuf.ByteString data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static org.apache.dubbo.sample.hello.Helloworld.HelloRequest parseFrom(
+    public static org.apache.dubbo.demo.HelloWorld.HelloRequest parseFrom(
         com.google.protobuf.ByteString data,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data, extensionRegistry);
     }
-    public static org.apache.dubbo.sample.hello.Helloworld.HelloRequest parseFrom(byte[] data)
+    public static org.apache.dubbo.demo.HelloWorld.HelloRequest parseFrom(byte[] data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static org.apache.dubbo.sample.hello.Helloworld.HelloRequest parseFrom(
+    public static org.apache.dubbo.demo.HelloWorld.HelloRequest parseFrom(
         byte[] data,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data, extensionRegistry);
     }
-    public static org.apache.dubbo.sample.hello.Helloworld.HelloRequest parseFrom(java.io.InputStream input)
+    public static org.apache.dubbo.demo.HelloWorld.HelloRequest parseFrom(java.io.InputStream input)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input);
     }
-    public static org.apache.dubbo.sample.hello.Helloworld.HelloRequest parseFrom(
+    public static org.apache.dubbo.demo.HelloWorld.HelloRequest parseFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
-    public static org.apache.dubbo.sample.hello.Helloworld.HelloRequest parseDelimitedFrom(java.io.InputStream input)
+    public static org.apache.dubbo.demo.HelloWorld.HelloRequest parseDelimitedFrom(java.io.InputStream input)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessageV3
           .parseDelimitedWithIOException(PARSER, input);
     }
-    public static org.apache.dubbo.sample.hello.Helloworld.HelloRequest parseDelimitedFrom(
+    public static org.apache.dubbo.demo.HelloWorld.HelloRequest parseDelimitedFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessageV3
           .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
     }
-    public static org.apache.dubbo.sample.hello.Helloworld.HelloRequest parseFrom(
+    public static org.apache.dubbo.demo.HelloWorld.HelloRequest parseFrom(
         com.google.protobuf.CodedInputStream input)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input);
     }
-    public static org.apache.dubbo.sample.hello.Helloworld.HelloRequest parseFrom(
+    public static org.apache.dubbo.demo.HelloWorld.HelloRequest parseFrom(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
@@ -295,7 +295,7 @@ public final class Helloworld {
     public static Builder newBuilder() {
       return DEFAULT_INSTANCE.toBuilder();
     }
-    public static Builder newBuilder(org.apache.dubbo.sample.hello.Helloworld.HelloRequest prototype) {
+    public static Builder newBuilder(org.apache.dubbo.demo.HelloWorld.HelloRequest prototype) {
       return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
     }
     @java.lang.Override
@@ -315,26 +315,26 @@ public final class Helloworld {
      * The request message containing the user's name.
      * </pre>
      *
-     * Protobuf type {@code helloworld.HelloRequest}
+     * Protobuf type {@code org.apache.dubbo.demo.HelloRequest}
      */
     public static final class Builder extends
         com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:helloworld.HelloRequest)
-        org.apache.dubbo.sample.hello.Helloworld.HelloRequestOrBuilder {
+        // @@protoc_insertion_point(builder_implements:org.apache.dubbo.demo.HelloRequest)
+        org.apache.dubbo.demo.HelloWorld.HelloRequestOrBuilder {
       public static final com.google.protobuf.Descriptors.Descriptor
           getDescriptor() {
-        return org.apache.dubbo.sample.hello.Helloworld.internal_static_helloworld_HelloRequest_descriptor;
+        return org.apache.dubbo.demo.HelloWorld.internal_static_org_apache_dubbo_demo_HelloRequest_descriptor;
       }
 
       @java.lang.Override
       protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
           internalGetFieldAccessorTable() {
-        return org.apache.dubbo.sample.hello.Helloworld.internal_static_helloworld_HelloRequest_fieldAccessorTable
+        return org.apache.dubbo.demo.HelloWorld.internal_static_org_apache_dubbo_demo_HelloRequest_fieldAccessorTable
             .ensureFieldAccessorsInitialized(
-                org.apache.dubbo.sample.hello.Helloworld.HelloRequest.class, org.apache.dubbo.sample.hello.Helloworld.HelloRequest.Builder.class);
+                org.apache.dubbo.demo.HelloWorld.HelloRequest.class, org.apache.dubbo.demo.HelloWorld.HelloRequest.Builder.class);
       }
 
-      // Construct using org.apache.dubbo.sample.hello.Helloworld.HelloRequest.newBuilder()
+      // Construct using org.apache.dubbo.demo.HelloWorld.HelloRequest.newBuilder()
       private Builder() {
         maybeForceBuilderInitialization();
       }
@@ -360,17 +360,17 @@ public final class Helloworld {
       @java.lang.Override
       public com.google.protobuf.Descriptors.Descriptor
           getDescriptorForType() {
-        return org.apache.dubbo.sample.hello.Helloworld.internal_static_helloworld_HelloRequest_descriptor;
+        return org.apache.dubbo.demo.HelloWorld.internal_static_org_apache_dubbo_demo_HelloRequest_descriptor;
       }
 
       @java.lang.Override
-      public org.apache.dubbo.sample.hello.Helloworld.HelloRequest getDefaultInstanceForType() {
-        return org.apache.dubbo.sample.hello.Helloworld.HelloRequest.getDefaultInstance();
+      public org.apache.dubbo.demo.HelloWorld.HelloRequest getDefaultInstanceForType() {
+        return org.apache.dubbo.demo.HelloWorld.HelloRequest.getDefaultInstance();
       }
 
       @java.lang.Override
-      public org.apache.dubbo.sample.hello.Helloworld.HelloRequest build() {
-        org.apache.dubbo.sample.hello.Helloworld.HelloRequest result = buildPartial();
+      public org.apache.dubbo.demo.HelloWorld.HelloRequest build() {
+        org.apache.dubbo.demo.HelloWorld.HelloRequest result = buildPartial();
         if (!result.isInitialized()) {
           throw newUninitializedMessageException(result);
         }
@@ -378,8 +378,8 @@ public final class Helloworld {
       }
 
       @java.lang.Override
-      public org.apache.dubbo.sample.hello.Helloworld.HelloRequest buildPartial() {
-        org.apache.dubbo.sample.hello.Helloworld.HelloRequest result = new org.apache.dubbo.sample.hello.Helloworld.HelloRequest(this);
+      public org.apache.dubbo.demo.HelloWorld.HelloRequest buildPartial() {
+        org.apache.dubbo.demo.HelloWorld.HelloRequest result = new org.apache.dubbo.demo.HelloWorld.HelloRequest(this);
         result.name_ = name_;
         onBuilt();
         return result;
@@ -419,16 +419,16 @@ public final class Helloworld {
       }
       @java.lang.Override
       public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof org.apache.dubbo.sample.hello.Helloworld.HelloRequest) {
-          return mergeFrom((org.apache.dubbo.sample.hello.Helloworld.HelloRequest)other);
+        if (other instanceof org.apache.dubbo.demo.HelloWorld.HelloRequest) {
+          return mergeFrom((org.apache.dubbo.demo.HelloWorld.HelloRequest)other);
         } else {
           super.mergeFrom(other);
           return this;
         }
       }
 
-      public Builder mergeFrom(org.apache.dubbo.sample.hello.Helloworld.HelloRequest other) {
-        if (other == org.apache.dubbo.sample.hello.Helloworld.HelloRequest.getDefaultInstance()) return this;
+      public Builder mergeFrom(org.apache.dubbo.demo.HelloWorld.HelloRequest other) {
+        if (other == org.apache.dubbo.demo.HelloWorld.HelloRequest.getDefaultInstance()) return this;
         if (!other.getName().isEmpty()) {
           name_ = other.name_;
           onChanged();
@@ -448,11 +448,11 @@ public final class Helloworld {
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws java.io.IOException {
-        org.apache.dubbo.sample.hello.Helloworld.HelloRequest parsedMessage = null;
+        org.apache.dubbo.demo.HelloWorld.HelloRequest parsedMessage = null;
         try {
           parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
         } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (org.apache.dubbo.sample.hello.Helloworld.HelloRequest) e.getUnfinishedMessage();
+          parsedMessage = (org.apache.dubbo.demo.HelloWorld.HelloRequest) e.getUnfinishedMessage();
           throw e.unwrapIOException();
         } finally {
           if (parsedMessage != null) {
@@ -550,16 +550,16 @@ public final class Helloworld {
       }
 
 
-      // @@protoc_insertion_point(builder_scope:helloworld.HelloRequest)
+      // @@protoc_insertion_point(builder_scope:org.apache.dubbo.demo.HelloRequest)
     }
 
-    // @@protoc_insertion_point(class_scope:helloworld.HelloRequest)
-    private static final org.apache.dubbo.sample.hello.Helloworld.HelloRequest DEFAULT_INSTANCE;
+    // @@protoc_insertion_point(class_scope:org.apache.dubbo.demo.HelloRequest)
+    private static final org.apache.dubbo.demo.HelloWorld.HelloRequest DEFAULT_INSTANCE;
     static {
-      DEFAULT_INSTANCE = new org.apache.dubbo.sample.hello.Helloworld.HelloRequest();
+      DEFAULT_INSTANCE = new org.apache.dubbo.demo.HelloWorld.HelloRequest();
     }
 
-    public static org.apache.dubbo.sample.hello.Helloworld.HelloRequest getDefaultInstance() {
+    public static org.apache.dubbo.demo.HelloWorld.HelloRequest getDefaultInstance() {
       return DEFAULT_INSTANCE;
     }
 
@@ -584,14 +584,14 @@ public final class Helloworld {
     }
 
     @java.lang.Override
-    public org.apache.dubbo.sample.hello.Helloworld.HelloRequest getDefaultInstanceForType() {
+    public org.apache.dubbo.demo.HelloWorld.HelloRequest getDefaultInstanceForType() {
       return DEFAULT_INSTANCE;
     }
 
   }
 
   public interface UserOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:helloworld.User)
+      // @@protoc_insertion_point(interface_extends:org.apache.dubbo.demo.User)
       com.google.protobuf.MessageOrBuilder {
 
     /**
@@ -629,11 +629,11 @@ public final class Helloworld {
    * The response message containing the greetings
    * </pre>
    *
-   * Protobuf type {@code helloworld.User}
+   * Protobuf type {@code org.apache.dubbo.demo.User}
    */
   public static final class User extends
       com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:helloworld.User)
+      // @@protoc_insertion_point(message_implements:org.apache.dubbo.demo.User)
       UserOrBuilder {
   private static final long serialVersionUID = 0L;
     // Use User.newBuilder() to construct.
@@ -713,15 +713,15 @@ public final class Helloworld {
     }
     public static final com.google.protobuf.Descriptors.Descriptor
         getDescriptor() {
-      return org.apache.dubbo.sample.hello.Helloworld.internal_static_helloworld_User_descriptor;
+      return org.apache.dubbo.demo.HelloWorld.internal_static_org_apache_dubbo_demo_User_descriptor;
     }
 
     @java.lang.Override
     protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
         internalGetFieldAccessorTable() {
-      return org.apache.dubbo.sample.hello.Helloworld.internal_static_helloworld_User_fieldAccessorTable
+      return org.apache.dubbo.demo.HelloWorld.internal_static_org_apache_dubbo_demo_User_fieldAccessorTable
           .ensureFieldAccessorsInitialized(
-              org.apache.dubbo.sample.hello.Helloworld.User.class, org.apache.dubbo.sample.hello.Helloworld.User.Builder.class);
+              org.apache.dubbo.demo.HelloWorld.User.class, org.apache.dubbo.demo.HelloWorld.User.Builder.class);
     }
 
     public static final int NAME_FIELD_NUMBER = 1;
@@ -863,10 +863,10 @@ public final class Helloworld {
       if (obj == this) {
        return true;
       }
-      if (!(obj instanceof org.apache.dubbo.sample.hello.Helloworld.User)) {
+      if (!(obj instanceof org.apache.dubbo.demo.HelloWorld.User)) {
         return super.equals(obj);
       }
-      org.apache.dubbo.sample.hello.Helloworld.User other = (org.apache.dubbo.sample.hello.Helloworld.User) obj;
+      org.apache.dubbo.demo.HelloWorld.User other = (org.apache.dubbo.demo.HelloWorld.User) obj;
 
       if (!getName()
           .equals(other.getName())) return false;
@@ -896,69 +896,69 @@ public final class Helloworld {
       return hash;
     }
 
-    public static org.apache.dubbo.sample.hello.Helloworld.User parseFrom(
+    public static org.apache.dubbo.demo.HelloWorld.User parseFrom(
         java.nio.ByteBuffer data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static org.apache.dubbo.sample.hello.Helloworld.User parseFrom(
+    public static org.apache.dubbo.demo.HelloWorld.User parseFrom(
         java.nio.ByteBuffer data,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data, extensionRegistry);
     }
-    public static org.apache.dubbo.sample.hello.Helloworld.User parseFrom(
+    public static org.apache.dubbo.demo.HelloWorld.User parseFrom(
         com.google.protobuf.ByteString data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static org.apache.dubbo.sample.hello.Helloworld.User parseFrom(
+    public static org.apache.dubbo.demo.HelloWorld.User parseFrom(
         com.google.protobuf.ByteString data,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data, extensionRegistry);
     }
-    public static org.apache.dubbo.sample.hello.Helloworld.User parseFrom(byte[] data)
+    public static org.apache.dubbo.demo.HelloWorld.User parseFrom(byte[] data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static org.apache.dubbo.sample.hello.Helloworld.User parseFrom(
+    public static org.apache.dubbo.demo.HelloWorld.User parseFrom(
         byte[] data,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data, extensionRegistry);
     }
-    public static org.apache.dubbo.sample.hello.Helloworld.User parseFrom(java.io.InputStream input)
+    public static org.apache.dubbo.demo.HelloWorld.User parseFrom(java.io.InputStream input)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input);
     }
-    public static org.apache.dubbo.sample.hello.Helloworld.User parseFrom(
+    public static org.apache.dubbo.demo.HelloWorld.User parseFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
-    public static org.apache.dubbo.sample.hello.Helloworld.User parseDelimitedFrom(java.io.InputStream input)
+    public static org.apache.dubbo.demo.HelloWorld.User parseDelimitedFrom(java.io.InputStream input)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessageV3
           .parseDelimitedWithIOException(PARSER, input);
     }
-    public static org.apache.dubbo.sample.hello.Helloworld.User parseDelimitedFrom(
+    public static org.apache.dubbo.demo.HelloWorld.User parseDelimitedFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessageV3
           .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
     }
-    public static org.apache.dubbo.sample.hello.Helloworld.User parseFrom(
+    public static org.apache.dubbo.demo.HelloWorld.User parseFrom(
         com.google.protobuf.CodedInputStream input)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input);
     }
-    public static org.apache.dubbo.sample.hello.Helloworld.User parseFrom(
+    public static org.apache.dubbo.demo.HelloWorld.User parseFrom(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
@@ -971,7 +971,7 @@ public final class Helloworld {
     public static Builder newBuilder() {
       return DEFAULT_INSTANCE.toBuilder();
     }
-    public static Builder newBuilder(org.apache.dubbo.sample.hello.Helloworld.User prototype) {
+    public static Builder newBuilder(org.apache.dubbo.demo.HelloWorld.User prototype) {
       return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
     }
     @java.lang.Override
@@ -991,26 +991,26 @@ public final class Helloworld {
      * The response message containing the greetings
      * </pre>
      *
-     * Protobuf type {@code helloworld.User}
+     * Protobuf type {@code org.apache.dubbo.demo.User}
      */
     public static final class Builder extends
         com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:helloworld.User)
-        org.apache.dubbo.sample.hello.Helloworld.UserOrBuilder {
+        // @@protoc_insertion_point(builder_implements:org.apache.dubbo.demo.User)
+        org.apache.dubbo.demo.HelloWorld.UserOrBuilder {
       public static final com.google.protobuf.Descriptors.Descriptor
           getDescriptor() {
-        return org.apache.dubbo.sample.hello.Helloworld.internal_static_helloworld_User_descriptor;
+        return org.apache.dubbo.demo.HelloWorld.internal_static_org_apache_dubbo_demo_User_descriptor;
       }
 
       @java.lang.Override
       protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
           internalGetFieldAccessorTable() {
-        return org.apache.dubbo.sample.hello.Helloworld.internal_static_helloworld_User_fieldAccessorTable
+        return org.apache.dubbo.demo.HelloWorld.internal_static_org_apache_dubbo_demo_User_fieldAccessorTable
             .ensureFieldAccessorsInitialized(
-                org.apache.dubbo.sample.hello.Helloworld.User.class, org.apache.dubbo.sample.hello.Helloworld.User.Builder.class);
+                org.apache.dubbo.demo.HelloWorld.User.class, org.apache.dubbo.demo.HelloWorld.User.Builder.class);
       }
 
-      // Construct using org.apache.dubbo.sample.hello.Helloworld.User.newBuilder()
+      // Construct using org.apache.dubbo.demo.HelloWorld.User.newBuilder()
       private Builder() {
         maybeForceBuilderInitialization();
       }
@@ -1040,17 +1040,17 @@ public final class Helloworld {
       @java.lang.Override
       public com.google.protobuf.Descriptors.Descriptor
           getDescriptorForType() {
-        return org.apache.dubbo.sample.hello.Helloworld.internal_static_helloworld_User_descriptor;
+        return org.apache.dubbo.demo.HelloWorld.internal_static_org_apache_dubbo_demo_User_descriptor;
       }
 
       @java.lang.Override
-      public org.apache.dubbo.sample.hello.Helloworld.User getDefaultInstanceForType() {
-        return org.apache.dubbo.sample.hello.Helloworld.User.getDefaultInstance();
+      public org.apache.dubbo.demo.HelloWorld.User getDefaultInstanceForType() {
+        return org.apache.dubbo.demo.HelloWorld.User.getDefaultInstance();
       }
 
       @java.lang.Override
-      public org.apache.dubbo.sample.hello.Helloworld.User build() {
-        org.apache.dubbo.sample.hello.Helloworld.User result = buildPartial();
+      public org.apache.dubbo.demo.HelloWorld.User build() {
+        org.apache.dubbo.demo.HelloWorld.User result = buildPartial();
         if (!result.isInitialized()) {
           throw newUninitializedMessageException(result);
         }
@@ -1058,8 +1058,8 @@ public final class Helloworld {
       }
 
       @java.lang.Override
-      public org.apache.dubbo.sample.hello.Helloworld.User buildPartial() {
-        org.apache.dubbo.sample.hello.Helloworld.User result = new org.apache.dubbo.sample.hello.Helloworld.User(this);
+      public org.apache.dubbo.demo.HelloWorld.User buildPartial() {
+        org.apache.dubbo.demo.HelloWorld.User result = new org.apache.dubbo.demo.HelloWorld.User(this);
         result.name_ = name_;
         result.id_ = id_;
         result.age_ = age_;
@@ -1101,16 +1101,16 @@ public final class Helloworld {
       }
       @java.lang.Override
       public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof org.apache.dubbo.sample.hello.Helloworld.User) {
-          return mergeFrom((org.apache.dubbo.sample.hello.Helloworld.User)other);
+        if (other instanceof org.apache.dubbo.demo.HelloWorld.User) {
+          return mergeFrom((org.apache.dubbo.demo.HelloWorld.User)other);
         } else {
           super.mergeFrom(other);
           return this;
         }
       }
 
-      public Builder mergeFrom(org.apache.dubbo.sample.hello.Helloworld.User other) {
-        if (other == org.apache.dubbo.sample.hello.Helloworld.User.getDefaultInstance()) return this;
+      public Builder mergeFrom(org.apache.dubbo.demo.HelloWorld.User other) {
+        if (other == org.apache.dubbo.demo.HelloWorld.User.getDefaultInstance()) return this;
         if (!other.getName().isEmpty()) {
           name_ = other.name_;
           onChanged();
@@ -1137,11 +1137,11 @@ public final class Helloworld {
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws java.io.IOException {
-        org.apache.dubbo.sample.hello.Helloworld.User parsedMessage = null;
+        org.apache.dubbo.demo.HelloWorld.User parsedMessage = null;
         try {
           parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
         } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (org.apache.dubbo.sample.hello.Helloworld.User) e.getUnfinishedMessage();
+          parsedMessage = (org.apache.dubbo.demo.HelloWorld.User) e.getUnfinishedMessage();
           throw e.unwrapIOException();
         } finally {
           if (parsedMessage != null) {
@@ -1346,16 +1346,16 @@ public final class Helloworld {
       }
 
 
-      // @@protoc_insertion_point(builder_scope:helloworld.User)
+      // @@protoc_insertion_point(builder_scope:org.apache.dubbo.demo.User)
     }
 
-    // @@protoc_insertion_point(class_scope:helloworld.User)
-    private static final org.apache.dubbo.sample.hello.Helloworld.User DEFAULT_INSTANCE;
+    // @@protoc_insertion_point(class_scope:org.apache.dubbo.demo.User)
+    private static final org.apache.dubbo.demo.HelloWorld.User DEFAULT_INSTANCE;
     static {
-      DEFAULT_INSTANCE = new org.apache.dubbo.sample.hello.Helloworld.User();
+      DEFAULT_INSTANCE = new org.apache.dubbo.demo.HelloWorld.User();
     }
 
-    public static org.apache.dubbo.sample.hello.Helloworld.User getDefaultInstance() {
+    public static org.apache.dubbo.demo.HelloWorld.User getDefaultInstance() {
       return DEFAULT_INSTANCE;
     }
 
@@ -1380,22 +1380,22 @@ public final class Helloworld {
     }
 
     @java.lang.Override
-    public org.apache.dubbo.sample.hello.Helloworld.User getDefaultInstanceForType() {
+    public org.apache.dubbo.demo.HelloWorld.User getDefaultInstanceForType() {
       return DEFAULT_INSTANCE;
     }
 
   }
 
   private static final com.google.protobuf.Descriptors.Descriptor
-    internal_static_helloworld_HelloRequest_descriptor;
+    internal_static_org_apache_dubbo_demo_HelloRequest_descriptor;
   private static final 
     com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-      internal_static_helloworld_HelloRequest_fieldAccessorTable;
+      internal_static_org_apache_dubbo_demo_HelloRequest_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
-    internal_static_helloworld_User_descriptor;
+    internal_static_org_apache_dubbo_demo_User_descriptor;
   private static final 
     com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-      internal_static_helloworld_User_fieldAccessorTable;
+      internal_static_org_apache_dubbo_demo_User_fieldAccessorTable;
 
   public static com.google.protobuf.Descriptors.FileDescriptor
       getDescriptor() {
@@ -1405,26 +1405,26 @@ public final class Helloworld {
       descriptor;
   static {
     java.lang.String[] descriptorData = {
-      "\n\020helloworld.proto\022\nhelloworld\"\034\n\014HelloR" +
-      "equest\022\014\n\004name\030\001 \001(\t\"-\n\004User\022\014\n\004name\030\001 \001" +
-      "(\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"
+      "\n\020HelloWorld.proto\022\025org.apache.dubbo.dem" +
+      "o\"\034\n\014HelloRequest\022\014\n\004name\030\001 \001(\t\"-\n\004User\022" +
+      "\014\n\004name\030\001 \001(\t\022\n\n\002id\030\002 \001(\t\022\013\n\003age\030\003 \001(\005B\027" +
+      "\n\025org.apache.dubbo.demob\006proto3"
     };
     descriptor = com.google.protobuf.Descriptors.FileDescriptor
       .internalBuildGeneratedFileFrom(descriptorData,
         new com.google.protobuf.Descriptors.FileDescriptor[] {
         });
-    internal_static_helloworld_HelloRequest_descriptor =
+    internal_static_org_apache_dubbo_demo_HelloRequest_descriptor =
       getDescriptor().getMessageTypes().get(0);
-    internal_static_helloworld_HelloRequest_fieldAccessorTable = new
+    internal_static_org_apache_dubbo_demo_HelloRequest_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
-        internal_static_helloworld_HelloRequest_descriptor,
+        internal_static_org_apache_dubbo_demo_HelloRequest_descriptor,
         new java.lang.String[] { "Name", });
-    internal_static_helloworld_User_descriptor =
+    internal_static_org_apache_dubbo_demo_User_descriptor =
       getDescriptor().getMessageTypes().get(1);
-    internal_static_helloworld_User_fieldAccessorTable = new
+    internal_static_org_apache_dubbo_demo_User_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
-        internal_static_helloworld_User_descriptor,
+        internal_static_org_apache_dubbo_demo_User_descriptor,
         new java.lang.String[] { "Name", "Id", "Age", });
   }
 
diff --git a/rpc/dubbo3/pb/dubbogo-java/java-client/src/main/java/com/apache/dubbo/sample/basic/IGreeter.java b/rpc/triple/pb/dubbogo-java/java-server/src/main/java/org/apache/dubbo/demo/IGreeter.java
similarity index 85%
rename from rpc/dubbo3/pb/dubbogo-java/java-client/src/main/java/com/apache/dubbo/sample/basic/IGreeter.java
rename to rpc/triple/pb/dubbogo-java/java-server/src/main/java/org/apache/dubbo/demo/IGreeter.java
index 8722f2c..44ed755 100644
--- a/rpc/dubbo3/pb/dubbogo-java/java-client/src/main/java/com/apache/dubbo/sample/basic/IGreeter.java
+++ b/rpc/triple/pb/dubbogo-java/java-server/src/main/java/org/apache/dubbo/demo/IGreeter.java
@@ -15,10 +15,7 @@
  *  limitations under the License.
  */
 
-package com.apache.dubbo.sample.basic;
-
-
-import org.apache.dubbo.sample.hello.Helloworld;
+package org.apache.dubbo.demo;
 
 public interface IGreeter {
     /**
@@ -26,6 +23,6 @@ public interface IGreeter {
      *  Sends a greeting
      * </pre>
      */
-    Helloworld.User sayHello(Helloworld.HelloRequest request);
+    HelloWorld.User sayHello(HelloWorld.HelloRequest request);
 
 }
diff --git a/rpc/dubbo3/pb/dubbogo-java/java-server/src/main/java/com/apache/dubbo/sample/basic/IGreeter1Impl.java b/rpc/triple/pb/dubbogo-java/java-server/src/main/java/org/apache/dubbo/demo/IGreeterImpl.java
similarity index 77%
rename from rpc/dubbo3/pb/dubbogo-java/java-server/src/main/java/com/apache/dubbo/sample/basic/IGreeter1Impl.java
rename to rpc/triple/pb/dubbogo-java/java-server/src/main/java/org/apache/dubbo/demo/IGreeterImpl.java
index dfb1ac8..acdd0e3 100644
--- a/rpc/dubbo3/pb/dubbogo-java/java-server/src/main/java/com/apache/dubbo/sample/basic/IGreeter1Impl.java
+++ b/rpc/triple/pb/dubbogo-java/java-server/src/main/java/org/apache/dubbo/demo/IGreeterImpl.java
@@ -15,17 +15,13 @@
  *  limitations under the License.
  */
 
-package com.apache.dubbo.sample.basic;
+package org.apache.dubbo.demo;
 
-
-import org.apache.dubbo.sample.hello.Helloworld.User;
-import org.apache.dubbo.sample.hello.Helloworld.HelloRequest;
-
-public class IGreeter1Impl implements IGreeter {
+public class IGreeterImpl implements IGreeter {
     @Override
-    public User sayHello(HelloRequest request) {
+    public HelloWorld.User sayHello(HelloWorld.HelloRequest request) {
         System.out.println("receiv: " + request);
-        User usr = User.newBuilder()
+        HelloWorld.User usr = HelloWorld.User.newBuilder()
                 .setName("hello " + request.getName())
                 .setAge(18)
                 .setId("12345").build();
diff --git a/rpc/dubbo3/hessian2/java-server/src/main/proto/helloworld.proto b/rpc/triple/pb/dubbogo-java/java-server/src/main/proto/HelloWorld.proto
similarity index 91%
rename from rpc/dubbo3/hessian2/java-server/src/main/proto/helloworld.proto
rename to rpc/triple/pb/dubbogo-java/java-server/src/main/proto/HelloWorld.proto
index ee6ca29..3aa4af0 100644
--- a/rpc/dubbo3/hessian2/java-server/src/main/proto/helloworld.proto
+++ b/rpc/triple/pb/dubbogo-java/java-server/src/main/proto/HelloWorld.proto
@@ -10,10 +10,9 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 syntax = "proto3";
+package org.apache.dubbo.demo;
 
-option java_package = "org.apache.dubbo.sample.hello";
-
-package helloworld;
+option java_package = "org.apache.dubbo.demo";
 
 // The request message containing the user's name.
 message HelloRequest {
diff --git a/rpc/dubbo3/hessian2/java-client/src/main/resources/log4j.properties b/rpc/triple/pb/dubbogo-java/java-server/src/main/resources/log4j.properties
similarity index 100%
rename from rpc/dubbo3/hessian2/java-client/src/main/resources/log4j.properties
rename to rpc/triple/pb/dubbogo-java/java-server/src/main/resources/log4j.properties
diff --git a/rpc/dubbo3/pb/dubbogo-java/protobuf/helloworld.pb.go b/rpc/triple/pb/dubbogo-java/protobuf/helloworld.pb.go
similarity index 84%
rename from rpc/dubbo3/pb/dubbogo-java/protobuf/helloworld.pb.go
rename to rpc/triple/pb/dubbogo-java/protobuf/helloworld.pb.go
index dc13874..968628a 100644
--- a/rpc/dubbo3/pb/dubbogo-java/protobuf/helloworld.pb.go
+++ b/rpc/triple/pb/dubbogo-java/protobuf/helloworld.pb.go
@@ -6,6 +6,10 @@ package protobuf
 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,17 +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
@@ -131,106 +129,26 @@ func (m *User) GetAge() int32 {
 }
 
 func init() {
-	proto.RegisterType((*HelloRequest)(nil), "protobuf.HelloRequest")
-	proto.RegisterType((*User)(nil), "protobuf.User")
+	proto.RegisterType((*HelloRequest)(nil), "org.apache.dubbo.demo.HelloRequest")
+	proto.RegisterType((*User)(nil), "org.apache.dubbo.demo.User")
 }
 
 func init() { proto.RegisterFile("helloworld.proto", fileDescriptor_17b8c58d586b62f2) }
 
 var fileDescriptor_17b8c58d586b62f2 = []byte{
-	// 160 bytes of a gzipped FileDescriptorProto
+	// 189 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",
+	0xc9, 0x2f, 0xcf, 0x2f, 0xca, 0x49, 0xd1, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0x12, 0xcd, 0x2f,
+	0x4a, 0xd7, 0x4b, 0x2c, 0x48, 0x4c, 0xce, 0x48, 0xd5, 0x4b, 0x29, 0x4d, 0x4a, 0xca, 0xd7, 0x4b,
+	0x49, 0xcd, 0xcd, 0x57, 0x52, 0xe2, 0xe2, 0xf1, 0x00, 0x29, 0x0d, 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, 0xa3, 0x48, 0x2e, 0x76, 0xf7, 0xa2, 0xd4,
+	0xd4, 0x92, 0xd4, 0x22, 0x21, 0x3f, 0x2e, 0x8e, 0xe0, 0xc4, 0x4a, 0xb0, 0x7d, 0x42, 0xca, 0x7a,
+	0x58, 0x1d, 0xa4, 0x87, 0xec, 0x1a, 0x29, 0x69, 0x1c, 0x8a, 0x40, 0xce, 0x51, 0x62, 0x70, 0xe2,
+	0x8d, 0xe2, 0xd6, 0xd3, 0xb7, 0x06, 0xfb, 0x2f, 0xa9, 0x34, 0x2d, 0x89, 0x0d, 0xcc, 0x32, 0x06,
+	0x04, 0x00, 0x00, 0xff, 0xff, 0x6e, 0x28, 0x10, 0x08, 0xfd, 0x00, 0x00, 0x00,
 }
 
 type greeterDubbo3Client struct {
@@ -255,7 +173,7 @@ func (c *greeterDubbo3Client) SayHello(ctx context.Context, in *HelloRequest, op
 // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.
 type GreeterClientImpl struct {
 	// Sends a greeting
-	SayHello func(ctx context.Context, in *HelloRequest, out *User) error
+	SayHello func(ctx context.Context, in *HelloRequest) (*User, error)
 }
 
 func (c *GreeterClientImpl) Reference() string {
@@ -297,7 +215,7 @@ func _DUBBO_Greeter_SayHello_Handler(srv interface{}, ctx context.Context, dec f
 	}
 	info := &grpc.UnaryServerInfo{
 		Server:     srv,
-		FullMethod: "/protobuf.Greeter/SayHello",
+		FullMethod: "/org.apache.dubbo.demo.Greeter/SayHello",
 	}
 	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
 		result := base.GetProxyImpl().Invoke(context.Background(), invo)
@@ -308,7 +226,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: "org.apache.dubbo.demo.Greeter",
 		HandlerType: (*GreeterServer)(nil),
 		Methods: []grpc.MethodDesc{
 			{
@@ -320,3 +238,85 @@ func (s *GreeterProviderBase) ServiceDesc() *grpc.ServiceDesc {
 		Metadata: "helloworld.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, "/org.apache.dubbo.demo.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: "/org.apache.dubbo.demo.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: "org.apache.dubbo.demo.Greeter",
+	HandlerType: (*GreeterServer)(nil),
+	Methods: []grpc.MethodDesc{
+		{
+			MethodName: "SayHello",
+			Handler:    _Greeter_SayHello_Handler,
+		},
+	},
+	Streams:  []grpc.StreamDesc{},
+	Metadata: "helloworld.proto",
+}
diff --git a/rpc/dubbo3/pb/dubbogo-java/protobuf/helloworld.proto b/rpc/triple/pb/dubbogo-java/protobuf/helloworld.proto
similarity index 94%
rename from rpc/dubbo3/pb/dubbogo-java/protobuf/helloworld.proto
rename to rpc/triple/pb/dubbogo-java/protobuf/helloworld.proto
index 92b2876..04783eb 100644
--- a/rpc/dubbo3/pb/dubbogo-java/protobuf/helloworld.proto
+++ b/rpc/triple/pb/dubbogo-java/protobuf/helloworld.proto
@@ -16,7 +16,9 @@
  */
 
 syntax = "proto3";
-package protobuf;
+package org.apache.dubbo.demo;
+
+option go_package = "./;protobuf";
 
 // The greeting service definition.
 service Greeter {
diff --git a/rpc/dubbo3/pb/dubbogo-java/protobuf/protobuf.mk b/rpc/triple/pb/dubbogo-java/protobuf/protobuf.mk
similarity index 100%
rename from rpc/dubbo3/pb/dubbogo-java/protobuf/protobuf.mk
rename to rpc/triple/pb/dubbogo-java/protobuf/protobuf.mk
diff --git a/start_integrate_test.sh b/start_integrate_test.sh
index 2758e9c..99ba8dc 100755
--- a/start_integrate_test.sh
+++ b/start_integrate_test.sh
@@ -45,12 +45,12 @@
 ## general-dubbo
 #array+=("general/dubbo/go-server")
 #
-## general-dubbo3(triple)
-#array+=("general/dubbo3/pb/dubbogo-grpc/server/dubbogo-server")
-#array+=("general/dubbo3/pb/dubbogo-java/go-server")
-#array+=("general/dubbo3/hessian2/go-server")
-#array+=("general/dubbo3/msgpack/go-server")
-#array+=("general/dubbo3/codec-extension/go-server")
+## general-triple(triple)
+#array+=("general/triple/pb/dubbogo-grpc/server/dubbogo-server")
+#array+=("general/triple/pb/dubbogo-java/go-server")
+#array+=("general/triple/hessian2/go-server")
+#array+=("general/triple/msgpack/go-server")
+#array+=("general/triple/codec-extension/go-server")
 #
 ## general-grpc
 #array+=("general/grpc/go-server")
@@ -89,13 +89,17 @@
 #array+=("router/uniform-router/file/go-server")
 #array+=("router/uniform-router/file/go-server2")
 
+# unclassified
 array=("helloworld")
 array+=("direct")
+# config-api
 array+=("config-api/rpc/triple")
+# registry
 array+=("registry/zookeeper")
-array+=("rpc/dubbo3/codec-extension")
-array+=("rpc/dubbo3/hessian2")
 array+=("registry/nacos")
+# rpc
+array+=("rpc/triple/codec-extension")
+array+=("rpc/triple/hessian2")
 
 for((i=0;i<${#array[*]};i++))
 do