You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@servicecomb.apache.org by ti...@apache.org on 2020/07/23 03:19:13 UTC

[servicecomb-service-center] branch master updated: refactor rest client of sc. refer to etcd project (#671)

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

tianxiaoliang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/servicecomb-service-center.git


The following commit(s) were added to refs/heads/master by this push:
     new 784c353  refactor rest client of sc. refer to etcd project (#671)
784c353 is described below

commit 784c3533a8f2500f92d17d2fdf7fe5624729cc4a
Author: Shawn <xi...@gmail.com>
AuthorDate: Thu Jul 23 11:18:15 2020 +0800

    refactor rest client of sc. refer to etcd project (#671)
---
 .github/workflows/golangci-lint.yml                |   2 +-
 {pkg/client/sc => client}/apis.go                  |   7 +-
 {pkg/client/sc => client}/client.go                |   2 +-
 {pkg/client/sc => client}/client_lb.go             |   2 +-
 {pkg/client/sc => client}/client_lb_test.go        |   2 +-
 {pkg/client/sc => client}/config.go                |   2 +-
 {pkg/client/sc => client}/instance.go              |  40 +-
 {pkg/client/sc => client}/microservice.go          |  18 +-
 {pkg/client/sc => client}/schema.go                |  20 +-
 {pkg/client/sc => client}/watch.go                 |   8 +-
 {pkg/client/sc => client}/websocket.go             |   2 +-
 docs/user-guides/rbac.md                           |   2 +-
 pkg/model/dump.go                                  |  28 +-
 pkg/model/types.go                                 |  12 +-
 {server/core/proto => pkg/registry}/batch_find.go  |   2 +-
 pkg/registry/instance.go                           | 111 +++
 pkg/registry/schema.go                             |  72 ++
 pkg/registry/service.go                            |  45 +
 .../proto/services.pb.go => pkg/registry/struct.go | 267 +-----
 .../core/proto/services.go => pkg/types/cluster.go |  17 +-
 scctl/pkg/cmd/cmd.go                               |   4 +-
 scctl/pkg/model/types.go                           |  20 +-
 scctl/pkg/plugin/diagnose/compare_holder.go        |   9 +-
 scctl/pkg/plugin/diagnose/compare_holder_test.go   |   8 +-
 scctl/pkg/plugin/diagnose/diagnose.go              |   4 +-
 scctl/pkg/plugin/diagnose/diagnose_test.go         |  14 +-
 scctl/pkg/plugin/get/cluster/cluster_cmd.go        |   4 +-
 scctl/pkg/plugin/get/instance/instance_cmd.go      |   4 +-
 scctl/pkg/plugin/get/schema/schema_cmd.go          |   8 +-
 scctl/pkg/plugin/get/schema/writer.go              |   2 +-
 scctl/pkg/plugin/get/service/service_cmd.go        |   4 +-
 scctl/pkg/plugin/health/cmd.go                     |   4 +-
 scctl/pkg/plugin/version/cmd.go                    |   4 +-
 server/broker/brokerpb/broker.go                   | 677 +++++++++++++++
 server/broker/brokerpb/broker.pb.go                | 914 ---------------------
 server/broker/service.go                           | 120 +--
 server/broker/service_test.go                      |  25 +-
 server/broker/util.go                              |  61 +-
 server/core/backend/common.go                      |  28 +-
 server/core/backend/defer_instance.go              |   8 +-
 server/core/backend/defer_test.go                  |   2 +-
 server/core/backend/registry.go                    |  16 +-
 server/core/config.go                              |  10 +-
 server/core/key_convertor.go                       |  14 +-
 server/core/key_convertor_test.go                  |   8 +-
 server/core/key_generator.go                       |  12 +-
 server/core/key_generator_test.go                  |  10 +-
 server/core/microservice.go                        |  57 +-
 server/core/microservice_test.go                   |  16 +-
 server/core/proto/common.go                        |  42 +-
 server/core/proto/parser.go                        |  11 +-
 server/core/proto/parser_test.go                   |  13 +-
 server/core/proto/services.go                      |   9 +-
 server/core/proto/services.pb.go                   | 622 +-------------
 server/core/proto/types.go                         |   6 -
 server/notify/listwatcher.go                       |   2 +-
 server/notify/stream.go                            |   7 +-
 server/notify/stream_test.go                       |   2 +-
 server/notify/websocket.go                         |   2 +-
 server/notify/websocket_test.go                    |  21 +-
 server/plugin/discovery/cacher.go                  |   7 +-
 server/plugin/discovery/cacher_test.go             |  14 +-
 server/plugin/discovery/config.go                  |   8 +-
 server/plugin/discovery/config_test.go             |   6 +-
 server/plugin/discovery/etcd/cacher_kv.go          |  34 +-
 server/plugin/discovery/etcd/cacher_kv_test.go     |   7 +-
 server/plugin/discovery/etcd/common.go             |   4 +-
 server/plugin/discovery/etcd/indexer_etcd.go       |   6 +-
 server/plugin/discovery/etcd/indexer_test.go       |   6 +-
 .../plugin/discovery/k8s/adaptor/cacher_index.go   |  10 +-
 .../discovery/k8s/adaptor/cacher_instance.go       |   5 +-
 .../plugin/discovery/k8s/adaptor/cacher_service.go |   2 +-
 server/plugin/discovery/k8s/adaptor/convertor.go   |  11 +-
 server/plugin/discovery/k8s/adaptor/kube_client.go |   2 +-
 server/plugin/discovery/k8s/adaptor/listwatcher.go |   5 +-
 server/plugin/discovery/servicecenter/aggregate.go |  28 +-
 server/plugin/discovery/servicecenter/indexer.go   |  10 +-
 server/plugin/discovery/servicecenter/syncer.go    |  12 +-
 .../plugin/discovery/servicecenter/syncer_test.go  |  12 +-
 server/plugin/discovery/types.go                   |   6 +-
 server/plugin/quota/counter/event.go               |  13 +-
 server/plugin/quota/counter/event_test.go          |  50 +-
 server/plugin/registry/config.go                   |  19 +-
 server/plugin/registry/types.go                    |   2 -
 server/rest/admin/service.go                       |   6 +-
 server/rest/admin/service_test.go                  |   6 +-
 server/rest/controller/rest_util.go                |   7 +-
 server/rest/controller/v3/main_controller.go       |   5 +-
 server/rest/controller/v4/dependency_controller.go |   2 +-
 server/rest/controller/v4/instance_controller.go   |   5 +-
 server/rest/controller/v4/instance_watcher.go      |   2 +-
 server/rest/controller/v4/main_controller.go       |   9 +-
 .../rest/controller/v4/microservice_controller.go  |   2 +-
 server/rest/controller/v4/query_rule_controller.go |   2 +-
 server/rest/controller/v4/schema_controller.go     |   2 +-
 server/rest/controller/v4/tag_controller.go        |   2 +-
 server/rest/govern/controller_v4.go                |   5 +-
 server/rest/govern/govern_suite_test.go            |   8 +-
 server/rest/govern/service.go                      |  35 +-
 server/rest/govern/service_test.go                 |  35 +-
 server/service/cache/dependency.go                 |   2 +-
 server/service/cache/filter_instances.go           |   2 +-
 server/service/cache/filter_permission.go          |   2 +-
 server/service/cache/filter_service.go             |   2 +-
 server/service/cache/filter_tags.go                |   2 +-
 server/service/cache/filter_version.go             |   2 +-
 server/service/cache/instance.go                   |   2 +-
 server/service/dependency.go                       |  37 +-
 server/service/dependency_test.go                  | 131 +--
 server/service/event/dependency_event_handler.go   |   7 +-
 .../service/event/dependency_rule_event_handler.go |   2 +-
 .../event/dependency_rule_event_handler_test.go    |   2 +-
 server/service/event/domain_event_handler.go       |   6 +-
 server/service/event/instance_event_handler.go     |   7 +-
 server/service/event/rule_event_handler.go         |   5 +-
 .../service/event/schema_summary_event_handler.go  |   2 +-
 server/service/event/service_event_handler.go      |   5 +-
 server/service/event/tag_event_handler.go          |   7 +-
 server/service/instance.go                         | 135 +--
 server/service/instance_test.go                    | 339 ++++----
 server/service/instance_validator.go               |   6 +-
 server/service/microservice.go                     | 135 +--
 server/service/microservice_test.go                | 173 ++--
 server/service/microservice_validator.go           |   8 +-
 server/service/rule.go                             |  67 +-
 server/service/rule_test.go                        | 113 +--
 server/service/schema.go                           |  59 +-
 server/service/schema_test.go                      | 217 ++---
 server/service/service.go                          |  11 +-
 server/service/service_suite_test.go               |  10 +-
 server/service/tag.go                              |  51 +-
 server/service/tag_test.go                         |  93 +--
 server/service/util/dependency.go                  |  12 +-
 server/service/util/dependency_query.go            |   9 +-
 server/service/util/dependency_test.go             |  70 +-
 server/service/util/dependency_util.go             |   7 +-
 server/service/util/instance_util.go               |  10 +-
 server/service/util/instance_util_test.go          |   9 +-
 server/service/util/microservice_util.go           |   7 +-
 server/service/util/rule_util.go                   |   7 +-
 server/service/util/rule_util_test.go              |  73 +-
 server/service/util/util_suite_test.go             |   2 +-
 server/service/validate.go                         |   2 +-
 server/service/watch.go                            |   5 +-
 server/service/watch_test.go                       |   5 +-
 server/task/clear_service.go                       |   7 +-
 server/task/clear_service_test.go                  |  11 +-
 syncer/plugins/eureka/eureka.go                    |   8 +-
 syncer/plugins/option.go                           |   6 +-
 .../hello-server/servicecenter/servicecenter.go    |  54 +-
 150 files changed, 2534 insertions(+), 3289 deletions(-)

diff --git a/.github/workflows/golangci-lint.yml b/.github/workflows/golangci-lint.yml
index 498862c..162d9f8 100644
--- a/.github/workflows/golangci-lint.yml
+++ b/.github/workflows/golangci-lint.yml
@@ -10,4 +10,4 @@ jobs:
         uses: golangci/golangci-lint-action@v1
         with:
           version: v1.27
-          args: --timeout=5m --skip-dirs=test,pkg/cache,server/plugin/discovery,server/service/event,server/service/util,server/bootstrap,server/notify,server/rest/controller/v3,server/broker/brokerpb,examples,syncer,frontend,scctl,integration,server/core/proto --out-format=colored-line-number --enable golint,gocyclo --skip-files=.*_test.go$
\ No newline at end of file
+          args: --timeout=5m --skip-dirs=server/core/proto,test,pkg/cache,server/plugin/discovery,server/service/event,server/service/util,server/bootstrap,server/notify,server/rest/controller/v3,server/broker/brokerpb,examples,syncer,frontend,scctl,integration,pkg/registry --out-format=colored-line-number --enable golint,gocyclo --skip-files=.*_test.go$
\ No newline at end of file
diff --git a/pkg/client/sc/apis.go b/client/apis.go
similarity index 96%
rename from pkg/client/sc/apis.go
rename to client/apis.go
index 602c734..ffb811a 100644
--- a/pkg/client/sc/apis.go
+++ b/client/apis.go
@@ -13,17 +13,18 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package sc
+package client
 
 import (
 	"context"
 	"encoding/json"
+
 	"io/ioutil"
 	"net/http"
 
 	"github.com/apache/servicecomb-service-center/pkg/model"
+	"github.com/apache/servicecomb-service-center/pkg/types"
 	"github.com/apache/servicecomb-service-center/pkg/util"
-	"github.com/apache/servicecomb-service-center/server/plugin/registry"
 	scerr "github.com/apache/servicecomb-service-center/server/scerror"
 	"github.com/apache/servicecomb-service-center/version"
 )
@@ -109,7 +110,7 @@ func (c *Client) GetScCache(ctx context.Context) (*model.Cache, *scerr.Error) {
 	return dump.Cache, nil
 }
 
-func (c *Client) GetClusters(ctx context.Context) (registry.Clusters, *scerr.Error) {
+func (c *Client) GetClusters(ctx context.Context) (types.Clusters, *scerr.Error) {
 	headers := c.CommonHeaders(ctx)
 	// only default domain has admin permission
 	headers.Set("X-Domain-Name", "default")
diff --git a/pkg/client/sc/client.go b/client/client.go
similarity index 98%
rename from pkg/client/sc/client.go
rename to client/client.go
index cd77f2b..40e53fa 100644
--- a/pkg/client/sc/client.go
+++ b/client/client.go
@@ -13,7 +13,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package sc
+package client
 
 import (
 	"context"
diff --git a/pkg/client/sc/client_lb.go b/client/client_lb.go
similarity index 99%
rename from pkg/client/sc/client_lb.go
rename to client/client_lb.go
index 89af078..b2d73e6 100644
--- a/pkg/client/sc/client_lb.go
+++ b/client/client_lb.go
@@ -13,7 +13,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package sc
+package client
 
 import (
 	"context"
diff --git a/pkg/client/sc/client_lb_test.go b/client/client_lb_test.go
similarity index 99%
rename from pkg/client/sc/client_lb_test.go
rename to client/client_lb_test.go
index b7d4300..05e2514 100644
--- a/pkg/client/sc/client_lb_test.go
+++ b/client/client_lb_test.go
@@ -13,7 +13,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package sc
+package client
 
 import (
 	"context"
diff --git a/pkg/client/sc/config.go b/client/config.go
similarity index 99%
rename from pkg/client/sc/config.go
rename to client/config.go
index 1f7e975..5e7caa8 100644
--- a/pkg/client/sc/config.go
+++ b/client/config.go
@@ -13,7 +13,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package sc
+package client
 
 import (
 	"github.com/apache/servicecomb-service-center/pkg/rest"
diff --git a/pkg/client/sc/instance.go b/client/instance.go
similarity index 77%
rename from pkg/client/sc/instance.go
rename to client/instance.go
index cc20801..78601ce 100644
--- a/pkg/client/sc/instance.go
+++ b/client/instance.go
@@ -13,18 +13,17 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package sc
+package client
 
 import (
 	"context"
 	"encoding/json"
 	"fmt"
+	"github.com/apache/servicecomb-service-center/pkg/registry"
 	"io/ioutil"
 	"net/http"
 	"net/url"
 
-	"github.com/apache/servicecomb-service-center/server/core"
-	pb "github.com/apache/servicecomb-service-center/server/core/proto"
 	scerr "github.com/apache/servicecomb-service-center/server/scerror"
 )
 
@@ -36,12 +35,11 @@ const (
 	apiInstanceHeartbeatURL  = "/v4/%s/registry/microservices/%s/instances/%s/heartbeat"
 )
 
-func (c *Client) RegisterInstance(ctx context.Context, domainProject, serviceID string, instance *pb.MicroServiceInstance) (string, *scerr.Error) {
-	domain, project := core.FromDomainProject(domainProject)
+func (c *Client) RegisterInstance(ctx context.Context, domain, project, serviceID string, instance *registry.MicroServiceInstance) (string, *scerr.Error) {
 	headers := c.CommonHeaders(ctx)
 	headers.Set("X-Domain-Name", domain)
 
-	reqBody, err := json.Marshal(&pb.RegisterInstanceRequest{Instance: instance})
+	reqBody, err := json.Marshal(&registry.RegisterInstanceRequest{Instance: instance})
 	if err != nil {
 		return "", scerr.NewError(scerr.ErrInternal, err.Error())
 	}
@@ -63,7 +61,7 @@ func (c *Client) RegisterInstance(ctx context.Context, domainProject, serviceID
 		return "", c.toError(body)
 	}
 
-	instancesResp := &pb.RegisterInstanceResponse{}
+	instancesResp := &registry.RegisterInstanceResponse{}
 	err = json.Unmarshal(body, instancesResp)
 	if err != nil {
 		return "", scerr.NewError(scerr.ErrInternal, err.Error())
@@ -71,8 +69,7 @@ func (c *Client) RegisterInstance(ctx context.Context, domainProject, serviceID
 	return instancesResp.InstanceId, nil
 }
 
-func (c *Client) UnregisterInstance(ctx context.Context, domainProject, serviceID, instanceID string) *scerr.Error {
-	domain, project := core.FromDomainProject(domainProject)
+func (c *Client) UnregisterInstance(ctx context.Context, domain, project, serviceID, instanceID string) *scerr.Error {
 	headers := c.CommonHeaders(ctx)
 	headers.Set("X-Domain-Name", domain)
 
@@ -96,8 +93,7 @@ func (c *Client) UnregisterInstance(ctx context.Context, domainProject, serviceI
 	return nil
 }
 
-func (c *Client) DiscoveryInstances(ctx context.Context, domainProject, consumerID, providerAppID, providerServiceName, providerVersionRule string) ([]*pb.MicroServiceInstance, *scerr.Error) {
-	domain, project := core.FromDomainProject(domainProject)
+func (c *Client) DiscoveryInstances(ctx context.Context, domain, project, consumerID, providerAppID, providerServiceName, providerVersionRule string) ([]*registry.MicroServiceInstance, *scerr.Error) {
 	headers := c.CommonHeaders(ctx)
 	headers.Set("X-Domain-Name", domain)
 	headers.Set("X-ConsumerId", consumerID)
@@ -124,7 +120,7 @@ func (c *Client) DiscoveryInstances(ctx context.Context, domainProject, consumer
 		return nil, c.toError(body)
 	}
 
-	instancesResp := &pb.GetInstancesResponse{}
+	instancesResp := &registry.GetInstancesResponse{}
 	err = json.Unmarshal(body, instancesResp)
 	if err != nil {
 		return nil, scerr.NewError(scerr.ErrInternal, err.Error())
@@ -133,8 +129,7 @@ func (c *Client) DiscoveryInstances(ctx context.Context, domainProject, consumer
 	return instancesResp.Instances, nil
 }
 
-func (c *Client) Heartbeat(ctx context.Context, domainProject, serviceID, instanceID string) *scerr.Error {
-	domain, project := core.FromDomainProject(domainProject)
+func (c *Client) Heartbeat(ctx context.Context, domain, project, serviceID, instanceID string) *scerr.Error {
 	headers := c.CommonHeaders(ctx)
 	headers.Set("X-Domain-Name", domain)
 
@@ -158,12 +153,11 @@ func (c *Client) Heartbeat(ctx context.Context, domainProject, serviceID, instan
 	return nil
 }
 
-func (c *Client) HeartbeatSet(ctx context.Context, domainProject string, instances ...*pb.HeartbeatSetElement) ([]*pb.InstanceHbRst, *scerr.Error) {
-	domain, project := core.FromDomainProject(domainProject)
+func (c *Client) HeartbeatSet(ctx context.Context, domain, project string, instances ...*registry.HeartbeatSetElement) ([]*registry.InstanceHbRst, *scerr.Error) {
 	headers := c.CommonHeaders(ctx)
 	headers.Set("X-Domain-Name", domain)
 
-	reqBody, err := json.Marshal(&pb.HeartbeatSetRequest{Instances: instances})
+	reqBody, err := json.Marshal(&registry.HeartbeatSetRequest{Instances: instances})
 	if err != nil {
 		return nil, scerr.NewError(scerr.ErrInternal, err.Error())
 	}
@@ -185,7 +179,7 @@ func (c *Client) HeartbeatSet(ctx context.Context, domainProject string, instanc
 		return nil, c.toError(body)
 	}
 
-	instancesResp := &pb.HeartbeatSetResponse{}
+	instancesResp := &registry.HeartbeatSetResponse{}
 	err = json.Unmarshal(body, instancesResp)
 	if err != nil {
 		return nil, scerr.NewError(scerr.ErrInternal, err.Error())
@@ -194,8 +188,7 @@ func (c *Client) HeartbeatSet(ctx context.Context, domainProject string, instanc
 	return instancesResp.Instances, nil
 }
 
-func (c *Client) GetInstancesByServiceID(ctx context.Context, domainProject, providerID, consumerID string) ([]*pb.MicroServiceInstance, *scerr.Error) {
-	domain, project := core.FromDomainProject(domainProject)
+func (c *Client) GetInstancesByServiceID(ctx context.Context, domain, project, providerID, consumerID string) ([]*registry.MicroServiceInstance, *scerr.Error) {
 	headers := c.CommonHeaders(ctx)
 	headers.Set("X-Domain-Name", domain)
 	headers.Set("X-ConsumerId", consumerID)
@@ -216,7 +209,7 @@ func (c *Client) GetInstancesByServiceID(ctx context.Context, domainProject, pro
 		return nil, c.toError(body)
 	}
 
-	instancesResp := &pb.GetInstancesResponse{}
+	instancesResp := &registry.GetInstancesResponse{}
 	err = json.Unmarshal(body, instancesResp)
 	if err != nil {
 		return nil, scerr.NewError(scerr.ErrInternal, err.Error())
@@ -225,8 +218,7 @@ func (c *Client) GetInstancesByServiceID(ctx context.Context, domainProject, pro
 	return instancesResp.Instances, nil
 }
 
-func (c *Client) GetInstanceByInstanceID(ctx context.Context, domainProject, providerID, instanceID, consumerID string) (*pb.MicroServiceInstance, *scerr.Error) {
-	domain, project := core.FromDomainProject(domainProject)
+func (c *Client) GetInstanceByInstanceID(ctx context.Context, domain, project, providerID, instanceID, consumerID string) (*registry.MicroServiceInstance, *scerr.Error) {
 	headers := c.CommonHeaders(ctx)
 	headers.Set("X-Domain-Name", domain)
 	headers.Set("X-ConsumerId", consumerID)
@@ -247,7 +239,7 @@ func (c *Client) GetInstanceByInstanceID(ctx context.Context, domainProject, pro
 		return nil, c.toError(body)
 	}
 
-	instanceResp := &pb.GetOneInstanceResponse{}
+	instanceResp := &registry.GetOneInstanceResponse{}
 	err = json.Unmarshal(body, instanceResp)
 	if err != nil {
 		return nil, scerr.NewError(scerr.ErrInternal, err.Error())
diff --git a/pkg/client/sc/microservice.go b/client/microservice.go
similarity index 79%
rename from pkg/client/sc/microservice.go
rename to client/microservice.go
index 161357a..f2aa342 100644
--- a/pkg/client/sc/microservice.go
+++ b/client/microservice.go
@@ -13,7 +13,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package sc
+package client
 
 import (
 	"context"
@@ -23,8 +23,7 @@ import (
 	"net/http"
 	"net/url"
 
-	"github.com/apache/servicecomb-service-center/server/core"
-	pb "github.com/apache/servicecomb-service-center/server/core/proto"
+	pb "github.com/apache/servicecomb-service-center/pkg/registry"
 	scerr "github.com/apache/servicecomb-service-center/server/scerror"
 )
 
@@ -34,8 +33,7 @@ const (
 	apiMicroServiceURL  = "/v4/%s/registry/microservices/%s"
 )
 
-func (c *Client) CreateService(ctx context.Context, domainProject string, service *pb.MicroService) (string, *scerr.Error) {
-	domain, project := core.FromDomainProject(domainProject)
+func (c *Client) CreateService(ctx context.Context, domain, project string, service *pb.MicroService) (string, *scerr.Error) {
 	headers := c.CommonHeaders(ctx)
 	headers.Set("X-Domain-Name", domain)
 
@@ -69,8 +67,7 @@ func (c *Client) CreateService(ctx context.Context, domainProject string, servic
 	return serviceResp.ServiceId, nil
 }
 
-func (c *Client) DeleteService(ctx context.Context, domainProject, serviceID string) *scerr.Error {
-	domain, project := core.FromDomainProject(domainProject)
+func (c *Client) DeleteService(ctx context.Context, domain, project, serviceID string) *scerr.Error {
 	headers := c.CommonHeaders(ctx)
 	headers.Set("X-Domain-Name", domain)
 
@@ -94,7 +91,7 @@ func (c *Client) DeleteService(ctx context.Context, domainProject, serviceID str
 	return nil
 }
 
-func (c *Client) ServiceExistence(ctx context.Context, domainProject string, appID, serviceName, versionRule, env string) (string, *scerr.Error) {
+func (c *Client) ServiceExistence(ctx context.Context, domain, project string, appID, serviceName, versionRule, env string) (string, *scerr.Error) {
 	query := url.Values{}
 	query.Set("type", "microservice")
 	query.Set("env", env)
@@ -102,7 +99,7 @@ func (c *Client) ServiceExistence(ctx context.Context, domainProject string, app
 	query.Set("serviceName", serviceName)
 	query.Set("version", versionRule)
 
-	resp, err := c.existence(ctx, domainProject, query)
+	resp, err := c.existence(ctx, domain, project, query)
 	if err != nil {
 		return "", err
 	}
@@ -110,8 +107,7 @@ func (c *Client) ServiceExistence(ctx context.Context, domainProject string, app
 	return resp.ServiceId, nil
 }
 
-func (c *Client) existence(ctx context.Context, domainProject string, query url.Values) (*pb.GetExistenceResponse, *scerr.Error) {
-	domain, project := core.FromDomainProject(domainProject)
+func (c *Client) existence(ctx context.Context, domain, project string, query url.Values) (*pb.GetExistenceResponse, *scerr.Error) {
 	headers := c.CommonHeaders(ctx)
 	headers.Set("X-Domain-Name", domain)
 
diff --git a/pkg/client/sc/schema.go b/client/schema.go
similarity index 84%
rename from pkg/client/sc/schema.go
rename to client/schema.go
index 2a9bdc8..1cf73e8 100644
--- a/pkg/client/sc/schema.go
+++ b/client/schema.go
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package sc
+package client
 
 import (
 	"context"
@@ -25,8 +25,7 @@ import (
 	"io/ioutil"
 	"net/http"
 
-	"github.com/apache/servicecomb-service-center/server/core"
-	pb "github.com/apache/servicecomb-service-center/server/core/proto"
+	pb "github.com/apache/servicecomb-service-center/pkg/registry"
 	scerr "github.com/apache/servicecomb-service-center/server/scerror"
 )
 
@@ -35,8 +34,7 @@ const (
 	apiSchemaURL  = "/v4/%s/registry/microservices/%s/schemas/%s"
 )
 
-func (c *Client) CreateSchemas(ctx context.Context, domainProject, serviceID string, schemas []*pb.Schema) *scerr.Error {
-	domain, project := core.FromDomainProject(domainProject)
+func (c *Client) CreateSchemas(ctx context.Context, domain, project, serviceID string, schemas []*pb.Schema) *scerr.Error {
 	headers := c.CommonHeaders(ctx)
 	headers.Set("X-Domain-Name", domain)
 
@@ -70,8 +68,7 @@ func (c *Client) CreateSchemas(ctx context.Context, domainProject, serviceID str
 	return nil
 }
 
-func (c *Client) UpdateSchema(ctx context.Context, domainProject, serviceID string, schemaID string, schema string) *scerr.Error {
-	domain, project := core.FromDomainProject(domainProject)
+func (c *Client) UpdateSchema(ctx context.Context, domain, project, serviceID string, schemaID string, schema string) *scerr.Error {
 	headers := c.CommonHeaders(ctx)
 	headers.Set("X-Domain-Name", domain)
 
@@ -104,8 +101,7 @@ func (c *Client) UpdateSchema(ctx context.Context, domainProject, serviceID stri
 	return nil
 }
 
-func (c *Client) DeleteSchema(ctx context.Context, domainProject, serviceID string, schemaID string) *scerr.Error {
-	domain, project := core.FromDomainProject(domainProject)
+func (c *Client) DeleteSchema(ctx context.Context, domain, project, serviceID string, schemaID string) *scerr.Error {
 	headers := c.CommonHeaders(ctx)
 	headers.Set("X-Domain-Name", domain)
 
@@ -133,8 +129,7 @@ func (c *Client) DeleteSchema(ctx context.Context, domainProject, serviceID stri
 	return nil
 }
 
-func (c *Client) GetSchemasByServiceID(ctx context.Context, domainProject, serviceID string) ([]*pb.Schema, *scerr.Error) {
-	domain, project := core.FromDomainProject(domainProject)
+func (c *Client) GetSchemasByServiceID(ctx context.Context, domain, project, serviceID string) ([]*pb.Schema, *scerr.Error) {
 	headers := c.CommonHeaders(ctx)
 	headers.Set("X-Domain-Name", domain)
 	resp, err := c.RestDoWithContext(ctx, http.MethodGet,
@@ -163,8 +158,7 @@ func (c *Client) GetSchemasByServiceID(ctx context.Context, domainProject, servi
 	return schemas.Schemas, nil
 }
 
-func (c *Client) GetSchemaBySchemaID(ctx context.Context, domainProject, serviceID, schemaID string) (*pb.Schema, *scerr.Error) {
-	domain, project := core.FromDomainProject(domainProject)
+func (c *Client) GetSchemaBySchemaID(ctx context.Context, domain, project, serviceID, schemaID string) (*pb.Schema, *scerr.Error) {
 	headers := c.CommonHeaders(ctx)
 	headers.Set("X-Domain-Name", domain)
 	resp, err := c.RestDoWithContext(ctx, http.MethodGet,
diff --git a/pkg/client/sc/watch.go b/client/watch.go
similarity index 82%
rename from pkg/client/sc/watch.go
rename to client/watch.go
index 0efad41..0767fce 100644
--- a/pkg/client/sc/watch.go
+++ b/client/watch.go
@@ -13,7 +13,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package sc
+package client
 
 import (
 	"context"
@@ -21,8 +21,7 @@ import (
 	"fmt"
 	"log"
 
-	"github.com/apache/servicecomb-service-center/server/core"
-	pb "github.com/apache/servicecomb-service-center/server/core/proto"
+	pb "github.com/apache/servicecomb-service-center/pkg/registry"
 	scerr "github.com/apache/servicecomb-service-center/server/scerror"
 	"github.com/gorilla/websocket"
 )
@@ -31,8 +30,7 @@ const (
 	apiWatcherURL = "/v4/%s/registry/microservices/%s/watcher"
 )
 
-func (c *Client) Watch(ctx context.Context, domainProject, selfServiceID string, callback func(*pb.WatchInstanceResponse)) *scerr.Error {
-	domain, project := core.FromDomainProject(domainProject)
+func (c *Client) Watch(ctx context.Context, domain, project, selfServiceID string, callback func(*pb.WatchInstanceResponse)) *scerr.Error {
 	headers := c.CommonHeaders(ctx)
 	headers.Set("X-Domain-Name", domain)
 
diff --git a/pkg/client/sc/websocket.go b/client/websocket.go
similarity index 99%
rename from pkg/client/sc/websocket.go
rename to client/websocket.go
index 1898c4c..0cff948 100644
--- a/pkg/client/sc/websocket.go
+++ b/client/websocket.go
@@ -13,7 +13,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package sc
+package client
 
 import (
 	"context"
diff --git a/docs/user-guides/rbac.md b/docs/user-guides/rbac.md
index 567d3ba..19fee2c 100644
--- a/docs/user-guides/rbac.md
+++ b/docs/user-guides/rbac.md
@@ -62,7 +62,7 @@ curl -X GET \
 You must supply current password and token to update to new password
 ```shell script
 curl -X PUT \
-  http://127.0.0.1:30100/v4/reset-password \
+  http://127.0.0.1:30100/v4/account/root/password \
   -H 'Authorization: Bearer {your_token}' \
   -d '{
 	"currentPassword":"rootpwd",
diff --git a/pkg/model/dump.go b/pkg/model/dump.go
index 96fe89b..72c2aa5 100644
--- a/pkg/model/dump.go
+++ b/pkg/model/dump.go
@@ -18,7 +18,7 @@
 package model
 
 import (
-	pb "github.com/apache/servicecomb-service-center/server/core/proto"
+	"github.com/apache/servicecomb-service-center/pkg/registry"
 	"github.com/apache/servicecomb-service-center/version"
 )
 
@@ -126,7 +126,7 @@ func (s *SummarySlice) SetValue(v *KV)  { *s = append(*s, NewSummary(v)) }
 func (s *InstanceSlice) SetValue(v *KV) { *s = append(*s, NewInstance(v)) }
 
 func NewMicroservice(kv *KV) *Microservice {
-	return &Microservice{kv, kv.Value.(*pb.MicroService)}
+	return &Microservice{kv, kv.Value.(*registry.MicroService)}
 }
 func NewMicroserviceIndex(kv *KV) *MicroserviceIndex {
 	return &MicroserviceIndex{kv, kv.Value.(string)}
@@ -139,14 +139,14 @@ func NewMicroServiceRuleIndex(kv *KV) *MicroServiceRuleIndex {
 	return &MicroServiceRuleIndex{kv, kv.Value.(string)}
 }
 func NewMicroServiceRule(kv *KV) *MicroServiceRule {
-	return &MicroServiceRule{kv, kv.Value.(*pb.ServiceRule)}
+	return &MicroServiceRule{kv, kv.Value.(*registry.ServiceRule)}
 }
 func NewMicroServiceDependencyRule(kv *KV) *MicroServiceDependencyRule {
-	return &MicroServiceDependencyRule{kv, kv.Value.(*pb.MicroServiceDependency)}
+	return &MicroServiceDependencyRule{kv, kv.Value.(*registry.MicroServiceDependency)}
 }
 func NewSummary(kv *KV) *Summary { return &Summary{kv, kv.Value.(string)} }
 func NewInstance(kv *KV) *Instance {
-	return &Instance{kv, kv.Value.(*pb.MicroServiceInstance)}
+	return &Instance{kv, kv.Value.(*registry.MicroServiceInstance)}
 }
 
 type Cache struct {
@@ -170,7 +170,7 @@ type KV struct {
 
 type Microservice struct {
 	*KV
-	Value *pb.MicroService `json:"value,omitempty"`
+	Value *registry.MicroService `json:"value,omitempty"`
 }
 
 type MicroserviceIndex struct {
@@ -185,7 +185,7 @@ type MicroserviceAlias struct {
 
 type MicroServiceDependencyRule struct {
 	*KV
-	Value *pb.MicroServiceDependency `json:"value,omitempty"`
+	Value *registry.MicroServiceDependency `json:"value,omitempty"`
 }
 
 type MicroServiceRuleIndex struct {
@@ -195,7 +195,7 @@ type MicroServiceRuleIndex struct {
 
 type MicroServiceRule struct {
 	*KV
-	Value *pb.ServiceRule `json:"value,omitempty"`
+	Value *registry.ServiceRule `json:"value,omitempty"`
 }
 type Summary struct {
 	*KV
@@ -209,7 +209,7 @@ type Tag struct {
 
 type Instance struct {
 	*KV
-	Value *pb.MicroServiceInstance `json:"value,omitempty"`
+	Value *registry.MicroServiceInstance `json:"value,omitempty"`
 }
 
 type DumpRequest struct {
@@ -217,9 +217,9 @@ type DumpRequest struct {
 }
 
 type DumpResponse struct {
-	Response     *pb.Response      `json:"response,omitempty"`
-	Info         *version.Set      `json:"info,omitempty"`
-	AppConfig    map[string]string `json:"appConf,omitempty"`
-	Environments map[string]string `json:"environments,omitempty"`
-	Cache        *Cache            `json:"cache,omitempty"`
+	Response     *registry.Response `json:"response,omitempty"`
+	Info         *version.Set       `json:"info,omitempty"`
+	AppConfig    map[string]string  `json:"appConf,omitempty"`
+	Environments map[string]string  `json:"environments,omitempty"`
+	Cache        *Cache             `json:"cache,omitempty"`
 }
diff --git a/pkg/model/types.go b/pkg/model/types.go
index 3447aa9..16b7e69 100644
--- a/pkg/model/types.go
+++ b/pkg/model/types.go
@@ -16,16 +16,16 @@
 package model
 
 import (
+	"github.com/apache/servicecomb-service-center/pkg/registry"
+	"github.com/apache/servicecomb-service-center/pkg/types"
 	"github.com/apache/servicecomb-service-center/server/alarm/model"
-	pb "github.com/apache/servicecomb-service-center/server/core/proto"
-	"github.com/apache/servicecomb-service-center/server/plugin/registry"
 )
 
 type AlarmListRequest struct {
 }
 
 type AlarmListResponse struct {
-	Response *pb.Response        `json:"response,omitempty"`
+	Response *registry.Response  `json:"response,omitempty"`
 	Alarms   []*model.AlarmEvent `json:"alarms,omitempty"`
 }
 
@@ -33,13 +33,13 @@ type ClustersRequest struct {
 }
 
 type ClustersResponse struct {
-	Response *pb.Response      `json:"response,omitempty"`
-	Clusters registry.Clusters `json:"clusters,omitempty"`
+	Response *registry.Response `json:"response,omitempty"`
+	Clusters types.Clusters     `json:"clusters,omitempty"`
 }
 
 type ClearAlarmRequest struct {
 }
 
 type ClearAlarmResponse struct {
-	Response *pb.Response `json:"response,omitempty"`
+	Response *registry.Response `json:"response,omitempty"`
 }
diff --git a/server/core/proto/batch_find.go b/pkg/registry/batch_find.go
similarity index 99%
rename from server/core/proto/batch_find.go
rename to pkg/registry/batch_find.go
index 77a51d8..8fe7ffa 100644
--- a/server/core/proto/batch_find.go
+++ b/pkg/registry/batch_find.go
@@ -13,7 +13,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package proto
+package registry
 
 import (
 	scerr "github.com/apache/servicecomb-service-center/server/scerror"
diff --git a/pkg/registry/instance.go b/pkg/registry/instance.go
new file mode 100644
index 0000000..e06b8ed
--- /dev/null
+++ b/pkg/registry/instance.go
@@ -0,0 +1,111 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package registry
+
+type MicroServiceInstance struct {
+	InstanceId     string            `protobuf:"bytes,1,opt,name=instanceId" json:"instanceId,omitempty"`
+	ServiceId      string            `protobuf:"bytes,2,opt,name=serviceId" json:"serviceId,omitempty"`
+	Endpoints      []string          `protobuf:"bytes,3,rep,name=endpoints" json:"endpoints,omitempty"`
+	HostName       string            `protobuf:"bytes,4,opt,name=hostName" json:"hostName,omitempty"`
+	Status         string            `protobuf:"bytes,5,opt,name=status" json:"status,omitempty"`
+	Properties     map[string]string `protobuf:"bytes,6,rep,name=properties" json:"properties,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
+	HealthCheck    *HealthCheck      `protobuf:"bytes,7,opt,name=healthCheck" json:"healthCheck,omitempty"`
+	Timestamp      string            `protobuf:"bytes,8,opt,name=timestamp" json:"timestamp,omitempty"`
+	DataCenterInfo *DataCenterInfo   `protobuf:"bytes,9,opt,name=dataCenterInfo" json:"dataCenterInfo,omitempty"`
+	ModTimestamp   string            `protobuf:"bytes,10,opt,name=modTimestamp" json:"modTimestamp,omitempty"`
+	Version        string            `protobuf:"bytes,11,opt,name=version" json:"version,omitempty"`
+}
+type RegisterInstanceRequest struct {
+	Instance *MicroServiceInstance `protobuf:"bytes,1,opt,name=instance" json:"instance,omitempty"`
+}
+type FindInstancesRequest struct {
+	ConsumerServiceId string   `protobuf:"bytes,1,opt,name=consumerServiceId" json:"consumerServiceId,omitempty"`
+	AppId             string   `protobuf:"bytes,2,opt,name=appId" json:"appId,omitempty"`
+	ServiceName       string   `protobuf:"bytes,3,opt,name=serviceName" json:"serviceName,omitempty"`
+	VersionRule       string   `protobuf:"bytes,4,opt,name=versionRule" json:"versionRule,omitempty"`
+	Tags              []string `protobuf:"bytes,5,rep,name=tags" json:"tags,omitempty"`
+	Environment       string   `protobuf:"bytes,6,opt,name=environment" json:"environment,omitempty"`
+}
+type FindInstancesResponse struct {
+	Response  *Response               `protobuf:"bytes,1,opt,name=response" json:"response,omitempty"`
+	Instances []*MicroServiceInstance `protobuf:"bytes,2,rep,name=instances" json:"instances,omitempty"`
+}
+
+type GetOneInstanceRequest struct {
+	ConsumerServiceId  string   `protobuf:"bytes,1,opt,name=consumerServiceId" json:"consumerServiceId,omitempty"`
+	ProviderServiceId  string   `protobuf:"bytes,2,opt,name=providerServiceId" json:"providerServiceId,omitempty"`
+	ProviderInstanceId string   `protobuf:"bytes,3,opt,name=providerInstanceId" json:"providerInstanceId,omitempty"`
+	Tags               []string `protobuf:"bytes,4,rep,name=tags" json:"tags,omitempty"`
+}
+type GetOneInstanceResponse struct {
+	Response *Response             `protobuf:"bytes,1,opt,name=response" json:"response,omitempty"`
+	Instance *MicroServiceInstance `protobuf:"bytes,2,opt,name=instance" json:"instance,omitempty"`
+}
+type GetInstancesRequest struct {
+	ConsumerServiceId string   `protobuf:"bytes,1,opt,name=consumerServiceId" json:"consumerServiceId,omitempty"`
+	ProviderServiceId string   `protobuf:"bytes,2,opt,name=providerServiceId" json:"providerServiceId,omitempty"`
+	Tags              []string `protobuf:"bytes,3,rep,name=tags" json:"tags,omitempty"`
+}
+
+type GetInstancesResponse struct {
+	Response  *Response               `protobuf:"bytes,1,opt,name=response" json:"response,omitempty"`
+	Instances []*MicroServiceInstance `protobuf:"bytes,2,rep,name=instances" json:"instances,omitempty"`
+}
+
+type UpdateInstanceStatusRequest struct {
+	ServiceId  string `protobuf:"bytes,1,opt,name=serviceId" json:"serviceId,omitempty"`
+	InstanceId string `protobuf:"bytes,2,opt,name=instanceId" json:"instanceId,omitempty"`
+	Status     string `protobuf:"bytes,3,opt,name=status" json:"status,omitempty"`
+}
+
+type RegisterInstanceResponse struct {
+	Response   *Response `protobuf:"bytes,1,opt,name=response" json:"response,omitempty"`
+	InstanceId string    `protobuf:"bytes,2,opt,name=instanceId" json:"instanceId,omitempty"`
+}
+
+type UnregisterInstanceRequest struct {
+	ServiceId  string `protobuf:"bytes,1,opt,name=serviceId" json:"serviceId,omitempty"`
+	InstanceId string `protobuf:"bytes,2,opt,name=instanceId" json:"instanceId,omitempty"`
+}
+
+type UnregisterInstanceResponse struct {
+	Response *Response `protobuf:"bytes,1,opt,name=response" json:"response,omitempty"`
+}
+
+type HeartbeatRequest struct {
+	ServiceId  string `protobuf:"bytes,1,opt,name=serviceId" json:"serviceId,omitempty"`
+	InstanceId string `protobuf:"bytes,2,opt,name=instanceId" json:"instanceId,omitempty"`
+}
+
+type HeartbeatResponse struct {
+	Response *Response `protobuf:"bytes,1,opt,name=response" json:"response,omitempty"`
+}
+
+type UpdateInstanceStatusResponse struct {
+	Response *Response `protobuf:"bytes,1,opt,name=response" json:"response,omitempty"`
+}
+
+type UpdateInstancePropsRequest struct {
+	ServiceId  string            `protobuf:"bytes,1,opt,name=serviceId" json:"serviceId,omitempty"`
+	InstanceId string            `protobuf:"bytes,2,opt,name=instanceId" json:"instanceId,omitempty"`
+	Properties map[string]string `protobuf:"bytes,3,rep,name=properties" json:"properties,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
+}
+
+type UpdateInstancePropsResponse struct {
+	Response *Response `protobuf:"bytes,1,opt,name=response" json:"response,omitempty"`
+}
diff --git a/pkg/registry/schema.go b/pkg/registry/schema.go
new file mode 100644
index 0000000..1eb905b
--- /dev/null
+++ b/pkg/registry/schema.go
@@ -0,0 +1,72 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package registry
+
+type ModifySchemasRequest struct {
+	ServiceId string    `protobuf:"bytes,1,opt,name=serviceId" json:"serviceId,omitempty"`
+	Schemas   []*Schema `protobuf:"bytes,2,rep,name=schemas" json:"schemas,omitempty"`
+}
+
+type Schema struct {
+	SchemaId string `protobuf:"bytes,1,opt,name=schemaId" json:"schemaId,omitempty"`
+	Summary  string `protobuf:"bytes,2,opt,name=summary" json:"summary,omitempty"`
+	Schema   string `protobuf:"bytes,3,opt,name=schema" json:"schema,omitempty"`
+}
+
+type ModifySchemasResponse struct {
+	Response *Response `protobuf:"bytes,1,opt,name=response" json:"response,omitempty"`
+}
+type ModifySchemaRequest struct {
+	ServiceId string `protobuf:"bytes,1,opt,name=serviceId" json:"serviceId,omitempty"`
+	SchemaId  string `protobuf:"bytes,2,opt,name=schemaId" json:"schemaId,omitempty"`
+	Schema    string `protobuf:"bytes,3,opt,name=schema" json:"schema,omitempty"`
+	Summary   string `protobuf:"bytes,4,opt,name=summary" json:"summary,omitempty"`
+}
+type ModifySchemaResponse struct {
+	Response *Response `protobuf:"bytes,1,opt,name=response" json:"response,omitempty"`
+}
+
+type GetSchemaRequest struct {
+	ServiceId string `protobuf:"bytes,1,opt,name=serviceId" json:"serviceId,omitempty"`
+	SchemaId  string `protobuf:"bytes,2,opt,name=schemaId" json:"schemaId,omitempty"`
+}
+
+type GetAllSchemaRequest struct {
+	ServiceId  string `protobuf:"bytes,1,opt,name=serviceId" json:"serviceId,omitempty"`
+	WithSchema bool   `protobuf:"varint,2,opt,name=withSchema" json:"withSchema,omitempty"`
+}
+
+type GetSchemaResponse struct {
+	Response      *Response `protobuf:"bytes,1,opt,name=response" json:"response,omitempty"`
+	Schema        string    `protobuf:"bytes,2,opt,name=schema" json:"schema,omitempty"`
+	SchemaSummary string    `protobuf:"bytes,3,opt,name=schemaSummary" json:"schemaSummary,omitempty"`
+}
+
+type GetAllSchemaResponse struct {
+	Response *Response `protobuf:"bytes,1,opt,name=response" json:"response,omitempty"`
+	Schemas  []*Schema `protobuf:"bytes,2,rep,name=schemas" json:"schemas,omitempty"`
+}
+
+type DeleteSchemaRequest struct {
+	ServiceId string `protobuf:"bytes,1,opt,name=serviceId" json:"serviceId,omitempty"`
+	SchemaId  string `protobuf:"bytes,2,opt,name=schemaId" json:"schemaId,omitempty"`
+}
+
+type DeleteSchemaResponse struct {
+	Response *Response `protobuf:"bytes,1,opt,name=response" json:"response,omitempty"`
+}
diff --git a/pkg/registry/service.go b/pkg/registry/service.go
new file mode 100644
index 0000000..bdeb096
--- /dev/null
+++ b/pkg/registry/service.go
@@ -0,0 +1,45 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package registry
+
+type MicroService struct {
+	ServiceId    string             `protobuf:"bytes,1,opt,name=serviceId" json:"serviceId,omitempty"`
+	AppId        string             `protobuf:"bytes,2,opt,name=appId" json:"appId,omitempty"`
+	ServiceName  string             `protobuf:"bytes,3,opt,name=serviceName" json:"serviceName,omitempty"`
+	Version      string             `protobuf:"bytes,4,opt,name=version" json:"version,omitempty"`
+	Description  string             `protobuf:"bytes,5,opt,name=description" json:"description,omitempty"`
+	Level        string             `protobuf:"bytes,6,opt,name=level" json:"level,omitempty"`
+	Schemas      []string           `protobuf:"bytes,7,rep,name=schemas" json:"schemas,omitempty"`
+	Paths        []*ServicePath     `protobuf:"bytes,10,rep,name=paths" json:"paths,omitempty"`
+	Status       string             `protobuf:"bytes,8,opt,name=status" json:"status,omitempty"`
+	Properties   map[string]string  `protobuf:"bytes,9,rep,name=properties" json:"properties,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
+	Timestamp    string             `protobuf:"bytes,11,opt,name=timestamp" json:"timestamp,omitempty"`
+	Providers    []*MicroServiceKey `protobuf:"bytes,12,rep,name=providers" json:"providers,omitempty"`
+	Alias        string             `protobuf:"bytes,13,opt,name=alias" json:"alias,omitempty"`
+	LBStrategy   map[string]string  `protobuf:"bytes,14,rep,name=LBStrategy" json:"LBStrategy,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
+	ModTimestamp string             `protobuf:"bytes,15,opt,name=modTimestamp" json:"modTimestamp,omitempty"`
+	Environment  string             `protobuf:"bytes,16,opt,name=environment" json:"environment,omitempty"`
+	RegisterBy   string             `protobuf:"bytes,17,opt,name=registerBy" json:"registerBy,omitempty"`
+	Framework    *FrameWorkProperty `protobuf:"bytes,18,opt,name=framework" json:"framework,omitempty"`
+}
+
+// 删除服务请求
+type DelServicesRequest struct {
+	ServiceIds []string `protobuf:"bytes,1,rep,name=serviceIds" json:"serviceIds,omitempty"`
+	Force      bool     `protobuf:"varint,2,opt,name=force" json:"force,omitempty"`
+}
diff --git a/server/core/proto/services.pb.go b/pkg/registry/struct.go
similarity index 56%
copy from server/core/proto/services.pb.go
copy to pkg/registry/struct.go
index bacf07e..453ce57 100644
--- a/server/core/proto/services.pb.go
+++ b/pkg/registry/struct.go
@@ -15,28 +15,40 @@
  * limitations under the License.
  */
 
-package proto
-
-import (
-	"context"
-	"google.golang.org/grpc"
+package registry
+
+import "github.com/apache/servicecomb-service-center/pkg/types"
+
+const (
+	MS_UP   string = "UP"
+	MS_DOWN string = "DOWN"
+
+	MSI_UP           string = "UP"
+	MSI_DOWN         string = "DOWN"
+	MSI_STARTING     string = "STARTING"
+	MSI_TESTING      string = "TESTING"
+	MSI_OUTOFSERVICE string = "OUTOFSERVICE"
+
+	ENV_DEV    string = "development"
+	ENV_TEST   string = "testing"
+	ENV_ACCEPT string = "acceptance"
+	ENV_PROD   string = "production"
+
+	REGISTERBY_SDK      string = "SDK"
+	REGISTERBY_SIDECAR  string = "SIDECAR"
+	REGISTERBY_PLATFORM string = "PLATFORM"
+
+	EVT_INIT   types.EventType = "INIT"
+	EVT_CREATE types.EventType = "CREATE"
+	EVT_UPDATE types.EventType = "UPDATE"
+	EVT_DELETE types.EventType = "DELETE"
+	EVT_EXPIRE types.EventType = "EXPIRE"
+	EVT_ERROR  types.EventType = "ERROR"
+
+	CHECK_BY_HEARTBEAT string = "push"
+	CHECK_BY_PLATFORM  string = "pull"
 )
 
-type ModifySchemasRequest struct {
-	ServiceId string    `protobuf:"bytes,1,opt,name=serviceId" json:"serviceId,omitempty"`
-	Schemas   []*Schema `protobuf:"bytes,2,rep,name=schemas" json:"schemas,omitempty"`
-}
-
-type Schema struct {
-	SchemaId string `protobuf:"bytes,1,opt,name=schemaId" json:"schemaId,omitempty"`
-	Summary  string `protobuf:"bytes,2,opt,name=summary" json:"summary,omitempty"`
-	Schema   string `protobuf:"bytes,3,opt,name=schema" json:"schema,omitempty"`
-}
-
-type ModifySchemasResponse struct {
-	Response *Response `protobuf:"bytes,1,opt,name=response" json:"response,omitempty"`
-}
-
 type HeartbeatSetRequest struct {
 	Instances []*HeartbeatSetElement `protobuf:"bytes,1,rep,name=instances" json:"instances,omitempty"`
 }
@@ -101,27 +113,6 @@ type MicroServiceKey struct {
 	Alias       string `protobuf:"bytes,7,opt,name=alias" json:"alias,omitempty"`
 }
 
-type MicroService struct {
-	ServiceId    string             `protobuf:"bytes,1,opt,name=serviceId" json:"serviceId,omitempty"`
-	AppId        string             `protobuf:"bytes,2,opt,name=appId" json:"appId,omitempty"`
-	ServiceName  string             `protobuf:"bytes,3,opt,name=serviceName" json:"serviceName,omitempty"`
-	Version      string             `protobuf:"bytes,4,opt,name=version" json:"version,omitempty"`
-	Description  string             `protobuf:"bytes,5,opt,name=description" json:"description,omitempty"`
-	Level        string             `protobuf:"bytes,6,opt,name=level" json:"level,omitempty"`
-	Schemas      []string           `protobuf:"bytes,7,rep,name=schemas" json:"schemas,omitempty"`
-	Paths        []*ServicePath     `protobuf:"bytes,10,rep,name=paths" json:"paths,omitempty"`
-	Status       string             `protobuf:"bytes,8,opt,name=status" json:"status,omitempty"`
-	Properties   map[string]string  `protobuf:"bytes,9,rep,name=properties" json:"properties,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
-	Timestamp    string             `protobuf:"bytes,11,opt,name=timestamp" json:"timestamp,omitempty"`
-	Providers    []*MicroServiceKey `protobuf:"bytes,12,rep,name=providers" json:"providers,omitempty"`
-	Alias        string             `protobuf:"bytes,13,opt,name=alias" json:"alias,omitempty"`
-	LBStrategy   map[string]string  `protobuf:"bytes,14,rep,name=LBStrategy" json:"LBStrategy,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
-	ModTimestamp string             `protobuf:"bytes,15,opt,name=modTimestamp" json:"modTimestamp,omitempty"`
-	Environment  string             `protobuf:"bytes,16,opt,name=environment" json:"environment,omitempty"`
-	RegisterBy   string             `protobuf:"bytes,17,opt,name=registerBy" json:"registerBy,omitempty"`
-	Framework    *FrameWorkProperty `protobuf:"bytes,18,opt,name=framework" json:"framework,omitempty"`
-}
-
 type FrameWorkProperty struct {
 	Name    string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
 	Version string `protobuf:"bytes,2,opt,name=version" json:"version,omitempty"`
@@ -160,7 +151,6 @@ func (m *Response) GetCode() int32 {
 	}
 	return 0
 }
-
 func (m *Response) GetMessage() string {
 	if m != nil {
 		return m.Message
@@ -322,20 +312,6 @@ type HealthCheck struct {
 	Url      string `protobuf:"bytes,5,opt,name=url" json:"url,omitempty"`
 }
 
-type MicroServiceInstance struct {
-	InstanceId     string            `protobuf:"bytes,1,opt,name=instanceId" json:"instanceId,omitempty"`
-	ServiceId      string            `protobuf:"bytes,2,opt,name=serviceId" json:"serviceId,omitempty"`
-	Endpoints      []string          `protobuf:"bytes,3,rep,name=endpoints" json:"endpoints,omitempty"`
-	HostName       string            `protobuf:"bytes,4,opt,name=hostName" json:"hostName,omitempty"`
-	Status         string            `protobuf:"bytes,5,opt,name=status" json:"status,omitempty"`
-	Properties     map[string]string `protobuf:"bytes,6,rep,name=properties" json:"properties,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
-	HealthCheck    *HealthCheck      `protobuf:"bytes,7,opt,name=healthCheck" json:"healthCheck,omitempty"`
-	Timestamp      string            `protobuf:"bytes,8,opt,name=timestamp" json:"timestamp,omitempty"`
-	DataCenterInfo *DataCenterInfo   `protobuf:"bytes,9,opt,name=dataCenterInfo" json:"dataCenterInfo,omitempty"`
-	ModTimestamp   string            `protobuf:"bytes,10,opt,name=modTimestamp" json:"modTimestamp,omitempty"`
-	Version        string            `protobuf:"bytes,11,opt,name=version" json:"version,omitempty"`
-}
-
 type DataCenterInfo struct {
 	Name          string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
 	Region        string `protobuf:"bytes,2,opt,name=region" json:"region,omitempty"`
@@ -347,90 +323,6 @@ type MicroServiceInstanceKey struct {
 	ServiceId  string `protobuf:"bytes,2,opt,name=serviceId" json:"serviceId,omitempty"`
 }
 
-type RegisterInstanceRequest struct {
-	Instance *MicroServiceInstance `protobuf:"bytes,1,opt,name=instance" json:"instance,omitempty"`
-}
-
-type RegisterInstanceResponse struct {
-	Response   *Response `protobuf:"bytes,1,opt,name=response" json:"response,omitempty"`
-	InstanceId string    `protobuf:"bytes,2,opt,name=instanceId" json:"instanceId,omitempty"`
-}
-
-type UnregisterInstanceRequest struct {
-	ServiceId  string `protobuf:"bytes,1,opt,name=serviceId" json:"serviceId,omitempty"`
-	InstanceId string `protobuf:"bytes,2,opt,name=instanceId" json:"instanceId,omitempty"`
-}
-
-type UnregisterInstanceResponse struct {
-	Response *Response `protobuf:"bytes,1,opt,name=response" json:"response,omitempty"`
-}
-
-type HeartbeatRequest struct {
-	ServiceId  string `protobuf:"bytes,1,opt,name=serviceId" json:"serviceId,omitempty"`
-	InstanceId string `protobuf:"bytes,2,opt,name=instanceId" json:"instanceId,omitempty"`
-}
-
-type HeartbeatResponse struct {
-	Response *Response `protobuf:"bytes,1,opt,name=response" json:"response,omitempty"`
-}
-
-type FindInstancesRequest struct {
-	ConsumerServiceId string   `protobuf:"bytes,1,opt,name=consumerServiceId" json:"consumerServiceId,omitempty"`
-	AppId             string   `protobuf:"bytes,2,opt,name=appId" json:"appId,omitempty"`
-	ServiceName       string   `protobuf:"bytes,3,opt,name=serviceName" json:"serviceName,omitempty"`
-	VersionRule       string   `protobuf:"bytes,4,opt,name=versionRule" json:"versionRule,omitempty"`
-	Tags              []string `protobuf:"bytes,5,rep,name=tags" json:"tags,omitempty"`
-	Environment       string   `protobuf:"bytes,6,opt,name=environment" json:"environment,omitempty"`
-}
-
-type FindInstancesResponse struct {
-	Response  *Response               `protobuf:"bytes,1,opt,name=response" json:"response,omitempty"`
-	Instances []*MicroServiceInstance `protobuf:"bytes,2,rep,name=instances" json:"instances,omitempty"`
-}
-
-type GetOneInstanceRequest struct {
-	ConsumerServiceId  string   `protobuf:"bytes,1,opt,name=consumerServiceId" json:"consumerServiceId,omitempty"`
-	ProviderServiceId  string   `protobuf:"bytes,2,opt,name=providerServiceId" json:"providerServiceId,omitempty"`
-	ProviderInstanceId string   `protobuf:"bytes,3,opt,name=providerInstanceId" json:"providerInstanceId,omitempty"`
-	Tags               []string `protobuf:"bytes,4,rep,name=tags" json:"tags,omitempty"`
-}
-
-type GetOneInstanceResponse struct {
-	Response *Response             `protobuf:"bytes,1,opt,name=response" json:"response,omitempty"`
-	Instance *MicroServiceInstance `protobuf:"bytes,2,opt,name=instance" json:"instance,omitempty"`
-}
-
-type GetInstancesRequest struct {
-	ConsumerServiceId string   `protobuf:"bytes,1,opt,name=consumerServiceId" json:"consumerServiceId,omitempty"`
-	ProviderServiceId string   `protobuf:"bytes,2,opt,name=providerServiceId" json:"providerServiceId,omitempty"`
-	Tags              []string `protobuf:"bytes,3,rep,name=tags" json:"tags,omitempty"`
-}
-
-type GetInstancesResponse struct {
-	Response  *Response               `protobuf:"bytes,1,opt,name=response" json:"response,omitempty"`
-	Instances []*MicroServiceInstance `protobuf:"bytes,2,rep,name=instances" json:"instances,omitempty"`
-}
-
-type UpdateInstanceStatusRequest struct {
-	ServiceId  string `protobuf:"bytes,1,opt,name=serviceId" json:"serviceId,omitempty"`
-	InstanceId string `protobuf:"bytes,2,opt,name=instanceId" json:"instanceId,omitempty"`
-	Status     string `protobuf:"bytes,3,opt,name=status" json:"status,omitempty"`
-}
-
-type UpdateInstanceStatusResponse struct {
-	Response *Response `protobuf:"bytes,1,opt,name=response" json:"response,omitempty"`
-}
-
-type UpdateInstancePropsRequest struct {
-	ServiceId  string            `protobuf:"bytes,1,opt,name=serviceId" json:"serviceId,omitempty"`
-	InstanceId string            `protobuf:"bytes,2,opt,name=instanceId" json:"instanceId,omitempty"`
-	Properties map[string]string `protobuf:"bytes,3,rep,name=properties" json:"properties,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
-}
-
-type UpdateInstancePropsResponse struct {
-	Response *Response `protobuf:"bytes,1,opt,name=response" json:"response,omitempty"`
-}
-
 type WatchInstanceRequest struct {
 	SelfServiceId string `protobuf:"bytes,1,opt,name=selfServiceId" json:"selfServiceId,omitempty"`
 }
@@ -442,47 +334,6 @@ type WatchInstanceResponse struct {
 	Instance *MicroServiceInstance `protobuf:"bytes,4,opt,name=instance" json:"instance,omitempty"`
 }
 
-type GetSchemaRequest struct {
-	ServiceId string `protobuf:"bytes,1,opt,name=serviceId" json:"serviceId,omitempty"`
-	SchemaId  string `protobuf:"bytes,2,opt,name=schemaId" json:"schemaId,omitempty"`
-}
-
-type GetAllSchemaRequest struct {
-	ServiceId  string `protobuf:"bytes,1,opt,name=serviceId" json:"serviceId,omitempty"`
-	WithSchema bool   `protobuf:"varint,2,opt,name=withSchema" json:"withSchema,omitempty"`
-}
-
-type GetSchemaResponse struct {
-	Response      *Response `protobuf:"bytes,1,opt,name=response" json:"response,omitempty"`
-	Schema        string    `protobuf:"bytes,2,opt,name=schema" json:"schema,omitempty"`
-	SchemaSummary string    `protobuf:"bytes,3,opt,name=schemaSummary" json:"schemaSummary,omitempty"`
-}
-
-type GetAllSchemaResponse struct {
-	Response *Response `protobuf:"bytes,1,opt,name=response" json:"response,omitempty"`
-	Schemas  []*Schema `protobuf:"bytes,2,rep,name=schemas" json:"schemas,omitempty"`
-}
-
-type DeleteSchemaRequest struct {
-	ServiceId string `protobuf:"bytes,1,opt,name=serviceId" json:"serviceId,omitempty"`
-	SchemaId  string `protobuf:"bytes,2,opt,name=schemaId" json:"schemaId,omitempty"`
-}
-
-type DeleteSchemaResponse struct {
-	Response *Response `protobuf:"bytes,1,opt,name=response" json:"response,omitempty"`
-}
-
-type ModifySchemaRequest struct {
-	ServiceId string `protobuf:"bytes,1,opt,name=serviceId" json:"serviceId,omitempty"`
-	SchemaId  string `protobuf:"bytes,2,opt,name=schemaId" json:"schemaId,omitempty"`
-	Schema    string `protobuf:"bytes,3,opt,name=schema" json:"schema,omitempty"`
-	Summary   string `protobuf:"bytes,4,opt,name=summary" json:"summary,omitempty"`
-}
-
-type ModifySchemaResponse struct {
-	Response *Response `protobuf:"bytes,1,opt,name=response" json:"response,omitempty"`
-}
-
 type AddDependenciesRequest struct {
 	Dependencies []*ConsumerDependency `protobuf:"bytes,1,rep,name=dependencies" json:"dependencies,omitempty"`
 }
@@ -540,12 +391,6 @@ type GetServiceDetailResponse struct {
 	Service  *ServiceDetail `protobuf:"bytes,2,opt,name=service" json:"service,omitempty"`
 }
 
-// 删除服务请求
-type DelServicesRequest struct {
-	ServiceIds []string `protobuf:"bytes,1,rep,name=serviceIds" json:"serviceIds,omitempty"`
-	Force      bool     `protobuf:"varint,2,opt,name=force" json:"force,omitempty"`
-}
-
 // 删除服务响应内容
 type DelServicesRspInfo struct {
 	ErrMessage string `protobuf:"bytes,1,opt,name=errMessage" json:"errMessage,omitempty"`
@@ -567,50 +412,6 @@ type GetAppsResponse struct {
 	Response *Response `protobuf:"bytes,1,opt,name=response" json:"response,omitempty"`
 	AppIds   []string  `protobuf:"bytes,2,rep,name=appIds" json:"appIds,omitempty"`
 }
-type ServiceCtrlServer interface {
-	Exist(context.Context, *GetExistenceRequest) (*GetExistenceResponse, error)
-	Create(context.Context, *CreateServiceRequest) (*CreateServiceResponse, error)
-	Delete(context.Context, *DeleteServiceRequest) (*DeleteServiceResponse, error)
-	GetOne(context.Context, *GetServiceRequest) (*GetServiceResponse, error)
-	GetServices(context.Context, *GetServicesRequest) (*GetServicesResponse, error)
-	UpdateProperties(context.Context, *UpdateServicePropsRequest) (*UpdateServicePropsResponse, error)
-	AddRule(context.Context, *AddServiceRulesRequest) (*AddServiceRulesResponse, error)
-	GetRule(context.Context, *GetServiceRulesRequest) (*GetServiceRulesResponse, error)
-	UpdateRule(context.Context, *UpdateServiceRuleRequest) (*UpdateServiceRuleResponse, error)
-	DeleteRule(context.Context, *DeleteServiceRulesRequest) (*DeleteServiceRulesResponse, error)
-	AddTags(context.Context, *AddServiceTagsRequest) (*AddServiceTagsResponse, error)
-	GetTags(context.Context, *GetServiceTagsRequest) (*GetServiceTagsResponse, error)
-	UpdateTag(context.Context, *UpdateServiceTagRequest) (*UpdateServiceTagResponse, error)
-	DeleteTags(context.Context, *DeleteServiceTagsRequest) (*DeleteServiceTagsResponse, error)
-	GetSchemaInfo(context.Context, *GetSchemaRequest) (*GetSchemaResponse, error)
-	GetAllSchemaInfo(context.Context, *GetAllSchemaRequest) (*GetAllSchemaResponse, error)
-	DeleteSchema(context.Context, *DeleteSchemaRequest) (*DeleteSchemaResponse, error)
-	ModifySchema(context.Context, *ModifySchemaRequest) (*ModifySchemaResponse, error)
-	ModifySchemas(context.Context, *ModifySchemasRequest) (*ModifySchemasResponse, error)
-	AddDependenciesForMicroServices(context.Context, *AddDependenciesRequest) (*AddDependenciesResponse, error)
-	CreateDependenciesForMicroServices(context.Context, *CreateDependenciesRequest) (*CreateDependenciesResponse, error)
-	GetProviderDependencies(context.Context, *GetDependenciesRequest) (*GetProDependenciesResponse, error)
-	GetConsumerDependencies(context.Context, *GetDependenciesRequest) (*GetConDependenciesResponse, error)
-	DeleteServices(context.Context, *DelServicesRequest) (*DelServicesResponse, error)
-}
-type ServiceInstanceCtrlServer interface {
-	Register(context.Context, *RegisterInstanceRequest) (*RegisterInstanceResponse, error)
-	Unregister(context.Context, *UnregisterInstanceRequest) (*UnregisterInstanceResponse, error)
-	Heartbeat(context.Context, *HeartbeatRequest) (*HeartbeatResponse, error)
-	Find(context.Context, *FindInstancesRequest) (*FindInstancesResponse, error)
-	GetInstances(context.Context, *GetInstancesRequest) (*GetInstancesResponse, error)
-	GetOneInstance(context.Context, *GetOneInstanceRequest) (*GetOneInstanceResponse, error)
-	UpdateStatus(context.Context, *UpdateInstanceStatusRequest) (*UpdateInstanceStatusResponse, error)
-	UpdateInstanceProperties(context.Context, *UpdateInstancePropsRequest) (*UpdateInstancePropsResponse, error)
-	Watch(*WatchInstanceRequest, ServiceInstanceCtrl_WatchServer) error
-	HeartbeatSet(context.Context, *HeartbeatSetRequest) (*HeartbeatSetResponse, error)
-}
-type ServiceInstanceCtrl_WatchServer interface {
-	Send(*WatchInstanceResponse) error
-	grpc.ServerStream
-}
-type GovernServiceCtrlServer interface {
-	GetServiceDetail(context.Context, *GetServiceRequest) (*GetServiceDetailResponse, error)
-	GetServicesInfo(context.Context, *GetServicesInfoRequest) (*GetServicesInfoResponse, error)
-	GetApplications(context.Context, *GetAppsRequest) (*GetAppsResponse, error)
+type MicroServiceDependency struct {
+	Dependency []*MicroServiceKey `json:"Dependency,omitempty"`
 }
diff --git a/server/core/proto/services.go b/pkg/types/cluster.go
similarity index 62%
copy from server/core/proto/services.go
copy to pkg/types/cluster.go
index 8e709da..9e13338 100644
--- a/server/core/proto/services.go
+++ b/pkg/types/cluster.go
@@ -14,20 +14,9 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package proto
 
-import (
-	"context"
-	"github.com/gorilla/websocket"
-)
+package types
 
-type ServiceInstanceCtrlServerEx interface {
-	ServiceInstanceCtrlServer
+type Clusters map[string][]string
 
-	BatchFind(ctx context.Context, in *BatchFindInstancesRequest) (*BatchFindInstancesResponse, error)
-
-	WebSocketWatch(ctx context.Context, in *WatchInstanceRequest, conn *websocket.Conn)
-	WebSocketListAndWatch(ctx context.Context, in *WatchInstanceRequest, conn *websocket.Conn)
-
-	ClusterHealth(ctx context.Context) (*GetInstancesResponse, error)
-}
+type EventType string
diff --git a/scctl/pkg/cmd/cmd.go b/scctl/pkg/cmd/cmd.go
index 4de89dd..2ad24e0 100644
--- a/scctl/pkg/cmd/cmd.go
+++ b/scctl/pkg/cmd/cmd.go
@@ -17,7 +17,7 @@ package cmd
 
 import (
 	"fmt"
-	"github.com/apache/servicecomb-service-center/pkg/client/sc"
+	"github.com/apache/servicecomb-service-center/client"
 	"github.com/apache/servicecomb-service-center/pkg/util"
 	"github.com/apache/servicecomb-service-center/scctl/pkg/version"
 	"github.com/spf13/cobra"
@@ -34,7 +34,7 @@ var rootCmd = &cobra.Command{
 	Use:   version.TOOL_NAME + " <command>",
 	Short: "The admin control command of service center",
 }
-var ScClientConfig sc.Config
+var ScClientConfig client.Config
 
 func init() {
 	var timeout string
diff --git a/scctl/pkg/model/types.go b/scctl/pkg/model/types.go
index 3a1a06f..022c5ec 100644
--- a/scctl/pkg/model/types.go
+++ b/scctl/pkg/model/types.go
@@ -17,21 +17,21 @@ package model
 
 import (
 	"github.com/apache/servicecomb-service-center/pkg/model"
+	"github.com/apache/servicecomb-service-center/pkg/registry"
 	"github.com/apache/servicecomb-service-center/pkg/util"
 	"github.com/apache/servicecomb-service-center/server/core"
-	"github.com/apache/servicecomb-service-center/server/core/proto"
 	"strconv"
 	"time"
 )
 
-func GetDomainProject(resouce interface{}) (domainProject string) {
-	switch resouce.(type) {
+func GetDomainProject(resource interface{}) (domainProject string) {
+	switch resource.(type) {
 	case *model.Microservice:
 		_, domainProject = core.GetInfoFromSvcKV(
-			util.StringToBytesWithNoCopy(resouce.(*model.Microservice).Key))
+			util.StringToBytesWithNoCopy(resource.(*model.Microservice).Key))
 	case *model.Instance:
 		_, _, domainProject = core.GetInfoFromInstKV(
-			util.StringToBytesWithNoCopy(resouce.(*model.Instance).Key))
+			util.StringToBytesWithNoCopy(resource.(*model.Instance).Key))
 	}
 	return
 }
@@ -42,7 +42,7 @@ type Service struct {
 	AppId         string
 	ServiceName   string
 	Versions      []string
-	Frameworks    []*proto.FrameWorkProperty
+	Frameworks    []*registry.FrameWorkProperty
 	Endpoints     []string
 	Timestamp     int64 // the seconds from 0 to now
 }
@@ -51,7 +51,7 @@ func (s *Service) AppendVersion(v string) {
 	s.Versions = append(s.Versions, v)
 }
 
-func (s *Service) AppendFramework(property *proto.FrameWorkProperty) {
+func (s *Service) AppendFramework(property *registry.FrameWorkProperty) {
 	if property == nil || property.Name == "" {
 		return
 	}
@@ -89,17 +89,17 @@ type Instance struct {
 	AppId         string
 	ServiceName   string
 	Version       string
-	Framework     *proto.FrameWorkProperty
+	Framework     *registry.FrameWorkProperty
 	Lease         int64 // seconds
 	Timestamp     int64 // the seconds from 0 to now
 }
 
-func (s *Instance) SetLease(hc *proto.HealthCheck) {
+func (s *Instance) SetLease(hc *registry.HealthCheck) {
 	if hc == nil {
 		s.Lease = -1
 		return
 	}
-	if hc.Mode == proto.CHECK_BY_PLATFORM {
+	if hc.Mode == registry.CHECK_BY_PLATFORM {
 		s.Lease = 0
 		return
 	}
diff --git a/scctl/pkg/plugin/diagnose/compare_holder.go b/scctl/pkg/plugin/diagnose/compare_holder.go
index 2464f6f..dffa797 100644
--- a/scctl/pkg/plugin/diagnose/compare_holder.go
+++ b/scctl/pkg/plugin/diagnose/compare_holder.go
@@ -20,7 +20,8 @@ import (
 	"fmt"
 	"github.com/apache/servicecomb-service-center/pkg/gopool"
 	"github.com/apache/servicecomb-service-center/pkg/model"
-	pb "github.com/apache/servicecomb-service-center/server/core/proto"
+	pb "github.com/apache/servicecomb-service-center/pkg/registry"
+	"github.com/apache/servicecomb-service-center/server/core/proto"
 	"github.com/coreos/etcd/mvcc/mvccpb"
 )
 
@@ -30,7 +31,7 @@ type CompareHolder interface {
 
 type DataStore struct {
 	Data       []*mvccpb.KeyValue
-	DataParser pb.Parser
+	DataParser proto.Parser
 }
 
 func (d *DataStore) ForEach(f func(i int, v *model.KV) bool) {
@@ -133,7 +134,7 @@ type ServiceCompareHolder struct {
 
 func (h *ServiceCompareHolder) Compare() *CompareResult {
 	h.abstractCompareHolder = &abstractCompareHolder{
-		Cache: &h.Cache, DataStore: &DataStore{Data: h.Kvs, DataParser: pb.ServiceParser}, MismatchFunc: h.toName,
+		Cache: &h.Cache, DataStore: &DataStore{Data: h.Kvs, DataParser: proto.ServiceParser}, MismatchFunc: h.toName,
 	}
 	r := h.abstractCompareHolder.Compare()
 	r.Name = service
@@ -155,7 +156,7 @@ type InstanceCompareHolder struct {
 
 func (h *InstanceCompareHolder) Compare() *CompareResult {
 	h.abstractCompareHolder = &abstractCompareHolder{
-		Cache: &h.Cache, DataStore: &DataStore{Data: h.Kvs, DataParser: pb.InstanceParser}, MismatchFunc: h.toName,
+		Cache: &h.Cache, DataStore: &DataStore{Data: h.Kvs, DataParser: proto.InstanceParser}, MismatchFunc: h.toName,
 	}
 	r := h.abstractCompareHolder.Compare()
 	r.Name = instance
diff --git a/scctl/pkg/plugin/diagnose/compare_holder_test.go b/scctl/pkg/plugin/diagnose/compare_holder_test.go
index 6928342..caf68bd 100644
--- a/scctl/pkg/plugin/diagnose/compare_holder_test.go
+++ b/scctl/pkg/plugin/diagnose/compare_holder_test.go
@@ -17,16 +17,16 @@ package diagnose
 
 import (
 	model2 "github.com/apache/servicecomb-service-center/pkg/model"
-	"github.com/apache/servicecomb-service-center/server/core/proto"
+	"github.com/apache/servicecomb-service-center/pkg/registry"
 	"github.com/coreos/etcd/mvcc/mvccpb"
 	"testing"
 )
 
 func TestAbstractCompareHolder_Compare(t *testing.T) {
 	services := model2.MicroserviceSlice{
-		model2.NewMicroservice(&model2.KV{Key: "1", Rev: 1, Value: &proto.MicroService{ServiceId: "1"}}), // greater
-		model2.NewMicroservice(&model2.KV{Key: "2", Rev: 1, Value: &proto.MicroService{ServiceId: "2"}}), // mismatch
-		model2.NewMicroservice(&model2.KV{Key: "4", Rev: 2, Value: &proto.MicroService{ServiceId: "4"}}), // pass
+		model2.NewMicroservice(&model2.KV{Key: "1", Rev: 1, Value: &registry.MicroService{ServiceId: "1"}}), // greater
+		model2.NewMicroservice(&model2.KV{Key: "2", Rev: 1, Value: &registry.MicroService{ServiceId: "2"}}), // mismatch
+		model2.NewMicroservice(&model2.KV{Key: "4", Rev: 2, Value: &registry.MicroService{ServiceId: "4"}}), // pass
 	}
 	kvs := []*mvccpb.KeyValue{
 		{Key: []byte("2"), ModRevision: 2, Value: []byte(`{"ServiceID":"22"}`)},
diff --git a/scctl/pkg/plugin/diagnose/diagnose.go b/scctl/pkg/plugin/diagnose/diagnose.go
index 0b6a25d..cf6cc78 100644
--- a/scctl/pkg/plugin/diagnose/diagnose.go
+++ b/scctl/pkg/plugin/diagnose/diagnose.go
@@ -19,7 +19,7 @@ import (
 	"bytes"
 	"context"
 	"fmt"
-	"github.com/apache/servicecomb-service-center/pkg/client/sc"
+	"github.com/apache/servicecomb-service-center/client"
 	"github.com/apache/servicecomb-service-center/pkg/model"
 	"github.com/apache/servicecomb-service-center/scctl/etcd"
 	"github.com/apache/servicecomb-service-center/scctl/pkg/cmd"
@@ -48,7 +48,7 @@ type etcdResponse map[string][]*mvccpb.KeyValue
 
 func DiagnoseCommandFunc(_ *cobra.Command, args []string) {
 	// initialize sc/etcd clients
-	scClient, err := sc.NewSCClient(cmd.ScClientConfig)
+	scClient, err := client.NewSCClient(cmd.ScClientConfig)
 	if err != nil {
 		cmd.StopAndExit(cmd.ExitError, err)
 	}
diff --git a/scctl/pkg/plugin/diagnose/diagnose_test.go b/scctl/pkg/plugin/diagnose/diagnose_test.go
index 0a879f9..05e7c45 100644
--- a/scctl/pkg/plugin/diagnose/diagnose_test.go
+++ b/scctl/pkg/plugin/diagnose/diagnose_test.go
@@ -18,7 +18,7 @@ package diagnose
 import (
 	"fmt"
 	model2 "github.com/apache/servicecomb-service-center/pkg/model"
-	"github.com/apache/servicecomb-service-center/server/core/proto"
+	"github.com/apache/servicecomb-service-center/pkg/registry"
 	"github.com/coreos/etcd/mvcc/mvccpb"
 	"testing"
 )
@@ -26,24 +26,24 @@ import (
 func TestNewDiagnoseCommand(t *testing.T) {
 	services := model2.MicroserviceSlice{
 		model2.NewMicroservice(&model2.KV{Key: "1", Rev: 1,
-			Value: &proto.MicroService{
+			Value: &registry.MicroService{
 				ServiceId: "667570b6842411e89c66286ed488de36", AppId: "app", ServiceName: "name1", Version: "0.0.1",
 			}}), // greater
 		model2.NewMicroservice(&model2.KV{Key: "6", Rev: 1,
-			Value: &proto.MicroService{
+			Value: &registry.MicroService{
 				ServiceId: "667570b6842411e89c66286ed488de36", AppId: "app", ServiceName: "name2", Version: "0.0.1",
 			}}), // greater
-		model2.NewMicroservice(&model2.KV{Key: "2", Rev: 1, Value: &proto.MicroService{ServiceId: "2"}}), // mismatch
-		model2.NewMicroservice(&model2.KV{Key: "4", Rev: 2, Value: &proto.MicroService{ServiceId: "4"}}), // pass
+		model2.NewMicroservice(&model2.KV{Key: "2", Rev: 1, Value: &registry.MicroService{ServiceId: "2"}}), // mismatch
+		model2.NewMicroservice(&model2.KV{Key: "4", Rev: 2, Value: &registry.MicroService{ServiceId: "4"}}), // pass
 	}
 	instances := model2.InstanceSlice{
 		model2.NewInstance(&model2.KV{Key: "1", Rev: 1,
-			Value: &proto.MicroServiceInstance{
+			Value: &registry.MicroServiceInstance{
 				ServiceId: "667570b6842411e89c66286ed488de36", InstanceId: "667570b6842411e89c66286ed488de36", Version: "0.0.1",
 				Endpoints: []string{"rest://127.0.0.1:8080"},
 			}}), // greater
 		model2.NewInstance(&model2.KV{Key: "2", Rev: 1,
-			Value: &proto.MicroServiceInstance{
+			Value: &registry.MicroServiceInstance{
 				ServiceId: "667570b6842411e89c66286ed488de36", InstanceId: "667570b6842411e89c66286ed488de36", Version: "0.0.1",
 				Endpoints: []string{"rest://127.0.0.2:8080"},
 			}}), // greater
diff --git a/scctl/pkg/plugin/get/cluster/cluster_cmd.go b/scctl/pkg/plugin/get/cluster/cluster_cmd.go
index 4a2bacf..f98b0c1 100644
--- a/scctl/pkg/plugin/get/cluster/cluster_cmd.go
+++ b/scctl/pkg/plugin/get/cluster/cluster_cmd.go
@@ -17,7 +17,7 @@ package cluster
 
 import (
 	"context"
-	"github.com/apache/servicecomb-service-center/pkg/client/sc"
+	"github.com/apache/servicecomb-service-center/client"
 	"github.com/apache/servicecomb-service-center/scctl/pkg/cmd"
 	"github.com/apache/servicecomb-service-center/scctl/pkg/plugin/get"
 	"github.com/apache/servicecomb-service-center/scctl/pkg/writer"
@@ -40,7 +40,7 @@ func NewClusterCommand(parent *cobra.Command) *cobra.Command {
 }
 
 func ClusterCommandFunc(_ *cobra.Command, args []string) {
-	scClient, err := sc.NewSCClient(cmd.ScClientConfig)
+	scClient, err := client.NewSCClient(cmd.ScClientConfig)
 	if err != nil {
 		cmd.StopAndExit(cmd.ExitError, err)
 	}
diff --git a/scctl/pkg/plugin/get/instance/instance_cmd.go b/scctl/pkg/plugin/get/instance/instance_cmd.go
index 81be620..4dd06fb 100644
--- a/scctl/pkg/plugin/get/instance/instance_cmd.go
+++ b/scctl/pkg/plugin/get/instance/instance_cmd.go
@@ -17,7 +17,7 @@ package instance
 
 import (
 	"context"
-	"github.com/apache/servicecomb-service-center/pkg/client/sc"
+	"github.com/apache/servicecomb-service-center/client"
 	model2 "github.com/apache/servicecomb-service-center/pkg/model"
 	"github.com/apache/servicecomb-service-center/scctl/pkg/cmd"
 	"github.com/apache/servicecomb-service-center/scctl/pkg/model"
@@ -44,7 +44,7 @@ func NewInstanceCommand(parent *cobra.Command) *cobra.Command {
 }
 
 func InstanceCommandFunc(_ *cobra.Command, args []string) {
-	scClient, err := sc.NewSCClient(cmd.ScClientConfig)
+	scClient, err := client.NewSCClient(cmd.ScClientConfig)
 	if err != nil {
 		cmd.StopAndExit(cmd.ExitError, err)
 	}
diff --git a/scctl/pkg/plugin/get/schema/schema_cmd.go b/scctl/pkg/plugin/get/schema/schema_cmd.go
index 645aa84..ade2b9b 100644
--- a/scctl/pkg/plugin/get/schema/schema_cmd.go
+++ b/scctl/pkg/plugin/get/schema/schema_cmd.go
@@ -18,7 +18,7 @@ package schema
 import (
 	"context"
 	"fmt"
-	"github.com/apache/servicecomb-service-center/pkg/client/sc"
+	"github.com/apache/servicecomb-service-center/client"
 	model2 "github.com/apache/servicecomb-service-center/pkg/model"
 	"github.com/apache/servicecomb-service-center/scctl/pkg/cmd"
 	"github.com/apache/servicecomb-service-center/scctl/pkg/model"
@@ -77,7 +77,7 @@ func saveDirectory(root string, ms *model2.Microservice) string {
 }
 
 func SchemaCommandFunc(_ *cobra.Command, args []string) {
-	scClient, err := sc.NewSCClient(cmd.ScClientConfig)
+	scClient, err := client.NewSCClient(cmd.ScClientConfig)
 	if err != nil {
 		cmd.StopAndExit(cmd.ExitError, err)
 	}
@@ -109,8 +109,8 @@ func SchemaCommandFunc(_ *cobra.Command, args []string) {
 		if len(Version) > 0 && ms.Value.Version != Version {
 			continue
 		}
-
-		schemas, err := scClient.GetSchemasByServiceID(context.Background(), domainProject, ms.Value.ServiceId)
+		dp := strings.Split(domainProject, "/")
+		schemas, err := scClient.GetSchemasByServiceID(context.Background(), dp[0], dp[1], ms.Value.ServiceId)
 		if err != nil {
 			cmd.StopAndExit(cmd.ExitError, err)
 		}
diff --git a/scctl/pkg/plugin/get/schema/writer.go b/scctl/pkg/plugin/get/schema/writer.go
index b495e43..097831e 100644
--- a/scctl/pkg/plugin/get/schema/writer.go
+++ b/scctl/pkg/plugin/get/schema/writer.go
@@ -16,7 +16,7 @@
 package schema
 
 import (
-	pb "github.com/apache/servicecomb-service-center/server/core/proto"
+	pb "github.com/apache/servicecomb-service-center/pkg/registry"
 	"os"
 	"path/filepath"
 )
diff --git a/scctl/pkg/plugin/get/service/service_cmd.go b/scctl/pkg/plugin/get/service/service_cmd.go
index 592b49f..b7145d0 100644
--- a/scctl/pkg/plugin/get/service/service_cmd.go
+++ b/scctl/pkg/plugin/get/service/service_cmd.go
@@ -17,7 +17,7 @@ package service
 
 import (
 	"context"
-	"github.com/apache/servicecomb-service-center/pkg/client/sc"
+	"github.com/apache/servicecomb-service-center/client"
 	"github.com/apache/servicecomb-service-center/pkg/util"
 	"github.com/apache/servicecomb-service-center/scctl/pkg/cmd"
 	"github.com/apache/servicecomb-service-center/scctl/pkg/model"
@@ -45,7 +45,7 @@ func NewServiceCommand(parent *cobra.Command) *cobra.Command {
 }
 
 func ServiceCommandFunc(_ *cobra.Command, args []string) {
-	scClient, err := sc.NewSCClient(cmd.ScClientConfig)
+	scClient, err := client.NewSCClient(cmd.ScClientConfig)
 	if err != nil {
 		cmd.StopAndExit(cmd.ExitError, err)
 	}
diff --git a/scctl/pkg/plugin/health/cmd.go b/scctl/pkg/plugin/health/cmd.go
index 125e74a..4431bc4 100644
--- a/scctl/pkg/plugin/health/cmd.go
+++ b/scctl/pkg/plugin/health/cmd.go
@@ -17,7 +17,7 @@ package health
 
 import (
 	"context"
-	"github.com/apache/servicecomb-service-center/pkg/client/sc"
+	"github.com/apache/servicecomb-service-center/client"
 	"github.com/apache/servicecomb-service-center/scctl/pkg/cmd"
 	scerr "github.com/apache/servicecomb-service-center/server/scerror"
 	"github.com/spf13/cobra"
@@ -45,7 +45,7 @@ func NewHealthCommand(parent *cobra.Command) *cobra.Command {
 }
 
 func HealthCommandFunc(_ *cobra.Command, args []string) {
-	scClient, err := sc.NewSCClient(cmd.ScClientConfig)
+	scClient, err := client.NewSCClient(cmd.ScClientConfig)
 	if err != nil {
 		cmd.StopAndExit(ExistInternal, err)
 	}
diff --git a/scctl/pkg/plugin/version/cmd.go b/scctl/pkg/plugin/version/cmd.go
index a9726b7..925a4e4 100644
--- a/scctl/pkg/plugin/version/cmd.go
+++ b/scctl/pkg/plugin/version/cmd.go
@@ -18,7 +18,7 @@ package version
 import (
 	"context"
 	"fmt"
-	"github.com/apache/servicecomb-service-center/pkg/client/sc"
+	"github.com/apache/servicecomb-service-center/client"
 	"github.com/apache/servicecomb-service-center/scctl/pkg/cmd"
 	"github.com/apache/servicecomb-service-center/scctl/pkg/version"
 	"github.com/spf13/cobra"
@@ -48,7 +48,7 @@ func VersionCommandFunc(_ *cobra.Command, _ []string) {
 	fmt.Print(version.TOOL_NAME, " ")
 	version.Ver().Print()
 
-	scClient, err := sc.NewSCClient(cmd.ScClientConfig)
+	scClient, err := client.NewSCClient(cmd.ScClientConfig)
 	if err != nil {
 		return
 	}
diff --git a/server/broker/brokerpb/broker.go b/server/broker/brokerpb/broker.go
new file mode 100644
index 0000000..cf46d8b
--- /dev/null
+++ b/server/broker/brokerpb/broker.go
@@ -0,0 +1,677 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package brokerpb
+
+import (
+	"github.com/apache/servicecomb-service-center/pkg/registry"
+)
+
+type Participant struct {
+	Id          int32  `protobuf:"varint,1,opt,name=id" json:"id,omitempty"`
+	AppId       string `protobuf:"bytes,2,opt,name=appId" json:"appId,omitempty"`
+	ServiceName string `protobuf:"bytes,3,opt,name=serviceName" json:"serviceName,omitempty"`
+}
+
+func (m *Participant) Reset() { *m = Participant{} }
+
+func (m *Participant) GetId() int32 {
+	if m != nil {
+		return m.Id
+	}
+	return 0
+}
+
+func (m *Participant) GetAppId() string {
+	if m != nil {
+		return m.AppId
+	}
+	return ""
+}
+
+func (m *Participant) GetServiceName() string {
+	if m != nil {
+		return m.ServiceName
+	}
+	return ""
+}
+
+type Version struct {
+	Id            int32  `protobuf:"varint,1,opt,name=id" json:"id,omitempty"`
+	Number        string `protobuf:"bytes,2,opt,name=number" json:"number,omitempty"`
+	ParticipantId int32  `protobuf:"varint,3,opt,name=participantId" json:"participantId,omitempty"`
+	Order         int32  `protobuf:"varint,4,opt,name=order" json:"order,omitempty"`
+}
+
+func (m *Version) Reset() { *m = Version{} }
+
+func (m *Version) GetId() int32 {
+	if m != nil {
+		return m.Id
+	}
+	return 0
+}
+
+func (m *Version) GetNumber() string {
+	if m != nil {
+		return m.Number
+	}
+	return ""
+}
+
+func (m *Version) GetParticipantId() int32 {
+	if m != nil {
+		return m.ParticipantId
+	}
+	return 0
+}
+
+func (m *Version) GetOrder() int32 {
+	if m != nil {
+		return m.Order
+	}
+	return 0
+}
+
+type Pact struct {
+	Id                    int32  `protobuf:"varint,1,opt,name=id" json:"id,omitempty"`
+	ConsumerParticipantId int32  `protobuf:"varint,2,opt,name=consumerParticipantId" json:"consumerParticipantId,omitempty"`
+	ProviderParticipantId int32  `protobuf:"varint,3,opt,name=providerParticipantId" json:"providerParticipantId,omitempty"`
+	Sha                   []byte `protobuf:"bytes,4,opt,name=sha,proto3" json:"sha,omitempty"`
+	Content               []byte `protobuf:"bytes,5,opt,name=content,proto3" json:"content,omitempty"`
+}
+
+func (m *Pact) Reset() { *m = Pact{} }
+
+func (m *Pact) GetId() int32 {
+	if m != nil {
+		return m.Id
+	}
+	return 0
+}
+
+func (m *Pact) GetConsumerParticipantId() int32 {
+	if m != nil {
+		return m.ConsumerParticipantId
+	}
+	return 0
+}
+
+func (m *Pact) GetProviderParticipantId() int32 {
+	if m != nil {
+		return m.ProviderParticipantId
+	}
+	return 0
+}
+
+func (m *Pact) GetSha() []byte {
+	if m != nil {
+		return m.Sha
+	}
+	return nil
+}
+
+func (m *Pact) GetContent() []byte {
+	if m != nil {
+		return m.Content
+	}
+	return nil
+}
+
+type PactVersion struct {
+	Id                    int32 `protobuf:"varint,1,opt,name=id" json:"id,omitempty"`
+	VersionId             int32 `protobuf:"varint,2,opt,name=versionId" json:"versionId,omitempty"`
+	PactId                int32 `protobuf:"varint,3,opt,name=pactId" json:"pactId,omitempty"`
+	ProviderParticipantId int32 `protobuf:"varint,4,opt,name=providerParticipantId" json:"providerParticipantId,omitempty"`
+}
+
+func (m *PactVersion) Reset() { *m = PactVersion{} }
+
+func (m *PactVersion) GetId() int32 {
+	if m != nil {
+		return m.Id
+	}
+	return 0
+}
+
+func (m *PactVersion) GetVersionId() int32 {
+	if m != nil {
+		return m.VersionId
+	}
+	return 0
+}
+
+func (m *PactVersion) GetPactId() int32 {
+	if m != nil {
+		return m.PactId
+	}
+	return 0
+}
+
+func (m *PactVersion) GetProviderParticipantId() int32 {
+	if m != nil {
+		return m.ProviderParticipantId
+	}
+	return 0
+}
+
+type Tag struct {
+	Name      string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
+	VersionId int32  `protobuf:"varint,2,opt,name=versionId" json:"versionId,omitempty"`
+}
+
+func (m *Tag) Reset() { *m = Tag{} }
+
+func (m *Tag) GetName() string {
+	if m != nil {
+		return m.Name
+	}
+	return ""
+}
+
+func (m *Tag) GetVersionId() int32 {
+	if m != nil {
+		return m.VersionId
+	}
+	return 0
+}
+
+type PublishPactRequest struct {
+	ProviderId string `protobuf:"bytes,1,opt,name=providerId" json:"providerId,omitempty"`
+	ConsumerId string `protobuf:"bytes,2,opt,name=consumerId" json:"consumerId,omitempty"`
+	Version    string `protobuf:"bytes,3,opt,name=version" json:"version,omitempty"`
+	Pact       []byte `protobuf:"bytes,4,opt,name=pact,proto3" json:"pact,omitempty"`
+}
+
+func (m *PublishPactRequest) Reset() { *m = PublishPactRequest{} }
+
+func (m *PublishPactRequest) GetProviderId() string {
+	if m != nil {
+		return m.ProviderId
+	}
+	return ""
+}
+
+func (m *PublishPactRequest) GetConsumerId() string {
+	if m != nil {
+		return m.ConsumerId
+	}
+	return ""
+}
+
+func (m *PublishPactRequest) GetPact() []byte {
+	if m != nil {
+		return m.Pact
+	}
+	return nil
+}
+
+type PublishPactResponse struct {
+	Response *registry.Response `protobuf:"bytes,1,opt,name=response" json:"response,omitempty"`
+}
+
+func (m *PublishPactResponse) Reset() { *m = PublishPactResponse{} }
+
+type GetAllProviderPactsRequest struct {
+	ProviderId string             `protobuf:"bytes,1,opt,name=providerId" json:"providerId,omitempty"`
+	BaseUrl    *BaseBrokerRequest `protobuf:"bytes,2,opt,name=baseUrl" json:"baseUrl,omitempty"`
+}
+
+func (m *GetAllProviderPactsRequest) Reset() { *m = GetAllProviderPactsRequest{} }
+
+func (m *GetAllProviderPactsRequest) GetProviderId() string {
+	if m != nil {
+		return m.ProviderId
+	}
+	return ""
+}
+
+func (m *GetAllProviderPactsRequest) GetBaseUrl() *BaseBrokerRequest {
+	if m != nil {
+		return m.BaseUrl
+	}
+	return nil
+}
+
+type ConsumerInfo struct {
+	Href string `protobuf:"bytes,1,opt,name=href" json:"href,omitempty"`
+	Name string `protobuf:"bytes,2,opt,name=name" json:"name,omitempty"`
+}
+
+func (m *ConsumerInfo) GetHref() string {
+	if m != nil {
+		return m.Href
+	}
+	return ""
+}
+
+func (m *ConsumerInfo) GetName() string {
+	if m != nil {
+		return m.Name
+	}
+	return ""
+}
+
+type Links struct {
+	Pacts []*ConsumerInfo `protobuf:"bytes,1,rep,name=pacts" json:"pacts,omitempty"`
+}
+
+func (m *Links) Reset() { *m = Links{} }
+
+func (m *Links) GetPacts() []*ConsumerInfo {
+	if m != nil {
+		return m.Pacts
+	}
+	return nil
+}
+
+type GetAllProviderPactsResponse struct {
+	Response *registry.Response `protobuf:"bytes,1,opt,name=response" json:"response,omitempty"`
+	XLinks   *Links             `protobuf:"bytes,2,opt,name=_links,json=Links" json:"_links,omitempty"`
+}
+
+func (m *GetAllProviderPactsResponse) Reset() { *m = GetAllProviderPactsResponse{} }
+
+func (m *GetAllProviderPactsResponse) GetXLinks() *Links {
+	if m != nil {
+		return m.XLinks
+	}
+	return nil
+}
+
+type GetProviderConsumerVersionPactRequest struct {
+	ProviderId string             `protobuf:"bytes,1,opt,name=providerId" json:"providerId,omitempty"`
+	ConsumerId string             `protobuf:"bytes,2,opt,name=consumerId" json:"consumerId,omitempty"`
+	Version    string             `protobuf:"bytes,3,opt,name=version" json:"version,omitempty"`
+	BaseUrl    *BaseBrokerRequest `protobuf:"bytes,4,opt,name=baseUrl" json:"baseUrl,omitempty"`
+}
+
+func (m *GetProviderConsumerVersionPactRequest) Reset() { *m = GetProviderConsumerVersionPactRequest{} }
+
+func (m *GetProviderConsumerVersionPactRequest) GetProviderId() string {
+	if m != nil {
+		return m.ProviderId
+	}
+	return ""
+}
+
+func (m *GetProviderConsumerVersionPactRequest) GetConsumerId() string {
+	if m != nil {
+		return m.ConsumerId
+	}
+	return ""
+}
+
+func (m *GetProviderConsumerVersionPactRequest) GetBaseUrl() *BaseBrokerRequest {
+	if m != nil {
+		return m.BaseUrl
+	}
+	return nil
+}
+
+type GetProviderConsumerVersionPactResponse struct {
+	Response *registry.Response `protobuf:"bytes,1,opt,name=response" json:"response,omitempty"`
+	Pact     []byte             `protobuf:"bytes,2,opt,name=pact,proto3" json:"pact,omitempty"`
+}
+
+func (m *GetProviderConsumerVersionPactResponse) Reset() {
+	*m = GetProviderConsumerVersionPactResponse{}
+}
+
+func (m *GetProviderConsumerVersionPactResponse) GetPact() []byte {
+	if m != nil {
+		return m.Pact
+	}
+	return nil
+}
+
+type Verification struct {
+	Id               int32  `protobuf:"varint,1,opt,name=id" json:"id,omitempty"`
+	Number           int32  `protobuf:"varint,2,opt,name=number" json:"number,omitempty"`
+	PactVersionId    int32  `protobuf:"varint,3,opt,name=pactVersionId" json:"pactVersionId,omitempty"`
+	Success          bool   `protobuf:"varint,4,opt,name=success" json:"success,omitempty"`
+	ProviderVersion  string `protobuf:"bytes,5,opt,name=providerVersion" json:"providerVersion,omitempty"`
+	BuildUrl         string `protobuf:"bytes,6,opt,name=buildUrl" json:"buildUrl,omitempty"`
+	VerificationDate string `protobuf:"bytes,7,opt,name=verificationDate" json:"verificationDate,omitempty"`
+}
+
+func (m *Verification) Reset() { *m = Verification{} }
+
+func (m *Verification) GetId() int32 {
+	if m != nil {
+		return m.Id
+	}
+	return 0
+}
+
+func (m *Verification) GetNumber() int32 {
+	if m != nil {
+		return m.Number
+	}
+	return 0
+}
+
+func (m *Verification) GetPactVersionId() int32 {
+	if m != nil {
+		return m.PactVersionId
+	}
+	return 0
+}
+
+func (m *Verification) GetSuccess() bool {
+	if m != nil {
+		return m.Success
+	}
+	return false
+}
+
+func (m *Verification) GetProviderVersion() string {
+	if m != nil {
+		return m.ProviderVersion
+	}
+	return ""
+}
+
+func (m *Verification) GetBuildUrl() string {
+	if m != nil {
+		return m.BuildUrl
+	}
+	return ""
+}
+
+func (m *Verification) GetVerificationDate() string {
+	if m != nil {
+		return m.VerificationDate
+	}
+	return ""
+}
+
+type VerificationSummary struct {
+	Successful []string `protobuf:"bytes,1,rep,name=successful" json:"successful,omitempty"`
+	Failed     []string `protobuf:"bytes,2,rep,name=failed" json:"failed,omitempty"`
+	Unknown    []string `protobuf:"bytes,3,rep,name=unknown" json:"unknown,omitempty"`
+}
+
+func (m *VerificationSummary) Reset() { *m = VerificationSummary{} }
+
+func (m *VerificationSummary) GetSuccessful() []string {
+	if m != nil {
+		return m.Successful
+	}
+	return nil
+}
+
+func (m *VerificationSummary) GetFailed() []string {
+	if m != nil {
+		return m.Failed
+	}
+	return nil
+}
+
+func (m *VerificationSummary) GetUnknown() []string {
+	if m != nil {
+		return m.Unknown
+	}
+	return nil
+}
+
+type VerificationDetail struct {
+	ProviderName               string `protobuf:"bytes,1,opt,name=providerName" json:"providerName,omitempty"`
+	ProviderApplicationVersion string `protobuf:"bytes,2,opt,name=providerApplicationVersion" json:"providerApplicationVersion,omitempty"`
+	Success                    bool   `protobuf:"varint,3,opt,name=success" json:"success,omitempty"`
+	VerificationDate           string `protobuf:"bytes,4,opt,name=verificationDate" json:"verificationDate,omitempty"`
+}
+
+func (m *VerificationDetail) Reset() { *m = VerificationDetail{} }
+
+func (m *VerificationDetail) GetProviderName() string {
+	if m != nil {
+		return m.ProviderName
+	}
+	return ""
+}
+
+func (m *VerificationDetail) GetProviderApplicationVersion() string {
+	if m != nil {
+		return m.ProviderApplicationVersion
+	}
+	return ""
+}
+
+func (m *VerificationDetail) GetSuccess() bool {
+	if m != nil {
+		return m.Success
+	}
+	return false
+}
+
+func (m *VerificationDetail) GetVerificationDate() string {
+	if m != nil {
+		return m.VerificationDate
+	}
+	return ""
+}
+
+type VerificationDetails struct {
+	VerificationResults []*VerificationDetail `protobuf:"bytes,1,rep,name=verificationResults" json:"verificationResults,omitempty"`
+}
+
+func (m *VerificationDetails) GetVerificationResults() []*VerificationDetail {
+	if m != nil {
+		return m.VerificationResults
+	}
+	return nil
+}
+
+type VerificationResult struct {
+	Success         bool                 `protobuf:"varint,1,opt,name=success" json:"success,omitempty"`
+	ProviderSummary *VerificationSummary `protobuf:"bytes,2,opt,name=providerSummary" json:"providerSummary,omitempty"`
+	XEmbedded       *VerificationDetails `protobuf:"bytes,3,opt,name=_embedded,json=Embedded" json:"_embedded,omitempty"`
+}
+
+func (m *VerificationResult) Reset() { *m = VerificationResult{} }
+
+func (m *VerificationResult) GetSuccess() bool {
+	if m != nil {
+		return m.Success
+	}
+	return false
+}
+
+func (m *VerificationResult) GetProviderSummary() *VerificationSummary {
+	if m != nil {
+		return m.ProviderSummary
+	}
+	return nil
+}
+
+func (m *VerificationResult) GetXEmbedded() *VerificationDetails {
+	if m != nil {
+		return m.XEmbedded
+	}
+	return nil
+}
+
+type PublishVerificationRequest struct {
+	ProviderId                 string `protobuf:"bytes,1,opt,name=providerId" json:"providerId,omitempty"`
+	ConsumerId                 string `protobuf:"bytes,2,opt,name=consumerId" json:"consumerId,omitempty"`
+	PactId                     int32  `protobuf:"varint,3,opt,name=pactId" json:"pactId,omitempty"`
+	Success                    bool   `protobuf:"varint,4,opt,name=success" json:"success,omitempty"`
+	ProviderApplicationVersion string `protobuf:"bytes,5,opt,name=providerApplicationVersion" json:"providerApplicationVersion,omitempty"`
+}
+
+func (m *PublishVerificationRequest) Reset() { *m = PublishVerificationRequest{} }
+
+func (m *PublishVerificationRequest) GetProviderId() string {
+	if m != nil {
+		return m.ProviderId
+	}
+	return ""
+}
+
+func (m *PublishVerificationRequest) GetConsumerId() string {
+	if m != nil {
+		return m.ConsumerId
+	}
+	return ""
+}
+
+func (m *PublishVerificationRequest) GetPactId() int32 {
+	if m != nil {
+		return m.PactId
+	}
+	return 0
+}
+
+func (m *PublishVerificationRequest) GetSuccess() bool {
+	if m != nil {
+		return m.Success
+	}
+	return false
+}
+
+func (m *PublishVerificationRequest) GetProviderApplicationVersion() string {
+	if m != nil {
+		return m.ProviderApplicationVersion
+	}
+	return ""
+}
+
+type PublishVerificationResponse struct {
+	Response     *registry.Response  `protobuf:"bytes,1,opt,name=response" json:"response,omitempty"`
+	Confirmation *VerificationDetail `protobuf:"bytes,2,opt,name=confirmation" json:"confirmation,omitempty"`
+}
+
+func (m *PublishVerificationResponse) GetConfirmation() *VerificationDetail {
+	if m != nil {
+		return m.Confirmation
+	}
+	return nil
+}
+
+type RetrieveVerificationRequest struct {
+	ConsumerId      string `protobuf:"bytes,1,opt,name=consumerId" json:"consumerId,omitempty"`
+	ConsumerVersion string `protobuf:"bytes,2,opt,name=consumerVersion" json:"consumerVersion,omitempty"`
+}
+
+func (m *RetrieveVerificationRequest) Reset() { *m = RetrieveVerificationRequest{} }
+
+func (m *RetrieveVerificationRequest) GetConsumerId() string {
+	if m != nil {
+		return m.ConsumerId
+	}
+	return ""
+}
+
+func (m *RetrieveVerificationRequest) GetConsumerVersion() string {
+	if m != nil {
+		return m.ConsumerVersion
+	}
+	return ""
+}
+
+type RetrieveVerificationResponse struct {
+	Response *registry.Response  `protobuf:"bytes,1,opt,name=response" json:"response,omitempty"`
+	Result   *VerificationResult `protobuf:"bytes,2,opt,name=result" json:"result,omitempty"`
+}
+
+func (m *RetrieveVerificationResponse) Reset() { *m = RetrieveVerificationResponse{} }
+
+func (m *RetrieveVerificationResponse) GetResult() *VerificationResult {
+	if m != nil {
+		return m.Result
+	}
+	return nil
+}
+
+type BaseBrokerRequest struct {
+	HostAddress string `protobuf:"bytes,1,opt,name=hostAddress" json:"hostAddress,omitempty"`
+	Scheme      string `protobuf:"bytes,2,opt,name=scheme" json:"scheme,omitempty"`
+}
+
+func (m *BaseBrokerRequest) Reset() { *m = BaseBrokerRequest{} }
+
+func (m *BaseBrokerRequest) GetHostAddress() string {
+	if m != nil {
+		return m.HostAddress
+	}
+	return ""
+}
+
+func (m *BaseBrokerRequest) GetScheme() string {
+	if m != nil {
+		return m.Scheme
+	}
+	return ""
+}
+
+type BrokerAPIInfoEntry struct {
+	Href      string `protobuf:"bytes,1,opt,name=href" json:"href,omitempty"`
+	Name      string `protobuf:"bytes,2,opt,name=name" json:"name,omitempty"`
+	Title     string `protobuf:"bytes,3,opt,name=title" json:"title,omitempty"`
+	Templated bool   `protobuf:"varint,4,opt,name=templated" json:"templated,omitempty"`
+}
+
+func (m *BrokerAPIInfoEntry) GetHref() string {
+	if m != nil {
+		return m.Href
+	}
+	return ""
+}
+
+func (m *BrokerAPIInfoEntry) GetName() string {
+	if m != nil {
+		return m.Name
+	}
+	return ""
+}
+
+func (m *BrokerAPIInfoEntry) GetTitle() string {
+	if m != nil {
+		return m.Title
+	}
+	return ""
+}
+
+func (m *BrokerAPIInfoEntry) GetTemplated() bool {
+	if m != nil {
+		return m.Templated
+	}
+	return false
+}
+
+type BrokerHomeResponse struct {
+	Response *registry.Response             `protobuf:"bytes,1,opt,name=response" json:"response,omitempty"`
+	XLinks   map[string]*BrokerAPIInfoEntry `protobuf:"bytes,2,rep,name=_links,json=Links" json:"_links,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
+	Curies   []*BrokerAPIInfoEntry          `protobuf:"bytes,3,rep,name=curies" json:"curies,omitempty"`
+}
+
+func (m *BrokerHomeResponse) Reset() { *m = BrokerHomeResponse{} }
+
+func (m *BrokerHomeResponse) GetXLinks() map[string]*BrokerAPIInfoEntry {
+	if m != nil {
+		return m.XLinks
+	}
+	return nil
+}
+
+func (m *BrokerHomeResponse) GetCuries() []*BrokerAPIInfoEntry {
+	if m != nil {
+		return m.Curies
+	}
+	return nil
+}
diff --git a/server/broker/brokerpb/broker.pb.go b/server/broker/brokerpb/broker.pb.go
deleted file mode 100644
index 310d707..0000000
--- a/server/broker/brokerpb/broker.pb.go
+++ /dev/null
@@ -1,914 +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.
-// source: broker.proto
-
-/*
-Package brokerpb is a generated protocol buffer package.
-
-It is generated from these files:
-	broker.proto
-
-It has these top-level messages:
-	Participant
-	Version
-	Pact
-	PactVersion
-	Tag
-	PublishPactRequest
-	PublishPactResponse
-	GetAllProviderPactsRequest
-	ConsumerInfo
-	Links
-	GetAllProviderPactsResponse
-	GetProviderConsumerVersionPactRequest
-	GetProviderConsumerVersionPactResponse
-	Verification
-	VerificationSummary
-	VerificationDetail
-	VerificationDetails
-	VerificationResult
-	PublishVerificationRequest
-	PublishVerificationResponse
-	RetrieveVerificationRequest
-	RetrieveVerificationResponse
-	BaseBrokerRequest
-	BrokerAPIInfoEntry
-	BrokerHomeResponse
-*/
-package brokerpb
-
-import proto "github.com/golang/protobuf/proto"
-import fmt "fmt"
-import math "math"
-import proto1 "github.com/apache/servicecomb-service-center/server/core/proto"
-
-// Reference imports to suppress errors if they are not otherwise used.
-var _ = proto.Marshal
-var _ = fmt.Errorf
-var _ = math.Inf
-
-// This is a compile-time assertion to ensure that this generated file
-// is compatible with the proto package it is being compiled against.
-// A compilation error at this line likely means your copy of the
-// proto package needs to be updated.
-const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package
-
-type Participant struct {
-	Id          int32  `protobuf:"varint,1,opt,name=id" json:"id,omitempty"`
-	AppId       string `protobuf:"bytes,2,opt,name=appId" json:"appId,omitempty"`
-	ServiceName string `protobuf:"bytes,3,opt,name=serviceName" json:"serviceName,omitempty"`
-}
-
-func (m *Participant) Reset()                    { *m = Participant{} }
-func (m *Participant) String() string            { return proto.CompactTextString(m) }
-func (*Participant) ProtoMessage()               {}
-func (*Participant) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} }
-
-func (m *Participant) GetId() int32 {
-	if m != nil {
-		return m.Id
-	}
-	return 0
-}
-
-func (m *Participant) GetAppId() string {
-	if m != nil {
-		return m.AppId
-	}
-	return ""
-}
-
-func (m *Participant) GetServiceName() string {
-	if m != nil {
-		return m.ServiceName
-	}
-	return ""
-}
-
-type Version struct {
-	Id            int32  `protobuf:"varint,1,opt,name=id" json:"id,omitempty"`
-	Number        string `protobuf:"bytes,2,opt,name=number" json:"number,omitempty"`
-	ParticipantId int32  `protobuf:"varint,3,opt,name=participantId" json:"participantId,omitempty"`
-	Order         int32  `protobuf:"varint,4,opt,name=order" json:"order,omitempty"`
-}
-
-func (m *Version) Reset()                    { *m = Version{} }
-func (m *Version) String() string            { return proto.CompactTextString(m) }
-func (*Version) ProtoMessage()               {}
-func (*Version) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} }
-
-func (m *Version) GetId() int32 {
-	if m != nil {
-		return m.Id
-	}
-	return 0
-}
-
-func (m *Version) GetNumber() string {
-	if m != nil {
-		return m.Number
-	}
-	return ""
-}
-
-func (m *Version) GetParticipantId() int32 {
-	if m != nil {
-		return m.ParticipantId
-	}
-	return 0
-}
-
-func (m *Version) GetOrder() int32 {
-	if m != nil {
-		return m.Order
-	}
-	return 0
-}
-
-type Pact struct {
-	Id                    int32  `protobuf:"varint,1,opt,name=id" json:"id,omitempty"`
-	ConsumerParticipantId int32  `protobuf:"varint,2,opt,name=consumerParticipantId" json:"consumerParticipantId,omitempty"`
-	ProviderParticipantId int32  `protobuf:"varint,3,opt,name=providerParticipantId" json:"providerParticipantId,omitempty"`
-	Sha                   []byte `protobuf:"bytes,4,opt,name=sha,proto3" json:"sha,omitempty"`
-	Content               []byte `protobuf:"bytes,5,opt,name=content,proto3" json:"content,omitempty"`
-}
-
-func (m *Pact) Reset()                    { *m = Pact{} }
-func (m *Pact) String() string            { return proto.CompactTextString(m) }
-func (*Pact) ProtoMessage()               {}
-func (*Pact) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} }
-
-func (m *Pact) GetId() int32 {
-	if m != nil {
-		return m.Id
-	}
-	return 0
-}
-
-func (m *Pact) GetConsumerParticipantId() int32 {
-	if m != nil {
-		return m.ConsumerParticipantId
-	}
-	return 0
-}
-
-func (m *Pact) GetProviderParticipantId() int32 {
-	if m != nil {
-		return m.ProviderParticipantId
-	}
-	return 0
-}
-
-func (m *Pact) GetSha() []byte {
-	if m != nil {
-		return m.Sha
-	}
-	return nil
-}
-
-func (m *Pact) GetContent() []byte {
-	if m != nil {
-		return m.Content
-	}
-	return nil
-}
-
-type PactVersion struct {
-	Id                    int32 `protobuf:"varint,1,opt,name=id" json:"id,omitempty"`
-	VersionId             int32 `protobuf:"varint,2,opt,name=versionId" json:"versionId,omitempty"`
-	PactId                int32 `protobuf:"varint,3,opt,name=pactId" json:"pactId,omitempty"`
-	ProviderParticipantId int32 `protobuf:"varint,4,opt,name=providerParticipantId" json:"providerParticipantId,omitempty"`
-}
-
-func (m *PactVersion) Reset()                    { *m = PactVersion{} }
-func (m *PactVersion) String() string            { return proto.CompactTextString(m) }
-func (*PactVersion) ProtoMessage()               {}
-func (*PactVersion) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3} }
-
-func (m *PactVersion) GetId() int32 {
-	if m != nil {
-		return m.Id
-	}
-	return 0
-}
-
-func (m *PactVersion) GetVersionId() int32 {
-	if m != nil {
-		return m.VersionId
-	}
-	return 0
-}
-
-func (m *PactVersion) GetPactId() int32 {
-	if m != nil {
-		return m.PactId
-	}
-	return 0
-}
-
-func (m *PactVersion) GetProviderParticipantId() int32 {
-	if m != nil {
-		return m.ProviderParticipantId
-	}
-	return 0
-}
-
-type Tag struct {
-	Name      string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
-	VersionId int32  `protobuf:"varint,2,opt,name=versionId" json:"versionId,omitempty"`
-}
-
-func (m *Tag) Reset()                    { *m = Tag{} }
-func (m *Tag) String() string            { return proto.CompactTextString(m) }
-func (*Tag) ProtoMessage()               {}
-func (*Tag) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{4} }
-
-func (m *Tag) GetName() string {
-	if m != nil {
-		return m.Name
-	}
-	return ""
-}
-
-func (m *Tag) GetVersionId() int32 {
-	if m != nil {
-		return m.VersionId
-	}
-	return 0
-}
-
-type PublishPactRequest struct {
-	ProviderId string `protobuf:"bytes,1,opt,name=providerId" json:"providerId,omitempty"`
-	ConsumerId string `protobuf:"bytes,2,opt,name=consumerId" json:"consumerId,omitempty"`
-	Version    string `protobuf:"bytes,3,opt,name=version" json:"version,omitempty"`
-	Pact       []byte `protobuf:"bytes,4,opt,name=pact,proto3" json:"pact,omitempty"`
-}
-
-func (m *PublishPactRequest) Reset()                    { *m = PublishPactRequest{} }
-func (m *PublishPactRequest) String() string            { return proto.CompactTextString(m) }
-func (*PublishPactRequest) ProtoMessage()               {}
-func (*PublishPactRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{5} }
-
-func (m *PublishPactRequest) GetProviderId() string {
-	if m != nil {
-		return m.ProviderId
-	}
-	return ""
-}
-
-func (m *PublishPactRequest) GetConsumerId() string {
-	if m != nil {
-		return m.ConsumerId
-	}
-	return ""
-}
-
-func (m *PublishPactRequest) GetPact() []byte {
-	if m != nil {
-		return m.Pact
-	}
-	return nil
-}
-
-type PublishPactResponse struct {
-	Response *proto1.Response `protobuf:"bytes,1,opt,name=response" json:"response,omitempty"`
-}
-
-func (m *PublishPactResponse) Reset()                    { *m = PublishPactResponse{} }
-func (m *PublishPactResponse) String() string            { return proto.CompactTextString(m) }
-func (*PublishPactResponse) ProtoMessage()               {}
-func (*PublishPactResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{6} }
-
-type GetAllProviderPactsRequest struct {
-	ProviderId string             `protobuf:"bytes,1,opt,name=providerId" json:"providerId,omitempty"`
-	BaseUrl    *BaseBrokerRequest `protobuf:"bytes,2,opt,name=baseUrl" json:"baseUrl,omitempty"`
-}
-
-func (m *GetAllProviderPactsRequest) Reset()                    { *m = GetAllProviderPactsRequest{} }
-func (m *GetAllProviderPactsRequest) String() string            { return proto.CompactTextString(m) }
-func (*GetAllProviderPactsRequest) ProtoMessage()               {}
-func (*GetAllProviderPactsRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{7} }
-
-func (m *GetAllProviderPactsRequest) GetProviderId() string {
-	if m != nil {
-		return m.ProviderId
-	}
-	return ""
-}
-
-func (m *GetAllProviderPactsRequest) GetBaseUrl() *BaseBrokerRequest {
-	if m != nil {
-		return m.BaseUrl
-	}
-	return nil
-}
-
-type ConsumerInfo struct {
-	Href string `protobuf:"bytes,1,opt,name=href" json:"href,omitempty"`
-	Name string `protobuf:"bytes,2,opt,name=name" json:"name,omitempty"`
-}
-
-func (m *ConsumerInfo) Reset()                    { *m = ConsumerInfo{} }
-func (m *ConsumerInfo) String() string            { return proto.CompactTextString(m) }
-func (*ConsumerInfo) ProtoMessage()               {}
-func (*ConsumerInfo) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{8} }
-
-func (m *ConsumerInfo) GetHref() string {
-	if m != nil {
-		return m.Href
-	}
-	return ""
-}
-
-func (m *ConsumerInfo) GetName() string {
-	if m != nil {
-		return m.Name
-	}
-	return ""
-}
-
-type Links struct {
-	Pacts []*ConsumerInfo `protobuf:"bytes,1,rep,name=pacts" json:"pacts,omitempty"`
-}
-
-func (m *Links) Reset()                    { *m = Links{} }
-func (m *Links) String() string            { return proto.CompactTextString(m) }
-func (*Links) ProtoMessage()               {}
-func (*Links) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{9} }
-
-func (m *Links) GetPacts() []*ConsumerInfo {
-	if m != nil {
-		return m.Pacts
-	}
-	return nil
-}
-
-type GetAllProviderPactsResponse struct {
-	Response *proto1.Response `protobuf:"bytes,1,opt,name=response" json:"response,omitempty"`
-	XLinks   *Links           `protobuf:"bytes,2,opt,name=_links,json=Links" json:"_links,omitempty"`
-}
-
-func (m *GetAllProviderPactsResponse) Reset()                    { *m = GetAllProviderPactsResponse{} }
-func (m *GetAllProviderPactsResponse) String() string            { return proto.CompactTextString(m) }
-func (*GetAllProviderPactsResponse) ProtoMessage()               {}
-func (*GetAllProviderPactsResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{10} }
-
-func (m *GetAllProviderPactsResponse) GetXLinks() *Links {
-	if m != nil {
-		return m.XLinks
-	}
-	return nil
-}
-
-type GetProviderConsumerVersionPactRequest struct {
-	ProviderId string             `protobuf:"bytes,1,opt,name=providerId" json:"providerId,omitempty"`
-	ConsumerId string             `protobuf:"bytes,2,opt,name=consumerId" json:"consumerId,omitempty"`
-	Version    string             `protobuf:"bytes,3,opt,name=version" json:"version,omitempty"`
-	BaseUrl    *BaseBrokerRequest `protobuf:"bytes,4,opt,name=baseUrl" json:"baseUrl,omitempty"`
-}
-
-func (m *GetProviderConsumerVersionPactRequest) Reset()         { *m = GetProviderConsumerVersionPactRequest{} }
-func (m *GetProviderConsumerVersionPactRequest) String() string { return proto.CompactTextString(m) }
-func (*GetProviderConsumerVersionPactRequest) ProtoMessage()    {}
-func (*GetProviderConsumerVersionPactRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor0, []int{11}
-}
-
-func (m *GetProviderConsumerVersionPactRequest) GetProviderId() string {
-	if m != nil {
-		return m.ProviderId
-	}
-	return ""
-}
-
-func (m *GetProviderConsumerVersionPactRequest) GetConsumerId() string {
-	if m != nil {
-		return m.ConsumerId
-	}
-	return ""
-}
-
-func (m *GetProviderConsumerVersionPactRequest) GetBaseUrl() *BaseBrokerRequest {
-	if m != nil {
-		return m.BaseUrl
-	}
-	return nil
-}
-
-type GetProviderConsumerVersionPactResponse struct {
-	Response *proto1.Response `protobuf:"bytes,1,opt,name=response" json:"response,omitempty"`
-	Pact     []byte           `protobuf:"bytes,2,opt,name=pact,proto3" json:"pact,omitempty"`
-}
-
-func (m *GetProviderConsumerVersionPactResponse) Reset() {
-	*m = GetProviderConsumerVersionPactResponse{}
-}
-func (m *GetProviderConsumerVersionPactResponse) String() string { return proto.CompactTextString(m) }
-func (*GetProviderConsumerVersionPactResponse) ProtoMessage()    {}
-func (*GetProviderConsumerVersionPactResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor0, []int{12}
-}
-
-func (m *GetProviderConsumerVersionPactResponse) GetPact() []byte {
-	if m != nil {
-		return m.Pact
-	}
-	return nil
-}
-
-type Verification struct {
-	Id               int32  `protobuf:"varint,1,opt,name=id" json:"id,omitempty"`
-	Number           int32  `protobuf:"varint,2,opt,name=number" json:"number,omitempty"`
-	PactVersionId    int32  `protobuf:"varint,3,opt,name=pactVersionId" json:"pactVersionId,omitempty"`
-	Success          bool   `protobuf:"varint,4,opt,name=success" json:"success,omitempty"`
-	ProviderVersion  string `protobuf:"bytes,5,opt,name=providerVersion" json:"providerVersion,omitempty"`
-	BuildUrl         string `protobuf:"bytes,6,opt,name=buildUrl" json:"buildUrl,omitempty"`
-	VerificationDate string `protobuf:"bytes,7,opt,name=verificationDate" json:"verificationDate,omitempty"`
-}
-
-func (m *Verification) Reset()                    { *m = Verification{} }
-func (m *Verification) String() string            { return proto.CompactTextString(m) }
-func (*Verification) ProtoMessage()               {}
-func (*Verification) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{13} }
-
-func (m *Verification) GetId() int32 {
-	if m != nil {
-		return m.Id
-	}
-	return 0
-}
-
-func (m *Verification) GetNumber() int32 {
-	if m != nil {
-		return m.Number
-	}
-	return 0
-}
-
-func (m *Verification) GetPactVersionId() int32 {
-	if m != nil {
-		return m.PactVersionId
-	}
-	return 0
-}
-
-func (m *Verification) GetSuccess() bool {
-	if m != nil {
-		return m.Success
-	}
-	return false
-}
-
-func (m *Verification) GetProviderVersion() string {
-	if m != nil {
-		return m.ProviderVersion
-	}
-	return ""
-}
-
-func (m *Verification) GetBuildUrl() string {
-	if m != nil {
-		return m.BuildUrl
-	}
-	return ""
-}
-
-func (m *Verification) GetVerificationDate() string {
-	if m != nil {
-		return m.VerificationDate
-	}
-	return ""
-}
-
-type VerificationSummary struct {
-	Successful []string `protobuf:"bytes,1,rep,name=successful" json:"successful,omitempty"`
-	Failed     []string `protobuf:"bytes,2,rep,name=failed" json:"failed,omitempty"`
-	Unknown    []string `protobuf:"bytes,3,rep,name=unknown" json:"unknown,omitempty"`
-}
-
-func (m *VerificationSummary) Reset()                    { *m = VerificationSummary{} }
-func (m *VerificationSummary) String() string            { return proto.CompactTextString(m) }
-func (*VerificationSummary) ProtoMessage()               {}
-func (*VerificationSummary) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{14} }
-
-func (m *VerificationSummary) GetSuccessful() []string {
-	if m != nil {
-		return m.Successful
-	}
-	return nil
-}
-
-func (m *VerificationSummary) GetFailed() []string {
-	if m != nil {
-		return m.Failed
-	}
-	return nil
-}
-
-func (m *VerificationSummary) GetUnknown() []string {
-	if m != nil {
-		return m.Unknown
-	}
-	return nil
-}
-
-type VerificationDetail struct {
-	ProviderName               string `protobuf:"bytes,1,opt,name=providerName" json:"providerName,omitempty"`
-	ProviderApplicationVersion string `protobuf:"bytes,2,opt,name=providerApplicationVersion" json:"providerApplicationVersion,omitempty"`
-	Success                    bool   `protobuf:"varint,3,opt,name=success" json:"success,omitempty"`
-	VerificationDate           string `protobuf:"bytes,4,opt,name=verificationDate" json:"verificationDate,omitempty"`
-}
-
-func (m *VerificationDetail) Reset()                    { *m = VerificationDetail{} }
-func (m *VerificationDetail) String() string            { return proto.CompactTextString(m) }
-func (*VerificationDetail) ProtoMessage()               {}
-func (*VerificationDetail) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{15} }
-
-func (m *VerificationDetail) GetProviderName() string {
-	if m != nil {
-		return m.ProviderName
-	}
-	return ""
-}
-
-func (m *VerificationDetail) GetProviderApplicationVersion() string {
-	if m != nil {
-		return m.ProviderApplicationVersion
-	}
-	return ""
-}
-
-func (m *VerificationDetail) GetSuccess() bool {
-	if m != nil {
-		return m.Success
-	}
-	return false
-}
-
-func (m *VerificationDetail) GetVerificationDate() string {
-	if m != nil {
-		return m.VerificationDate
-	}
-	return ""
-}
-
-type VerificationDetails struct {
-	VerificationResults []*VerificationDetail `protobuf:"bytes,1,rep,name=verificationResults" json:"verificationResults,omitempty"`
-}
-
-func (m *VerificationDetails) Reset()                    { *m = VerificationDetails{} }
-func (m *VerificationDetails) String() string            { return proto.CompactTextString(m) }
-func (*VerificationDetails) ProtoMessage()               {}
-func (*VerificationDetails) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{16} }
-
-func (m *VerificationDetails) GetVerificationResults() []*VerificationDetail {
-	if m != nil {
-		return m.VerificationResults
-	}
-	return nil
-}
-
-type VerificationResult struct {
-	Success         bool                 `protobuf:"varint,1,opt,name=success" json:"success,omitempty"`
-	ProviderSummary *VerificationSummary `protobuf:"bytes,2,opt,name=providerSummary" json:"providerSummary,omitempty"`
-	XEmbedded       *VerificationDetails `protobuf:"bytes,3,opt,name=_embedded,json=Embedded" json:"_embedded,omitempty"`
-}
-
-func (m *VerificationResult) Reset()                    { *m = VerificationResult{} }
-func (m *VerificationResult) String() string            { return proto.CompactTextString(m) }
-func (*VerificationResult) ProtoMessage()               {}
-func (*VerificationResult) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{17} }
-
-func (m *VerificationResult) GetSuccess() bool {
-	if m != nil {
-		return m.Success
-	}
-	return false
-}
-
-func (m *VerificationResult) GetProviderSummary() *VerificationSummary {
-	if m != nil {
-		return m.ProviderSummary
-	}
-	return nil
-}
-
-func (m *VerificationResult) GetXEmbedded() *VerificationDetails {
-	if m != nil {
-		return m.XEmbedded
-	}
-	return nil
-}
-
-type PublishVerificationRequest struct {
-	ProviderId                 string `protobuf:"bytes,1,opt,name=providerId" json:"providerId,omitempty"`
-	ConsumerId                 string `protobuf:"bytes,2,opt,name=consumerId" json:"consumerId,omitempty"`
-	PactId                     int32  `protobuf:"varint,3,opt,name=pactId" json:"pactId,omitempty"`
-	Success                    bool   `protobuf:"varint,4,opt,name=success" json:"success,omitempty"`
-	ProviderApplicationVersion string `protobuf:"bytes,5,opt,name=providerApplicationVersion" json:"providerApplicationVersion,omitempty"`
-}
-
-func (m *PublishVerificationRequest) Reset()                    { *m = PublishVerificationRequest{} }
-func (m *PublishVerificationRequest) String() string            { return proto.CompactTextString(m) }
-func (*PublishVerificationRequest) ProtoMessage()               {}
-func (*PublishVerificationRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{18} }
-
-func (m *PublishVerificationRequest) GetProviderId() string {
-	if m != nil {
-		return m.ProviderId
-	}
-	return ""
-}
-
-func (m *PublishVerificationRequest) GetConsumerId() string {
-	if m != nil {
-		return m.ConsumerId
-	}
-	return ""
-}
-
-func (m *PublishVerificationRequest) GetPactId() int32 {
-	if m != nil {
-		return m.PactId
-	}
-	return 0
-}
-
-func (m *PublishVerificationRequest) GetSuccess() bool {
-	if m != nil {
-		return m.Success
-	}
-	return false
-}
-
-func (m *PublishVerificationRequest) GetProviderApplicationVersion() string {
-	if m != nil {
-		return m.ProviderApplicationVersion
-	}
-	return ""
-}
-
-type PublishVerificationResponse struct {
-	Response     *proto1.Response    `protobuf:"bytes,1,opt,name=response" json:"response,omitempty"`
-	Confirmation *VerificationDetail `protobuf:"bytes,2,opt,name=confirmation" json:"confirmation,omitempty"`
-}
-
-func (m *PublishVerificationResponse) Reset()                    { *m = PublishVerificationResponse{} }
-func (m *PublishVerificationResponse) String() string            { return proto.CompactTextString(m) }
-func (*PublishVerificationResponse) ProtoMessage()               {}
-func (*PublishVerificationResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{19} }
-
-func (m *PublishVerificationResponse) GetConfirmation() *VerificationDetail {
-	if m != nil {
-		return m.Confirmation
-	}
-	return nil
-}
-
-type RetrieveVerificationRequest struct {
-	ConsumerId      string `protobuf:"bytes,1,opt,name=consumerId" json:"consumerId,omitempty"`
-	ConsumerVersion string `protobuf:"bytes,2,opt,name=consumerVersion" json:"consumerVersion,omitempty"`
-}
-
-func (m *RetrieveVerificationRequest) Reset()                    { *m = RetrieveVerificationRequest{} }
-func (m *RetrieveVerificationRequest) String() string            { return proto.CompactTextString(m) }
-func (*RetrieveVerificationRequest) ProtoMessage()               {}
-func (*RetrieveVerificationRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{20} }
-
-func (m *RetrieveVerificationRequest) GetConsumerId() string {
-	if m != nil {
-		return m.ConsumerId
-	}
-	return ""
-}
-
-func (m *RetrieveVerificationRequest) GetConsumerVersion() string {
-	if m != nil {
-		return m.ConsumerVersion
-	}
-	return ""
-}
-
-type RetrieveVerificationResponse struct {
-	Response *proto1.Response    `protobuf:"bytes,1,opt,name=response" json:"response,omitempty"`
-	Result   *VerificationResult `protobuf:"bytes,2,opt,name=result" json:"result,omitempty"`
-}
-
-func (m *RetrieveVerificationResponse) Reset()                    { *m = RetrieveVerificationResponse{} }
-func (m *RetrieveVerificationResponse) String() string            { return proto.CompactTextString(m) }
-func (*RetrieveVerificationResponse) ProtoMessage()               {}
-func (*RetrieveVerificationResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{21} }
-
-func (m *RetrieveVerificationResponse) GetResult() *VerificationResult {
-	if m != nil {
-		return m.Result
-	}
-	return nil
-}
-
-type BaseBrokerRequest struct {
-	HostAddress string `protobuf:"bytes,1,opt,name=hostAddress" json:"hostAddress,omitempty"`
-	Scheme      string `protobuf:"bytes,2,opt,name=scheme" json:"scheme,omitempty"`
-}
-
-func (m *BaseBrokerRequest) Reset()                    { *m = BaseBrokerRequest{} }
-func (m *BaseBrokerRequest) String() string            { return proto.CompactTextString(m) }
-func (*BaseBrokerRequest) ProtoMessage()               {}
-func (*BaseBrokerRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{22} }
-
-func (m *BaseBrokerRequest) GetHostAddress() string {
-	if m != nil {
-		return m.HostAddress
-	}
-	return ""
-}
-
-func (m *BaseBrokerRequest) GetScheme() string {
-	if m != nil {
-		return m.Scheme
-	}
-	return ""
-}
-
-type BrokerAPIInfoEntry struct {
-	Href      string `protobuf:"bytes,1,opt,name=href" json:"href,omitempty"`
-	Name      string `protobuf:"bytes,2,opt,name=name" json:"name,omitempty"`
-	Title     string `protobuf:"bytes,3,opt,name=title" json:"title,omitempty"`
-	Templated bool   `protobuf:"varint,4,opt,name=templated" json:"templated,omitempty"`
-}
-
-func (m *BrokerAPIInfoEntry) Reset()                    { *m = BrokerAPIInfoEntry{} }
-func (m *BrokerAPIInfoEntry) String() string            { return proto.CompactTextString(m) }
-func (*BrokerAPIInfoEntry) ProtoMessage()               {}
-func (*BrokerAPIInfoEntry) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{23} }
-
-func (m *BrokerAPIInfoEntry) GetHref() string {
-	if m != nil {
-		return m.Href
-	}
-	return ""
-}
-
-func (m *BrokerAPIInfoEntry) GetName() string {
-	if m != nil {
-		return m.Name
-	}
-	return ""
-}
-
-func (m *BrokerAPIInfoEntry) GetTitle() string {
-	if m != nil {
-		return m.Title
-	}
-	return ""
-}
-
-func (m *BrokerAPIInfoEntry) GetTemplated() bool {
-	if m != nil {
-		return m.Templated
-	}
-	return false
-}
-
-type BrokerHomeResponse struct {
-	Response *proto1.Response               `protobuf:"bytes,1,opt,name=response" json:"response,omitempty"`
-	XLinks   map[string]*BrokerAPIInfoEntry `protobuf:"bytes,2,rep,name=_links,json=Links" json:"_links,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
-	Curies   []*BrokerAPIInfoEntry          `protobuf:"bytes,3,rep,name=curies" json:"curies,omitempty"`
-}
-
-func (m *BrokerHomeResponse) Reset()                    { *m = BrokerHomeResponse{} }
-func (m *BrokerHomeResponse) String() string            { return proto.CompactTextString(m) }
-func (*BrokerHomeResponse) ProtoMessage()               {}
-func (*BrokerHomeResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{24} }
-
-func (m *BrokerHomeResponse) GetXLinks() map[string]*BrokerAPIInfoEntry {
-	if m != nil {
-		return m.XLinks
-	}
-	return nil
-}
-
-func (m *BrokerHomeResponse) GetCuries() []*BrokerAPIInfoEntry {
-	if m != nil {
-		return m.Curies
-	}
-	return nil
-}
-
-func init() {
-	proto.RegisterType((*Participant)(nil), "brokerpb.Participant")
-	proto.RegisterType((*Version)(nil), "brokerpb.Version")
-	proto.RegisterType((*Pact)(nil), "brokerpb.Pact")
-	proto.RegisterType((*PactVersion)(nil), "brokerpb.PactVersion")
-	proto.RegisterType((*Tag)(nil), "brokerpb.Tag")
-	proto.RegisterType((*PublishPactRequest)(nil), "brokerpb.PublishPactRequest")
-	proto.RegisterType((*PublishPactResponse)(nil), "brokerpb.PublishPactResponse")
-	proto.RegisterType((*GetAllProviderPactsRequest)(nil), "brokerpb.GetAllProviderPactsRequest")
-	proto.RegisterType((*ConsumerInfo)(nil), "brokerpb.ConsumerInfo")
-	proto.RegisterType((*Links)(nil), "brokerpb.Links")
-	proto.RegisterType((*GetAllProviderPactsResponse)(nil), "brokerpb.GetAllProviderPactsResponse")
-	proto.RegisterType((*GetProviderConsumerVersionPactRequest)(nil), "brokerpb.GetProviderConsumerVersionPactRequest")
-	proto.RegisterType((*GetProviderConsumerVersionPactResponse)(nil), "brokerpb.GetProviderConsumerVersionPactResponse")
-	proto.RegisterType((*Verification)(nil), "brokerpb.Verification")
-	proto.RegisterType((*VerificationSummary)(nil), "brokerpb.VerificationSummary")
-	proto.RegisterType((*VerificationDetail)(nil), "brokerpb.VerificationDetail")
-	proto.RegisterType((*VerificationDetails)(nil), "brokerpb.VerificationDetails")
-	proto.RegisterType((*VerificationResult)(nil), "brokerpb.VerificationResult")
-	proto.RegisterType((*PublishVerificationRequest)(nil), "brokerpb.PublishVerificationRequest")
-	proto.RegisterType((*PublishVerificationResponse)(nil), "brokerpb.PublishVerificationResponse")
-	proto.RegisterType((*RetrieveVerificationRequest)(nil), "brokerpb.RetrieveVerificationRequest")
-	proto.RegisterType((*RetrieveVerificationResponse)(nil), "brokerpb.RetrieveVerificationResponse")
-	proto.RegisterType((*BaseBrokerRequest)(nil), "brokerpb.BaseBrokerRequest")
-	proto.RegisterType((*BrokerAPIInfoEntry)(nil), "brokerpb.BrokerAPIInfoEntry")
-	proto.RegisterType((*BrokerHomeResponse)(nil), "brokerpb.BrokerHomeResponse")
-}
-
-func init() { proto.RegisterFile("broker.proto", fileDescriptor0) }
-
-var fileDescriptor0 = []byte{
-	// 1077 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x57, 0x4d, 0x6f, 0x23, 0x45,
-	0x13, 0xd6, 0x38, 0x76, 0x12, 0x57, 0xfc, 0xbe, 0x59, 0x3a, 0xb0, 0xb2, 0x9c, 0x80, 0xa2, 0x16,
-	0x2c, 0x11, 0xb0, 0x89, 0x14, 0x76, 0x01, 0xed, 0x61, 0x45, 0xc2, 0xae, 0x42, 0x24, 0x36, 0xb2,
-	0x06, 0x36, 0x07, 0x2e, 0xab, 0x71, 0x4f, 0x39, 0x6e, 0x65, 0xbe, 0xe8, 0xee, 0x31, 0xca, 0x11,
-	0x6e, 0x48, 0x48, 0xfc, 0x13, 0x2e, 0x5c, 0x38, 0xf1, 0x13, 0xf8, 0x1d, 0xfc, 0x0c, 0xd4, 0x3d,
-	0xdd, 0xf3, 0x11, 0x7f, 0x64, 0xb1, 0x10, 0xb7, 0xae, 0xea, 0xea, 0xea, 0xa7, 0x9e, 0x7a, 0x5c,
-	0x3d, 0x86, 0xde, 0x48, 0xa4, 0xd7, 0x28, 0x0e, 0x33, 0x91, 0xaa, 0x94, 0x6c, 0x16, 0x56, 0x36,
-	0x1a, 0xbc, 0xb8, 0xe2, 0x6a, 0x92, 0x8f, 0x0e, 0x59, 0x1a, 0x1f, 0x05, 0x59, 0xc0, 0x26, 0x78,
-	0x24, 0x51, 0x4c, 0x39, 0x43, 0x96, 0xc6, 0xa3, 0x87, 0x76, 0xfd, 0x90, 0x61, 0xa2, 0x50, 0x98,
-	0x2d, 0x14, 0x47, 0x2c, 0x15, 0x78, 0x64, 0x32, 0xb9, 0x60, 0x59, 0x24, 0xa6, 0x2f, 0x61, 0x6b,
-	0x18, 0x08, 0xc5, 0x19, 0xcf, 0x82, 0x44, 0x91, 0xff, 0x43, 0x8b, 0x87, 0x7d, 0x6f, 0xdf, 0x3b,
-	0xe8, 0xf8, 0x2d, 0x1e, 0x92, 0x37, 0xa1, 0x13, 0x64, 0xd9, 0x79, 0xd8, 0x6f, 0xed, 0x7b, 0x07,
-	0x5d, 0xbf, 0x30, 0xc8, 0x3e, 0x6c, 0xd9, 0x34, 0x17, 0x41, 0x8c, 0xfd, 0x35, 0xb3, 0x57, 0x77,
-	0xd1, 0x18, 0x36, 0x2e, 0x51, 0x48, 0x9e, 0x26, 0x33, 0x29, 0xef, 0xc3, 0x7a, 0x92, 0xc7, 0x23,
-	0x14, 0x36, 0xa7, 0xb5, 0xc8, 0xbb, 0xf0, 0xbf, 0xac, 0x42, 0x72, 0x1e, 0x9a, 0xb4, 0x1d, 0xbf,
-	0xe9, 0xd4, 0x80, 0x52, 0x11, 0xa2, 0xe8, 0xb7, 0xcd, 0x6e, 0x61, 0xd0, 0x5f, 0x3d, 0x68, 0x0f,
-	0x03, 0x36, 0x8b, 0xff, 0x11, 0xbc, 0xc5, 0xd2, 0x44, 0xe6, 0x31, 0x8a, 0x61, 0x23, 0x79, 0xcb,
-	0x84, 0xcc, 0xdf, 0xd4, 0xa7, 0x32, 0x91, 0x4e, 0x79, 0x78, 0xfb, 0x54, 0x01, 0x69, 0xfe, 0x26,
-	0xb9, 0x07, 0x6b, 0x72, 0x12, 0x18, 0x60, 0x3d, 0x5f, 0x2f, 0x49, 0x1f, 0x36, 0x58, 0x9a, 0x28,
-	0x4c, 0x54, 0xbf, 0x63, 0xbc, 0xce, 0xa4, 0x3f, 0x79, 0x9a, 0x77, 0xa6, 0x16, 0x91, 0xb4, 0x07,
-	0xdd, 0x69, 0xb1, 0x55, 0x62, 0xad, 0x1c, 0x9a, 0xc2, 0x2c, 0x60, 0x15, 0x20, 0x6b, 0x2d, 0xc6,
-	0xdd, 0x5e, 0x82, 0x9b, 0x7e, 0x0a, 0x6b, 0xdf, 0x04, 0x57, 0x84, 0x40, 0x3b, 0xd1, 0xdd, 0xf4,
-	0x4c, 0x57, 0xcc, 0x7a, 0x39, 0x0c, 0xfa, 0xa3, 0x07, 0x64, 0x98, 0x8f, 0x22, 0x2e, 0x27, 0xba,
-	0x16, 0x1f, 0xbf, 0xcb, 0x51, 0x2a, 0xf2, 0x0e, 0x80, 0xbb, 0xe8, 0x3c, 0xb4, 0xe9, 0x6a, 0x1e,
-	0xbd, 0xef, 0x68, 0x2f, 0x85, 0x55, 0xf3, 0x68, 0xd6, 0xec, 0x1d, 0x56, 0x59, 0xce, 0xd4, 0x10,
-	0x75, 0xa5, 0x96, 0x62, 0xb3, 0xa6, 0xa7, 0xb0, 0xd3, 0xc0, 0x20, 0xb3, 0x34, 0x91, 0x48, 0x3e,
-	0x84, 0x4d, 0x61, 0xd7, 0x06, 0xc2, 0xd6, 0xf1, 0x76, 0xa1, 0xf8, 0x43, 0x17, 0xe2, 0x97, 0x01,
-	0x54, 0xc2, 0xe0, 0x0c, 0xd5, 0x49, 0x14, 0x0d, 0x4b, 0x82, 0x98, 0x92, 0xaf, 0x5b, 0xcf, 0x63,
-	0xd8, 0x18, 0x05, 0x12, 0x5f, 0x8a, 0xc8, 0x14, 0xb3, 0x75, 0xbc, 0x7b, 0xe8, 0x7e, 0xad, 0x87,
-	0xa7, 0x81, 0xc4, 0x53, 0x63, 0xd8, 0x6c, 0xbe, 0x8b, 0xa5, 0x9f, 0x40, 0xef, 0x0b, 0x57, 0x74,
-	0x32, 0x4e, 0x75, 0x71, 0x13, 0x81, 0x63, 0xc7, 0xbf, 0x5e, 0x97, 0x3d, 0x69, 0x55, 0x3d, 0xa1,
-	0x8f, 0xa1, 0xf3, 0x15, 0x4f, 0xae, 0x25, 0xf9, 0x08, 0x3a, 0x9a, 0x01, 0xd9, 0xf7, 0xf6, 0xd7,
-	0x0e, 0xb6, 0x8e, 0xef, 0x57, 0xb7, 0xd6, 0xf3, 0xfa, 0x45, 0x10, 0x15, 0xb0, 0x3b, 0xb7, 0xc6,
-	0x15, 0xf8, 0x22, 0x0f, 0x60, 0xfd, 0x55, 0xa4, 0x31, 0xd8, 0x82, 0xb7, 0xab, 0xab, 0x0d, 0x34,
-	0xbf, 0x40, 0x48, 0x7f, 0xf7, 0xe0, 0xbd, 0x33, 0x54, 0xee, 0x46, 0x07, 0xcb, 0x8a, 0xfe, 0xbf,
-	0xd1, 0x4c, 0xad, 0x3b, 0xed, 0x7f, 0xd0, 0x1d, 0x0e, 0x0f, 0xee, 0x42, 0xbe, 0x0a, 0x73, 0x4e,
-	0xc1, 0xad, 0x9a, 0x82, 0xff, 0xf2, 0xa0, 0x77, 0x89, 0x82, 0x8f, 0x39, 0x0b, 0xd4, 0xdd, 0x13,
-	0xb3, 0xd3, 0x9c, 0x98, 0xe5, 0x0c, 0xa9, 0x4f, 0xcc, 0x9a, 0x53, 0x53, 0x23, 0x73, 0xc6, 0x50,
-	0x4a, 0x43, 0xc0, 0xa6, 0xef, 0x4c, 0x72, 0x00, 0xdb, 0x8e, 0x62, 0x1b, 0x6e, 0xc6, 0x54, 0xd7,
-	0xbf, 0xed, 0x26, 0x03, 0xd8, 0x1c, 0xe5, 0x3c, 0x0a, 0x35, 0x8b, 0xeb, 0x26, 0xa4, 0xb4, 0xc9,
-	0x07, 0x70, 0x6f, 0x5a, 0x43, 0xff, 0x2c, 0x50, 0xd8, 0xdf, 0x30, 0x31, 0x33, 0x7e, 0x7a, 0x05,
-	0x3b, 0xf5, 0x4a, 0xbf, 0xce, 0xe3, 0x38, 0x10, 0x37, 0xba, 0xbb, 0x16, 0xd3, 0x38, 0x8f, 0x8c,
-	0x9c, 0xbb, 0x7e, 0xcd, 0xa3, 0x09, 0x18, 0x07, 0x3c, 0x42, 0xdd, 0x79, 0xbd, 0x67, 0x2d, 0x5d,
-	0x5a, 0x9e, 0x5c, 0x27, 0xe9, 0xf7, 0xba, 0xeb, 0x7a, 0xc3, 0x99, 0xf4, 0x0f, 0x0f, 0x48, 0xfd,
-	0xa6, 0x67, 0xa8, 0x02, 0x1e, 0x11, 0x0a, 0x3d, 0x57, 0xda, 0x45, 0x35, 0xeb, 0x1a, 0x3e, 0xf2,
-	0x14, 0x06, 0xce, 0x3e, 0xc9, 0xb2, 0xc8, 0x26, 0x70, 0x04, 0x15, 0xd2, 0x5b, 0x12, 0x51, 0xe7,
-	0x7b, 0xad, 0xc9, 0xf7, 0x3c, 0xa6, 0xda, 0x0b, 0x98, 0xc2, 0x26, 0x53, 0x05, 0x7e, 0x49, 0x2e,
-	0x60, 0xa7, 0x1e, 0xea, 0xa3, 0xcc, 0xa3, 0x72, 0x02, 0xec, 0x55, 0xca, 0x9e, 0x3d, 0xeb, 0xcf,
-	0x3b, 0x48, 0x7f, 0xbb, 0xc5, 0x53, 0xe1, 0xaf, 0xd7, 0xe0, 0x35, 0x6b, 0x38, 0xab, 0x34, 0x63,
-	0xbb, 0x67, 0x67, 0xc0, 0xdb, 0xf3, 0x2f, 0xb7, 0x41, 0xfe, 0xed, 0x53, 0xe4, 0x09, 0x74, 0x5f,
-	0x61, 0x3c, 0xc2, 0x30, 0xc4, 0x42, 0xb8, 0x0b, 0x53, 0xd8, 0xda, 0xfd, 0xcd, 0xe7, 0x36, 0x9c,
-	0xfe, 0xe9, 0xc1, 0xc0, 0x0e, 0xfd, 0x26, 0xf8, 0x7f, 0x67, 0x98, 0x2c, 0x7a, 0x5e, 0x17, 0xff,
-	0x92, 0x96, 0x6b, 0xa6, 0x73, 0x97, 0x66, 0xe8, 0xcf, 0x1e, 0xec, 0xce, 0x2d, 0x68, 0x95, 0x19,
-	0xf3, 0x39, 0xf4, 0x58, 0x9a, 0x8c, 0xb9, 0x88, 0x4d, 0x12, 0xdb, 0x9f, 0xe5, 0xe2, 0x68, 0x9c,
-	0xa0, 0x57, 0xb0, 0xeb, 0xa3, 0x12, 0x1c, 0xa7, 0xb8, 0x80, 0xdf, 0x1a, 0x7f, 0xde, 0x0c, 0x7f,
-	0x07, 0xb0, 0xcd, 0x9a, 0x03, 0xd3, 0x92, 0x7c, 0xdb, 0x4d, 0x7f, 0xf0, 0x60, 0x6f, 0xfe, 0x4d,
-	0xab, 0x14, 0xfe, 0x08, 0xd6, 0x85, 0xd1, 0xef, 0xf2, 0x92, 0x0b, 0x8d, 0xfb, 0x36, 0x96, 0xbe,
-	0x80, 0x37, 0x66, 0xde, 0x01, 0xfd, 0x85, 0x3b, 0x49, 0xa5, 0x3a, 0x09, 0x43, 0xe1, 0x7e, 0x04,
-	0x5d, 0xbf, 0xee, 0xd2, 0x22, 0x91, 0x6c, 0x82, 0xe5, 0xe3, 0x6c, 0x2d, 0x9a, 0x01, 0x29, 0x52,
-	0x9d, 0x0c, 0xcf, 0xf5, 0xfb, 0xfb, 0x3c, 0x51, 0xe2, 0xe6, 0x75, 0x1f, 0x77, 0xfd, 0x79, 0xab,
-	0xb8, 0x8a, 0xdc, 0x37, 0x75, 0x61, 0xe8, 0xcf, 0x30, 0x85, 0x71, 0x16, 0x05, 0x0a, 0x43, 0x2b,
-	0xbd, 0xca, 0x41, 0x7f, 0x69, 0xb9, 0x2b, 0xbf, 0x4c, 0x63, 0x5c, 0x8d, 0xba, 0xa7, 0xb5, 0x17,
-	0x5d, 0x8f, 0x92, 0xf7, 0x6b, 0x8f, 0xe4, 0x4c, 0xea, 0xe2, 0x91, 0x37, 0x85, 0xd9, 0x97, 0x5e,
-	0x53, 0xcf, 0x72, 0xc1, 0x51, 0x9a, 0x41, 0xdc, 0xa0, 0x7e, 0x96, 0x0d, 0xdf, 0xc6, 0x0e, 0x2e,
-	0x01, 0xaa, 0x54, 0xfa, 0xfb, 0xf9, 0x1a, 0x6f, 0x2c, 0x45, 0x7a, 0x49, 0x8e, 0xa1, 0x33, 0x0d,
-	0xa2, 0x1c, 0x67, 0xfb, 0x39, 0x27, 0x69, 0x11, 0xfa, 0xa4, 0xf5, 0x99, 0x77, 0x0a, 0xdf, 0x96,
-	0xff, 0x97, 0x46, 0xeb, 0xa6, 0xe6, 0x8f, 0xff, 0x0e, 0x00, 0x00, 0xff, 0xff, 0xf1, 0xd8, 0x8b,
-	0xa5, 0x50, 0x0d, 0x00, 0x00,
-}
diff --git a/server/broker/service.go b/server/broker/service.go
index 4006e13..02c3e5a 100644
--- a/server/broker/service.go
+++ b/server/broker/service.go
@@ -20,6 +20,7 @@ package broker
 import (
 	"crypto/sha1"
 	"encoding/json"
+	"github.com/apache/servicecomb-service-center/server/core/proto"
 	"math"
 	"strconv"
 	"strings"
@@ -27,10 +28,10 @@ import (
 
 	"context"
 	"github.com/apache/servicecomb-service-center/pkg/log"
+	pb "github.com/apache/servicecomb-service-center/pkg/registry"
 	"github.com/apache/servicecomb-service-center/pkg/util"
 	"github.com/apache/servicecomb-service-center/server/broker/brokerpb"
 	apt "github.com/apache/servicecomb-service-center/server/core"
-	pb "github.com/apache/servicecomb-service-center/server/core/proto"
 	"github.com/apache/servicecomb-service-center/server/plugin/registry"
 	scerr "github.com/apache/servicecomb-service-center/server/scerror"
 	serviceUtil "github.com/apache/servicecomb-service-center/server/service/util"
@@ -47,7 +48,7 @@ func (*Service) GetBrokerHome(ctx context.Context,
 	if in == nil || len(in.HostAddress) == 0 {
 		PactLogger.Errorf(nil, "Get Participant versions request failed: invalid params.")
 		return &brokerpb.BrokerHomeResponse{
-			Response: pb.CreateResponse(scerr.ErrInvalidParams, "Request format invalid."),
+			Response: proto.CreateResponse(scerr.ErrInvalidParams, "Request format invalid."),
 		}, nil
 	}
 
@@ -63,7 +64,7 @@ func (*Service) GetPactsOfProvider(ctx context.Context,
 	if err != nil || resp.GetPact() == nil || pactID == -1 {
 		var message string
 		if resp != nil {
-			message = resp.Response.Message
+			message = resp.Response.GetMessage()
 		}
 		PactLogger.Errorf(err, "Get pacts of provider failed: %s\n", message)
 		return &brokerpb.GetProviderConsumerVersionPactResponse{
@@ -91,10 +92,9 @@ func (*Service) GetPactsOfProvider(ctx context.Context,
 	finalBytes := append(sliceOfResp, linksBytes...)
 
 	return &brokerpb.GetProviderConsumerVersionPactResponse{
-		Response: pb.CreateResponse(pb.Response_SUCCESS, "Success."),
+		Response: proto.CreateResponse(proto.Response_SUCCESS, "Success."),
 		Pact:     finalBytes,
 	}, nil
-	//controller.WriteText(http.StatusBadRequest, resp.Response.Message, w)
 
 }
 
@@ -111,7 +111,7 @@ func (*Service) RetrieveProviderPacts(ctx context.Context,
 	if in == nil || len(in.ProviderId) == 0 {
 		PactLogger.Errorf(nil, "all provider pact retrieve request failed: invalid params.")
 		return &brokerpb.GetAllProviderPactsResponse{
-			Response: pb.CreateResponse(scerr.ErrInvalidParams, "Request format invalid."),
+			Response: proto.CreateResponse(scerr.ErrInvalidParams, "Request format invalid."),
 		}, nil
 	}
 	tenant := GetDefaultTenantProject()
@@ -120,13 +120,13 @@ func (*Service) RetrieveProviderPacts(ctx context.Context,
 	if err != nil {
 		PactLogger.Errorf(err, "all provider pact retrieve failed, providerId is %s: query provider failed.", in.ProviderId)
 		return &brokerpb.GetAllProviderPactsResponse{
-			Response: pb.CreateResponse(scerr.ErrInvalidParams, "Query provider failed."),
+			Response: proto.CreateResponse(scerr.ErrInvalidParams, "Query provider failed."),
 		}, err
 	}
 	if provider == nil {
 		PactLogger.Errorf(nil, "all provider pact retrieve failed, providerId is %s: provider not exist.", in.ProviderId)
 		return &brokerpb.GetAllProviderPactsResponse{
-			Response: pb.CreateResponse(scerr.ErrInvalidParams, "Provider does not exist."),
+			Response: proto.CreateResponse(scerr.ErrInvalidParams, "Provider does not exist."),
 		}, nil
 	}
 	// Get the provider participant
@@ -135,7 +135,7 @@ func (*Service) RetrieveProviderPacts(ctx context.Context,
 	if err != nil || providerParticipant == nil {
 		PactLogger.Errorf(nil, "all provider pact retrieve failed, provider participant cannot be searched.", in.ProviderId)
 		return &brokerpb.GetAllProviderPactsResponse{
-			Response: pb.CreateResponse(scerr.ErrInvalidParams, "Provider participant cannot be searched."),
+			Response: proto.CreateResponse(scerr.ErrInvalidParams, "Provider participant cannot be searched."),
 		}, err
 	}
 	PactLogger.Infof("[RetrieveProviderPacts] Provider participant id : %d", providerParticipant.Id)
@@ -252,7 +252,7 @@ func (*Service) RetrieveProviderPacts(ctx context.Context,
 	}
 	PactLogger.Infof("Json : %s", string(resJSON))
 	response := &brokerpb.GetAllProviderPactsResponse{
-		Response: pb.CreateResponse(pb.Response_SUCCESS, "retrieve provider pact info succeeded."),
+		Response: proto.CreateResponse(proto.Response_SUCCESS, "retrieve provider pact info succeeded."),
 		XLinks:   links,
 	}
 	return response, nil
@@ -264,7 +264,7 @@ func (*Service) GetAllProviderPacts(ctx context.Context,
 	if in == nil || len(in.ProviderId) == 0 {
 		PactLogger.Errorf(nil, "all provider pact retrieve request failed: invalid params.")
 		return &brokerpb.GetAllProviderPactsResponse{
-			Response: pb.CreateResponse(scerr.ErrInvalidParams, "Request format invalid."),
+			Response: proto.CreateResponse(scerr.ErrInvalidParams, "Request format invalid."),
 		}, nil
 	}
 	tenant := GetDefaultTenantProject()
@@ -273,13 +273,13 @@ func (*Service) GetAllProviderPacts(ctx context.Context,
 	if err != nil {
 		PactLogger.Errorf(err, "all provider pact retrieve failed, providerId is %s: query provider failed.", in.ProviderId)
 		return &brokerpb.GetAllProviderPactsResponse{
-			Response: pb.CreateResponse(scerr.ErrInvalidParams, "Query provider failed."),
+			Response: proto.CreateResponse(scerr.ErrInvalidParams, "Query provider failed."),
 		}, err
 	}
 	if provider == nil {
 		PactLogger.Errorf(nil, "all provider pact retrieve failed, providerId is %s: provider not exist.", in.ProviderId)
 		return &brokerpb.GetAllProviderPactsResponse{
-			Response: pb.CreateResponse(scerr.ErrInvalidParams, "Provider does not exist."),
+			Response: proto.CreateResponse(scerr.ErrInvalidParams, "Provider does not exist."),
 		}, nil
 	}
 	// Get the provider participant
@@ -288,7 +288,7 @@ func (*Service) GetAllProviderPacts(ctx context.Context,
 	if err != nil || providerParticipant == nil {
 		PactLogger.Errorf(nil, "all provider pact retrieve failed, provider participant cannot be searched.", in.ProviderId)
 		return &brokerpb.GetAllProviderPactsResponse{
-			Response: pb.CreateResponse(scerr.ErrInvalidParams, "Provider participant cannot be searched."),
+			Response: proto.CreateResponse(scerr.ErrInvalidParams, "Provider participant cannot be searched."),
 		}, err
 	}
 	PactLogger.Infof("[RetrieveProviderPacts] Provider participant id : %d", providerParticipant.Id)
@@ -405,7 +405,7 @@ func (*Service) GetAllProviderPacts(ctx context.Context,
 	}
 	PactLogger.Infof("Json : %s", string(resJSON))
 	response := &brokerpb.GetAllProviderPactsResponse{
-		Response: pb.CreateResponse(pb.Response_SUCCESS, "retrieve provider pact info succeeded."),
+		Response: proto.CreateResponse(proto.Response_SUCCESS, "retrieve provider pact info succeeded."),
 		XLinks:   links,
 	}
 	return response, nil
@@ -415,7 +415,7 @@ func (*Service) RetrieveVerificationResults(ctx context.Context, in *brokerpb.Re
 	if in == nil || len(in.ConsumerId) == 0 || len(in.ConsumerVersion) == 0 {
 		PactLogger.Errorf(nil, "verification result retrieve request failed: invalid params.")
 		return &brokerpb.RetrieveVerificationResponse{
-			Response: pb.CreateResponse(scerr.ErrInvalidParams, "Request format invalid."),
+			Response: proto.CreateResponse(scerr.ErrInvalidParams, "Request format invalid."),
 		}, nil
 	}
 	tenant := GetDefaultTenantProject()
@@ -423,13 +423,13 @@ func (*Service) RetrieveVerificationResults(ctx context.Context, in *brokerpb.Re
 	if err != nil {
 		PactLogger.Errorf(err, "verification result retrieve request failed, consumerID is %s: query consumer failed.", in.ConsumerId)
 		return &brokerpb.RetrieveVerificationResponse{
-			Response: pb.CreateResponse(scerr.ErrInvalidParams, "Query consumer failed."),
+			Response: proto.CreateResponse(scerr.ErrInvalidParams, "Query consumer failed."),
 		}, err
 	}
 	if consumer == nil {
 		PactLogger.Errorf(nil, "verification result retrieve request failed, consumerID is %s: consumer not exist.", in.ConsumerId)
 		return &brokerpb.RetrieveVerificationResponse{
-			Response: pb.CreateResponse(scerr.ErrInvalidParams, "Consumer does not exist."),
+			Response: proto.CreateResponse(scerr.ErrInvalidParams, "Consumer does not exist."),
 		}, nil
 	}
 	PactLogger.Infof("Consumer service found: (%s, %s, %s, %s)", consumer.ServiceId, consumer.AppId, consumer.ServiceName, consumer.Version)
@@ -438,7 +438,7 @@ func (*Service) RetrieveVerificationResults(ctx context.Context, in *brokerpb.Re
 	if err != nil || consumerParticipant == nil {
 		PactLogger.Errorf(nil, "verification result retrieve request failed, consumer participant cannot be searched.", in.ConsumerId)
 		return &brokerpb.RetrieveVerificationResponse{
-			Response: pb.CreateResponse(scerr.ErrInvalidParams, "consumer participant cannot be searched."),
+			Response: proto.CreateResponse(scerr.ErrInvalidParams, "consumer participant cannot be searched."),
 		}, err
 	}
 	PactLogger.Infof("Consumer participant found: (%d, %s, %s)", consumerParticipant.Id, consumerParticipant.AppId, consumerParticipant.ServiceName)
@@ -447,7 +447,7 @@ func (*Service) RetrieveVerificationResults(ctx context.Context, in *brokerpb.Re
 	if err != nil || version == nil {
 		PactLogger.Errorf(nil, "verification result retrieve request failed, version cannot be searched.")
 		return &brokerpb.RetrieveVerificationResponse{
-			Response: pb.CreateResponse(scerr.ErrInvalidParams, "version cannot be searched."),
+			Response: proto.CreateResponse(scerr.ErrInvalidParams, "version cannot be searched."),
 		}, err
 	}
 	PactLogger.Infof("Version found/created: (%d, %s, %d, %d)", version.Id, version.Number, version.ParticipantId, version.Order)
@@ -459,7 +459,7 @@ func (*Service) RetrieveVerificationResults(ctx context.Context, in *brokerpb.Re
 	if err != nil || len(pactVersions.Kvs) == 0 {
 		PactLogger.Errorf(nil, "verification result publish request failed, pact version cannot be searched.")
 		return &brokerpb.RetrieveVerificationResponse{
-			Response: pb.CreateResponse(scerr.ErrInvalidParams, "pact version cannot be searched."),
+			Response: proto.CreateResponse(scerr.ErrInvalidParams, "pact version cannot be searched."),
 		}, err
 	}
 	overAllSuccess := false
@@ -475,7 +475,7 @@ func (*Service) RetrieveVerificationResults(ctx context.Context, in *brokerpb.Re
 		if err != nil {
 			PactLogger.Errorf(nil, "verification result retrieve request failed, pact version cannot be searched.")
 			return &brokerpb.RetrieveVerificationResponse{
-				Response: pb.CreateResponse(scerr.ErrInvalidParams, "pact version cannot be searched."),
+				Response: proto.CreateResponse(scerr.ErrInvalidParams, "pact version cannot be searched."),
 			}, err
 		}
 		key = util.StringJoin([]string{GetBrokerVerificationKey(tenant), strconv.Itoa(int(pactVersion.Id))}, "/")
@@ -486,7 +486,7 @@ func (*Service) RetrieveVerificationResults(ctx context.Context, in *brokerpb.Re
 		if err != nil || len(verifications.Kvs) == 0 {
 			PactLogger.Errorf(nil, "verification result retrieve request failed, verification results cannot be searched.")
 			return &brokerpb.RetrieveVerificationResponse{
-				Response: pb.CreateResponse(scerr.ErrInvalidParams, "verification results cannot be searched."),
+				Response: proto.CreateResponse(scerr.ErrInvalidParams, "verification results cannot be searched."),
 			}, err
 		}
 		lastNumber := int32(math.MinInt32)
@@ -497,7 +497,7 @@ func (*Service) RetrieveVerificationResults(ctx context.Context, in *brokerpb.Re
 			if err != nil {
 				PactLogger.Errorf(nil, "verification result retrieve request failed, verification result unmarshall error.")
 				return &brokerpb.RetrieveVerificationResponse{
-					Response: pb.CreateResponse(scerr.ErrInvalidParams, "verification result unmarshall error."),
+					Response: proto.CreateResponse(scerr.ErrInvalidParams, "verification result unmarshall error."),
 				}, err
 			}
 			if verification.Number > lastNumber {
@@ -508,7 +508,7 @@ func (*Service) RetrieveVerificationResults(ctx context.Context, in *brokerpb.Re
 		if lastVerificationResult == nil {
 			PactLogger.Errorf(nil, "verification result retrieve request failed, verification result cannot be found.")
 			return &brokerpb.RetrieveVerificationResponse{
-				Response: pb.CreateResponse(scerr.ErrInvalidParams, "verification result cannot be found."),
+				Response: proto.CreateResponse(scerr.ErrInvalidParams, "verification result cannot be found."),
 			}, err
 		}
 		PactLogger.Infof("Verification result found: (%d, %d, %d, %t, %s, %s, %s)",
@@ -524,7 +524,7 @@ func (*Service) RetrieveVerificationResults(ctx context.Context, in *brokerpb.Re
 		if err != nil || len(participants.Kvs) == 0 {
 			PactLogger.Errorf(nil, "verification result retrieve request failed, provider participant cannot be searched.")
 			return &brokerpb.RetrieveVerificationResponse{
-				Response: pb.CreateResponse(scerr.ErrInvalidParams, "provider participant cannot be searched."),
+				Response: proto.CreateResponse(scerr.ErrInvalidParams, "provider participant cannot be searched."),
 			}, err
 		}
 		var providerParticipant *brokerpb.Participant
@@ -534,7 +534,7 @@ func (*Service) RetrieveVerificationResults(ctx context.Context, in *brokerpb.Re
 			if err != nil {
 				PactLogger.Errorf(nil, "verification result retrieve request failed, verification result unmarshall error.")
 				return &brokerpb.RetrieveVerificationResponse{
-					Response: pb.CreateResponse(scerr.ErrInvalidParams, "verification result unmarshall error."),
+					Response: proto.CreateResponse(scerr.ErrInvalidParams, "verification result unmarshall error."),
 				}, err
 			}
 			if participant.Id == pactVersion.ProviderParticipantId {
@@ -545,7 +545,7 @@ func (*Service) RetrieveVerificationResults(ctx context.Context, in *brokerpb.Re
 		if providerParticipant == nil {
 			PactLogger.Errorf(nil, "verification result retrieve request failed, verification result unmarshall error.")
 			return &brokerpb.RetrieveVerificationResponse{
-				Response: pb.CreateResponse(scerr.ErrInvalidParams, "verification result unmarshall error."),
+				Response: proto.CreateResponse(scerr.ErrInvalidParams, "verification result unmarshall error."),
 			}, err
 		}
 		serviceFindReq := &pb.GetExistenceRequest{
@@ -558,7 +558,7 @@ func (*Service) RetrieveVerificationResults(ctx context.Context, in *brokerpb.Re
 		if err != nil {
 			PactLogger.Errorf(nil, "verification result retrieve request failed, provider service cannot be found.")
 			return &brokerpb.RetrieveVerificationResponse{
-				Response: pb.CreateResponse(scerr.ErrInvalidParams, "provider service cannot be found."),
+				Response: proto.CreateResponse(scerr.ErrInvalidParams, "provider service cannot be found."),
 			}, err
 		}
 		providerName := resp.ServiceId
@@ -581,7 +581,7 @@ func (*Service) RetrieveVerificationResults(ctx context.Context, in *brokerpb.Re
 	verificationResult := &brokerpb.VerificationResult{Success: overAllSuccess, ProviderSummary: verificationSummary, XEmbedded: verificationDetails}
 	PactLogger.Infof("Verification result retrieved successfully ...")
 	return &brokerpb.RetrieveVerificationResponse{
-		Response: pb.CreateResponse(pb.Response_SUCCESS, "Verification result retrieved successfully."),
+		Response: proto.CreateResponse(proto.Response_SUCCESS, "Verification result retrieved successfully."),
 		Result:   verificationResult,
 	}, nil
 }
@@ -590,7 +590,7 @@ func (*Service) PublishVerificationResults(ctx context.Context, in *brokerpb.Pub
 	if in == nil || len(in.ProviderId) == 0 || len(in.ConsumerId) == 0 {
 		PactLogger.Errorf(nil, "verification result publish request failed: invalid params.")
 		return &brokerpb.PublishVerificationResponse{
-			Response: pb.CreateResponse(scerr.ErrInvalidParams, "Request format invalid."),
+			Response: proto.CreateResponse(scerr.ErrInvalidParams, "Request format invalid."),
 		}, nil
 	}
 	tenant := GetDefaultTenantProject()
@@ -598,13 +598,13 @@ func (*Service) PublishVerificationResults(ctx context.Context, in *brokerpb.Pub
 	if err != nil {
 		PactLogger.Errorf(err, "verification result publish request failed, consumerID is %s: query consumer failed.", in.ConsumerId)
 		return &brokerpb.PublishVerificationResponse{
-			Response: pb.CreateResponse(scerr.ErrInvalidParams, "Query consumer failed."),
+			Response: proto.CreateResponse(scerr.ErrInvalidParams, "Query consumer failed."),
 		}, err
 	}
 	if consumer == nil {
 		PactLogger.Errorf(nil, "verification result publish request failed, consumerID is %s: consumer not exist.", in.ConsumerId)
 		return &brokerpb.PublishVerificationResponse{
-			Response: pb.CreateResponse(scerr.ErrInvalidParams, "Consumer does not exist."),
+			Response: proto.CreateResponse(scerr.ErrInvalidParams, "Consumer does not exist."),
 		}, nil
 	}
 	PactLogger.Infof("Consumer service found: (%s, %s, %s, %s)", consumer.ServiceId, consumer.AppId, consumer.ServiceName, consumer.Version)
@@ -613,7 +613,7 @@ func (*Service) PublishVerificationResults(ctx context.Context, in *brokerpb.Pub
 	if err != nil || consumerParticipant == nil {
 		PactLogger.Errorf(nil, "verification result publish request failed, consumer participant cannot be searched.", in.ConsumerId)
 		return &brokerpb.PublishVerificationResponse{
-			Response: pb.CreateResponse(scerr.ErrInvalidParams, "consumer participant cannot be searched."),
+			Response: proto.CreateResponse(scerr.ErrInvalidParams, "consumer participant cannot be searched."),
 		}, err
 	}
 	PactLogger.Infof("Consumer participant found: (%d, %s, %s)", consumerParticipant.Id, consumerParticipant.AppId, consumerParticipant.ServiceName)
@@ -622,7 +622,7 @@ func (*Service) PublishVerificationResults(ctx context.Context, in *brokerpb.Pub
 	if err != nil || version == nil {
 		PactLogger.Errorf(nil, "verification result publish request failed, version cannot be searched.")
 		return &brokerpb.PublishVerificationResponse{
-			Response: pb.CreateResponse(scerr.ErrInvalidParams, "version cannot be searched."),
+			Response: proto.CreateResponse(scerr.ErrInvalidParams, "version cannot be searched."),
 		}, err
 	}
 	PactLogger.Infof("Version found/created: (%d, %s, %d, %d)", version.Id, version.Number, version.ParticipantId, version.Order)
@@ -634,7 +634,7 @@ func (*Service) PublishVerificationResults(ctx context.Context, in *brokerpb.Pub
 	if err != nil || len(pacts.Kvs) == 0 {
 		PactLogger.Errorf(nil, "verification result publish request failed, pact cannot be searched.")
 		return &brokerpb.PublishVerificationResponse{
-			Response: pb.CreateResponse(scerr.ErrInvalidParams, "pact cannot be searched."),
+			Response: proto.CreateResponse(scerr.ErrInvalidParams, "pact cannot be searched."),
 		}, err
 	}
 	pactExists := false
@@ -644,7 +644,7 @@ func (*Service) PublishVerificationResults(ctx context.Context, in *brokerpb.Pub
 		if err != nil {
 			PactLogger.Errorf(nil, "verification result publish request failed, pact cannot be searched.")
 			return &brokerpb.PublishVerificationResponse{
-				Response: pb.CreateResponse(scerr.ErrInvalidParams, "pact cannot be searched."),
+				Response: proto.CreateResponse(scerr.ErrInvalidParams, "pact cannot be searched."),
 			}, err
 		}
 		if pact.Id == in.PactId {
@@ -654,14 +654,14 @@ func (*Service) PublishVerificationResults(ctx context.Context, in *brokerpb.Pub
 	if !pactExists {
 		PactLogger.Errorf(nil, "verification result publish request failed, pact does not exists.")
 		return &brokerpb.PublishVerificationResponse{
-			Response: pb.CreateResponse(scerr.ErrInvalidParams, "pact does not exists."),
+			Response: proto.CreateResponse(scerr.ErrInvalidParams, "pact does not exists."),
 		}, err
 	}
 	pactVersion, err := GetPactVersion(ctx, tenant, version.Id, in.PactId)
 	if err != nil || pactVersion == nil {
 		PactLogger.Errorf(nil, "verification result publish request failed, pact version cannot be searched.")
 		return &brokerpb.PublishVerificationResponse{
-			Response: pb.CreateResponse(scerr.ErrInvalidParams, "pact version cannot be searched."),
+			Response: proto.CreateResponse(scerr.ErrInvalidParams, "pact version cannot be searched."),
 		}, err
 	}
 	// Check if some verification results already exists
@@ -673,7 +673,7 @@ func (*Service) PublishVerificationResults(ctx context.Context, in *brokerpb.Pub
 	if err != nil {
 		PactLogger.Errorf(nil, "verification result publish request failed, verification result cannot be searched.")
 		return &brokerpb.PublishVerificationResponse{
-			Response: pb.CreateResponse(scerr.ErrInvalidParams, "verification result cannot be searched."),
+			Response: proto.CreateResponse(scerr.ErrInvalidParams, "verification result cannot be searched."),
 		}, err
 	}
 	lastNumber := int32(math.MinInt32)
@@ -684,7 +684,7 @@ func (*Service) PublishVerificationResults(ctx context.Context, in *brokerpb.Pub
 			if err != nil {
 				PactLogger.Errorf(nil, "verification result publish request failed, verification result unmarshall error.")
 				return &brokerpb.PublishVerificationResponse{
-					Response: pb.CreateResponse(scerr.ErrInvalidParams, "verification result unmarshall error."),
+					Response: proto.CreateResponse(scerr.ErrInvalidParams, "verification result unmarshall error."),
 				}, err
 			}
 			if verification.Number > lastNumber {
@@ -702,7 +702,7 @@ func (*Service) PublishVerificationResults(ctx context.Context, in *brokerpb.Pub
 	id, err := GetData(ctx, GetBrokerLatestVerificationIDKey())
 	if err != nil {
 		return &brokerpb.PublishVerificationResponse{
-			Response: pb.CreateResponse(scerr.ErrInternal, "get data error."),
+			Response: proto.CreateResponse(scerr.ErrInternal, "get data error."),
 		}, err
 	}
 	verification := &brokerpb.Verification{
@@ -729,7 +729,7 @@ func (*Service) PublishVerificationResults(ctx context.Context, in *brokerpb.Pub
 	}
 	PactLogger.Infof("Verification result published successfully ...")
 	return &brokerpb.PublishVerificationResponse{
-		Response:     pb.CreateResponse(pb.Response_SUCCESS, "Verification result published successfully."),
+		Response:     proto.CreateResponse(proto.Response_SUCCESS, "Verification result published successfully."),
 		Confirmation: verificationResponse,
 	}, nil
 }
@@ -738,7 +738,7 @@ func (*Service) PublishPact(ctx context.Context, in *brokerpb.PublishPactRequest
 	if InvalidInput(in) {
 		PactLogger.Errorf(nil, "pact publish request failed: invalid params.")
 		return &brokerpb.PublishPactResponse{
-			Response: pb.CreateResponse(scerr.ErrInvalidParams, "Request format invalid."),
+			Response: proto.CreateResponse(scerr.ErrInvalidParams, "Request format invalid."),
 		}, nil
 	}
 	tenant := GetDefaultTenantProject()
@@ -747,13 +747,13 @@ func (*Service) PublishPact(ctx context.Context, in *brokerpb.PublishPactRequest
 	if err != nil {
 		PactLogger.Errorf(err, "pact publish failed, providerId is %s: query provider failed.", in.ProviderId)
 		return &brokerpb.PublishPactResponse{
-			Response: pb.CreateResponse(scerr.ErrInvalidParams, "Query provider failed."),
+			Response: proto.CreateResponse(scerr.ErrInvalidParams, "Query provider failed."),
 		}, err
 	}
 	if provider == nil {
 		PactLogger.Errorf(nil, "pact publish failed, providerId is %s: provider not exist.", in.ProviderId)
 		return &brokerpb.PublishPactResponse{
-			Response: pb.CreateResponse(scerr.ErrInvalidParams, "Provider does not exist."),
+			Response: proto.CreateResponse(scerr.ErrInvalidParams, "Provider does not exist."),
 		}, nil
 	}
 	PactLogger.Infof("Provider service found: (%s, %s, %s, %s)", provider.ServiceId, provider.AppId, provider.ServiceName, provider.Version)
@@ -761,13 +761,13 @@ func (*Service) PublishPact(ctx context.Context, in *brokerpb.PublishPactRequest
 	if err != nil {
 		PactLogger.Errorf(err, "pact publish failed, consumerID is %s: query consumer failed.", in.ConsumerId)
 		return &brokerpb.PublishPactResponse{
-			Response: pb.CreateResponse(scerr.ErrInvalidParams, "Query consumer failed."),
+			Response: proto.CreateResponse(scerr.ErrInvalidParams, "Query consumer failed."),
 		}, err
 	}
 	if consumer == nil {
 		PactLogger.Errorf(nil, "pact publish failed, consumerID is %s: consumer not exist.", in.ConsumerId)
 		return &brokerpb.PublishPactResponse{
-			Response: pb.CreateResponse(scerr.ErrInvalidParams, "Consumer does not exist."),
+			Response: proto.CreateResponse(scerr.ErrInvalidParams, "Consumer does not exist."),
 		}, nil
 	}
 
@@ -776,7 +776,7 @@ func (*Service) PublishPact(ctx context.Context, in *brokerpb.PublishPactRequest
 		log.Errorf(nil,
 			"pact publish failed, version (%s) does not exist for consmer", in.Version)
 		return &brokerpb.PublishPactResponse{
-			Response: pb.CreateResponse(scerr.ErrInvalidParams, "Consumer Version does not exist."),
+			Response: proto.CreateResponse(scerr.ErrInvalidParams, "Consumer Version does not exist."),
 		}, nil
 	}
 
@@ -787,14 +787,14 @@ func (*Service) PublishPact(ctx context.Context, in *brokerpb.PublishPactRequest
 	if err != nil {
 		PactLogger.Errorf(nil, "pact publish failed, provider participant cannot be searched.", in.ProviderId)
 		return &brokerpb.PublishPactResponse{
-			Response: pb.CreateResponse(scerr.ErrInvalidParams, "Provider participant cannot be searched."),
+			Response: proto.CreateResponse(scerr.ErrInvalidParams, "Provider participant cannot be searched."),
 		}, err
 	}
 	if providerParticipant == nil {
 		id, err := GetData(ctx, GetBrokerLatestParticipantIDKey())
 		if err != nil {
 			return &brokerpb.PublishPactResponse{
-				Response: pb.CreateResponse(scerr.ErrInternal, "get data error."),
+				Response: proto.CreateResponse(scerr.ErrInternal, "get data error."),
 			}, err
 		}
 		providerParticipant = &brokerpb.Participant{Id: int32(id) + 1, AppId: provider.AppId, ServiceName: provider.ServiceName}
@@ -810,14 +810,14 @@ func (*Service) PublishPact(ctx context.Context, in *brokerpb.PublishPactRequest
 	if err != nil {
 		PactLogger.Errorf(nil, "pact publish failed, consumer participant cannot be searched.", in.ConsumerId)
 		return &brokerpb.PublishPactResponse{
-			Response: pb.CreateResponse(scerr.ErrInvalidParams, "consumer participant cannot be searched."),
+			Response: proto.CreateResponse(scerr.ErrInvalidParams, "consumer participant cannot be searched."),
 		}, err
 	}
 	if consumerParticipant == nil {
 		id, err := GetData(ctx, GetBrokerLatestParticipantIDKey())
 		if err != nil {
 			return &brokerpb.PublishPactResponse{
-				Response: pb.CreateResponse(scerr.ErrInternal, "get data error."),
+				Response: proto.CreateResponse(scerr.ErrInternal, "get data error."),
 			}, err
 		}
 		consumerParticipant = &brokerpb.Participant{Id: int32(id) + 1, AppId: consumer.AppId, ServiceName: consumer.ServiceName}
@@ -833,7 +833,7 @@ func (*Service) PublishPact(ctx context.Context, in *brokerpb.PublishPactRequest
 	if err != nil {
 		PactLogger.Errorf(nil, "pact publish failed, version cannot be searched.")
 		return &brokerpb.PublishPactResponse{
-			Response: pb.CreateResponse(scerr.ErrInvalidParams, "version cannot be searched."),
+			Response: proto.CreateResponse(scerr.ErrInvalidParams, "version cannot be searched."),
 		}, err
 	}
 	if version == nil {
@@ -843,7 +843,7 @@ func (*Service) PublishPact(ctx context.Context, in *brokerpb.PublishPactRequest
 		id, err := GetData(ctx, GetBrokerLatestVersionIDKey())
 		if err != nil {
 			return &brokerpb.PublishPactResponse{
-				Response: pb.CreateResponse(scerr.ErrInternal, "get data error."),
+				Response: proto.CreateResponse(scerr.ErrInternal, "get data error."),
 			}, err
 		}
 		version = &brokerpb.Version{Id: int32(id) + 1, Number: in.Version, ParticipantId: consumerParticipant.Id, Order: order}
@@ -861,14 +861,14 @@ func (*Service) PublishPact(ctx context.Context, in *brokerpb.PublishPactRequest
 	if err != nil {
 		PactLogger.Errorf(nil, "pact publish failed, pact cannot be searched.")
 		return &brokerpb.PublishPactResponse{
-			Response: pb.CreateResponse(scerr.ErrInvalidParams, "pact cannot be searched."),
+			Response: proto.CreateResponse(scerr.ErrInvalidParams, "pact cannot be searched."),
 		}, err
 	}
 	if pact == nil {
 		id, err := GetData(ctx, GetBrokerLatestPactIDKey())
 		if err != nil {
 			return &brokerpb.PublishPactResponse{
-				Response: pb.CreateResponse(scerr.ErrInternal, "get data error."),
+				Response: proto.CreateResponse(scerr.ErrInternal, "get data error."),
 			}, err
 		}
 		pact = &brokerpb.Pact{Id: int32(id) + 1, ConsumerParticipantId: consumerParticipant.Id,
@@ -885,14 +885,14 @@ func (*Service) PublishPact(ctx context.Context, in *brokerpb.PublishPactRequest
 	if err != nil {
 		PactLogger.Errorf(nil, "pact publish failed, pact version cannot be searched.")
 		return &brokerpb.PublishPactResponse{
-			Response: pb.CreateResponse(scerr.ErrInvalidParams, "pact version cannot be searched."),
+			Response: proto.CreateResponse(scerr.ErrInvalidParams, "pact version cannot be searched."),
 		}, err
 	}
 	if pactVersion == nil {
 		id, err := GetData(ctx, GetBrokerLatestPactVersionIDKey())
 		if err != nil {
 			return &brokerpb.PublishPactResponse{
-				Response: pb.CreateResponse(scerr.ErrInternal, "get data error."),
+				Response: proto.CreateResponse(scerr.ErrInternal, "get data error."),
 			}, err
 		}
 		pactVersion = &brokerpb.PactVersion{Id: int32(id) + 1, VersionId: version.Id, PactId: pact.Id, ProviderParticipantId: providerParticipant.Id}
@@ -904,7 +904,7 @@ func (*Service) PublishPact(ctx context.Context, in *brokerpb.PublishPactRequest
 	PactLogger.Infof("PactVersion found/create: (%d, %d, %d, %d)", pactVersion.Id, pactVersion.VersionId, pactVersion.PactId, pactVersion.ProviderParticipantId)
 	PactLogger.Infof("Pact published successfully ...")
 	return &brokerpb.PublishPactResponse{
-		Response: pb.CreateResponse(pb.Response_SUCCESS, "Pact published successfully."),
+		Response: proto.CreateResponse(proto.Response_SUCCESS, "Pact published successfully."),
 	}, nil
 }
 
diff --git a/server/broker/service_test.go b/server/broker/service_test.go
index b8d90a8..63c79d4 100644
--- a/server/broker/service_test.go
+++ b/server/broker/service_test.go
@@ -18,13 +18,14 @@ package broker_test
 
 import (
 	"fmt"
+	"github.com/apache/servicecomb-service-center/server/core/proto"
 
 	"context"
+	pb "github.com/apache/servicecomb-service-center/pkg/registry"
 	"github.com/apache/servicecomb-service-center/pkg/util"
 	"github.com/apache/servicecomb-service-center/server/broker"
 	"github.com/apache/servicecomb-service-center/server/broker/brokerpb"
 	"github.com/apache/servicecomb-service-center/server/core"
-	pb "github.com/apache/servicecomb-service-center/server/core/proto"
 	. "github.com/onsi/ginkgo"
 	. "github.com/onsi/gomega"
 )
@@ -67,7 +68,7 @@ var _ = Describe("Controller", func() {
 
 				Expect(err).To(BeNil())
 				consumerServiceId = resp.ServiceId
-				Expect(resp.Response.Code).To(Equal(pb.Response_SUCCESS))
+				Expect(resp.Response.GetCode()).To(Equal(proto.Response_SUCCESS))
 
 				//(2) create provider service
 				resp, err = core.ServiceAPI.Create(getContext(), &pb.CreateServiceRequest{
@@ -85,7 +86,7 @@ var _ = Describe("Controller", func() {
 				})
 				Expect(err).To(BeNil())
 				providerServiceId = resp.ServiceId
-				Expect(resp.Response.Code).To(Equal(pb.Response_SUCCESS))
+				Expect(resp.Response.GetCode()).To(Equal(proto.Response_SUCCESS))
 
 				//(3) publish a pact between two services
 				respPublishPact, err := brokerResource.PublishPact(getContext(),
@@ -97,7 +98,7 @@ var _ = Describe("Controller", func() {
 					})
 
 				Expect(err).To(BeNil())
-				Expect(respPublishPact.Response.Code).To(Equal(pb.Response_SUCCESS))
+				Expect(respPublishPact.Response.GetCode()).To(Equal(proto.Response_SUCCESS))
 			})
 
 			It("PublishPact-noProviderServiceId", func() {
@@ -111,7 +112,7 @@ var _ = Describe("Controller", func() {
 					Pact:       []byte("hello"),
 				})
 
-				Expect(respPublishPact.Response.Code).ToNot(Equal(pb.Response_SUCCESS))
+				Expect(respPublishPact.Response.GetCode()).ToNot(Equal(proto.Response_SUCCESS))
 			})
 
 			It("PublishPact-noConumerServiceId", func() {
@@ -125,7 +126,7 @@ var _ = Describe("Controller", func() {
 					Pact:       []byte("hello"),
 				})
 
-				Expect(respPublishPact.Response.Code).ToNot(Equal(pb.Response_SUCCESS))
+				Expect(respPublishPact.Response.GetCode()).ToNot(Equal(proto.Response_SUCCESS))
 			})
 
 			It("PublishPact-noConumerVersion", func() {
@@ -139,7 +140,7 @@ var _ = Describe("Controller", func() {
 					Pact:       []byte("hello"),
 				})
 
-				Expect(respPublishPact.Response.Code).ToNot(Equal(pb.Response_SUCCESS))
+				Expect(respPublishPact.Response.GetCode()).ToNot(Equal(proto.Response_SUCCESS))
 			})
 
 			It("GetBrokerHome", func() {
@@ -166,7 +167,7 @@ var _ = Describe("Controller", func() {
 						}})
 
 				Expect(respGetAllProviderPacts).NotTo(BeNil())
-				Expect(respGetAllProviderPacts.Response.Code).To(Equal(pb.Response_SUCCESS))
+				Expect(respGetAllProviderPacts.Response.GetCode()).To(Equal(proto.Response_SUCCESS))
 			})
 
 			It("GetBrokerPactsOfProvider", func() {
@@ -183,7 +184,7 @@ var _ = Describe("Controller", func() {
 						}})
 
 				Expect(respGetAllProviderPacts).NotTo(BeNil())
-				Expect(respGetAllProviderPacts.Response.Code).To(Equal(pb.Response_SUCCESS))
+				Expect(respGetAllProviderPacts.Response.GetCode()).To(Equal(proto.Response_SUCCESS))
 			})
 
 			It("PublishVerificationResults", func() {
@@ -200,7 +201,7 @@ var _ = Describe("Controller", func() {
 					})
 
 				Expect(respResults).NotTo(BeNil())
-				Expect(respResults.Response.Code).To(Equal(pb.Response_SUCCESS))
+				Expect(respResults.Response.GetCode()).To(Equal(proto.Response_SUCCESS))
 			})
 
 			It("RetrieveVerificationResults", func() {
@@ -213,7 +214,7 @@ var _ = Describe("Controller", func() {
 					})
 
 				Expect(respVerification).NotTo(BeNil())
-				Expect(respVerification.Response.Code).To(Equal(pb.Response_SUCCESS))
+				Expect(respVerification.Response.GetCode()).To(Equal(proto.Response_SUCCESS))
 			})
 
 			It("RetrieveProviderPacts", func() {
@@ -229,7 +230,7 @@ var _ = Describe("Controller", func() {
 					})
 
 				Expect(respProviderPact).NotTo(BeNil())
-				Expect(respProviderPact.Response.Code).To(Equal(pb.Response_SUCCESS))
+				Expect(respProviderPact.Response.GetCode()).To(Equal(proto.Response_SUCCESS))
 			})
 		})
 	})
diff --git a/server/broker/util.go b/server/broker/util.go
index deaa0eb..000971a 100644
--- a/server/broker/util.go
+++ b/server/broker/util.go
@@ -20,6 +20,7 @@ package broker
 import (
 	"context"
 	"encoding/json"
+	"github.com/apache/servicecomb-service-center/server/core/proto"
 	"github.com/apache/servicecomb-service-center/server/service/kv"
 	"math"
 	"net/url"
@@ -27,11 +28,11 @@ import (
 	"strings"
 
 	"github.com/apache/servicecomb-service-center/pkg/log"
+	pb "github.com/apache/servicecomb-service-center/pkg/registry"
 	"github.com/apache/servicecomb-service-center/pkg/util"
 	"github.com/apache/servicecomb-service-center/server/broker/brokerpb"
 	"github.com/apache/servicecomb-service-center/server/core"
 	"github.com/apache/servicecomb-service-center/server/core/backend"
-	pb "github.com/apache/servicecomb-service-center/server/core/proto"
 	"github.com/apache/servicecomb-service-center/server/plugin/registry"
 	scerr "github.com/apache/servicecomb-service-center/server/scerror"
 	serviceUtil "github.com/apache/servicecomb-service-center/server/service/util"
@@ -146,7 +147,7 @@ func CreateBrokerHomeResponse(host string, scheme string) *brokerpb.BrokerHomeRe
 	})
 
 	return &brokerpb.BrokerHomeResponse{
-		Response: pb.CreateResponse(pb.Response_SUCCESS, "Broker Home."),
+		Response: proto.CreateResponse(proto.Response_SUCCESS, "Broker Home."),
 		XLinks:   apiEntries,
 		Curies:   curies,
 	}
@@ -257,7 +258,7 @@ func CreateParticipant(ctx context.Context, participantKey string, participant b
 	if err != nil {
 		PactLogger.Errorf(nil, "pact publish failed, participant cannot be created.")
 		return &brokerpb.PublishPactResponse{
-			Response: pb.CreateResponse(scerr.ErrInternal, "participant cannot be created."),
+			Response: proto.CreateResponse(scerr.ErrInternal, "participant cannot be created."),
 		}, err
 	}
 
@@ -268,7 +269,7 @@ func CreateParticipant(ctx context.Context, participantKey string, participant b
 	if err != nil {
 		PactLogger.Errorf(nil, "pact publish failed, participant cannot be created.")
 		return &brokerpb.PublishPactResponse{
-			Response: pb.CreateResponse(scerr.ErrInternal, "participant cannot be created."),
+			Response: proto.CreateResponse(scerr.ErrInternal, "participant cannot be created."),
 		}, err
 	}
 
@@ -279,7 +280,7 @@ func CreateParticipant(ctx context.Context, participantKey string, participant b
 	if err != nil {
 		PactLogger.Errorf(nil, "pact publish failed, participant cannot be created.")
 		return &brokerpb.PublishPactResponse{
-			Response: pb.CreateResponse(scerr.ErrInternal, "participant cannot be created."),
+			Response: proto.CreateResponse(scerr.ErrInternal, "participant cannot be created."),
 		}, err
 	}
 	PactLogger.Infof("Participant created for key: %s", participantKey)
@@ -292,7 +293,7 @@ func CreateVersion(ctx context.Context, versionKey string,
 	if err != nil {
 		PactLogger.Errorf(nil, "pact publish failed, version cannot be created.")
 		return &brokerpb.PublishPactResponse{
-			Response: pb.CreateResponse(scerr.ErrInternal, "version cannot be created."),
+			Response: proto.CreateResponse(scerr.ErrInternal, "version cannot be created."),
 		}, err
 	}
 
@@ -302,7 +303,7 @@ func CreateVersion(ctx context.Context, versionKey string,
 	if err != nil {
 		PactLogger.Errorf(nil, "pact publish failed, version cannot be created.")
 		return &brokerpb.PublishPactResponse{
-			Response: pb.CreateResponse(scerr.ErrInternal, "version cannot be created."),
+			Response: proto.CreateResponse(scerr.ErrInternal, "version cannot be created."),
 		}, err
 	}
 	k := GetBrokerLatestVersionIDKey()
@@ -312,7 +313,7 @@ func CreateVersion(ctx context.Context, versionKey string,
 	if err != nil {
 		PactLogger.Errorf(nil, "pact publish failed, version cannot be created.")
 		return &brokerpb.PublishPactResponse{
-			Response: pb.CreateResponse(scerr.ErrInternal, "version cannot be created."),
+			Response: proto.CreateResponse(scerr.ErrInternal, "version cannot be created."),
 		}, err
 	}
 	PactLogger.Infof("Version created for key: %s", versionKey)
@@ -325,7 +326,7 @@ func CreatePact(ctx context.Context,
 	if err != nil {
 		PactLogger.Errorf(nil, "pact publish failed, pact cannot be created.")
 		return &brokerpb.PublishPactResponse{
-			Response: pb.CreateResponse(scerr.ErrInternal, "pact cannot be created."),
+			Response: proto.CreateResponse(scerr.ErrInternal, "pact cannot be created."),
 		}, err
 	}
 
@@ -337,7 +338,7 @@ func CreatePact(ctx context.Context,
 	if err != nil {
 		PactLogger.Errorf(nil, "pact publish failed, pact cannot be created.")
 		return &brokerpb.PublishPactResponse{
-			Response: pb.CreateResponse(scerr.ErrInternal, "pact cannot be created."),
+			Response: proto.CreateResponse(scerr.ErrInternal, "pact cannot be created."),
 		}, err
 	}
 	k := GetBrokerLatestPactIDKey()
@@ -347,7 +348,7 @@ func CreatePact(ctx context.Context,
 	if err != nil {
 		PactLogger.Errorf(nil, "pact publish failed, pact cannot be created.")
 		return &brokerpb.PublishPactResponse{
-			Response: pb.CreateResponse(scerr.ErrInternal, "pact cannot be created."),
+			Response: proto.CreateResponse(scerr.ErrInternal, "pact cannot be created."),
 		}, err
 	}
 	PactLogger.Infof("Pact created for key: %s", pactKey)
@@ -359,7 +360,7 @@ func CreatePactVersion(ctx context.Context, pactVersionKey string, pactVersion b
 	if err != nil {
 		PactLogger.Errorf(nil, "pact publish failed, pact version cannot be created.")
 		return &brokerpb.PublishPactResponse{
-			Response: pb.CreateResponse(scerr.ErrInternal, "pact version cannot be created."),
+			Response: proto.CreateResponse(scerr.ErrInternal, "pact version cannot be created."),
 		}, err
 	}
 
@@ -368,7 +369,7 @@ func CreatePactVersion(ctx context.Context, pactVersionKey string, pactVersion b
 	if err != nil {
 		PactLogger.Errorf(nil, "pact publish failed, pact version cannot be created.")
 		return &brokerpb.PublishPactResponse{
-			Response: pb.CreateResponse(scerr.ErrInternal, "pact version cannot be created."),
+			Response: proto.CreateResponse(scerr.ErrInternal, "pact version cannot be created."),
 		}, err
 	}
 	k := GetBrokerLatestPactVersionIDKey()
@@ -378,7 +379,7 @@ func CreatePactVersion(ctx context.Context, pactVersionKey string, pactVersion b
 	if err != nil {
 		PactLogger.Errorf(nil, "pact publish failed, pact version cannot be created.")
 		return &brokerpb.PublishPactResponse{
-			Response: pb.CreateResponse(scerr.ErrInternal, "pact version cannot be created."),
+			Response: proto.CreateResponse(scerr.ErrInternal, "pact version cannot be created."),
 		}, err
 	}
 	PactLogger.Infof("Pact version created for key: %s", pactVersionKey)
@@ -391,7 +392,7 @@ func CreateVerification(ctx context.Context,
 	if err != nil {
 		PactLogger.Errorf(nil, "verification result publish failed, verification result marshal error.")
 		return &brokerpb.PublishVerificationResponse{
-			Response: pb.CreateResponse(scerr.ErrInternal, "verification result marshal error."),
+			Response: proto.CreateResponse(scerr.ErrInternal, "verification result marshal error."),
 		}, err
 	}
 
@@ -401,7 +402,7 @@ func CreateVerification(ctx context.Context,
 	if err != nil {
 		PactLogger.Errorf(nil, "verification result publish failed, verification result cannot be created.")
 		return &brokerpb.PublishVerificationResponse{
-			Response: pb.CreateResponse(scerr.ErrInternal, "verification result cannot be created."),
+			Response: proto.CreateResponse(scerr.ErrInternal, "verification result cannot be created."),
 		}, err
 	}
 	k := GetBrokerLatestVerificationIDKey()
@@ -411,7 +412,7 @@ func CreateVerification(ctx context.Context,
 	if err != nil {
 		PactLogger.Errorf(nil, "verification result publish failed, verification result cannot be created.")
 		return &brokerpb.PublishVerificationResponse{
-			Response: pb.CreateResponse(scerr.ErrInternal, "verification result cannot be created."),
+			Response: proto.CreateResponse(scerr.ErrInternal, "verification result cannot be created."),
 		}, err
 	}
 	PactLogger.Infof("Verification result created for key: %s", verificationKey)
@@ -451,7 +452,7 @@ func RetrieveProviderConsumerPact(ctx context.Context,
 	if in == nil || len(in.ProviderId) == 0 || len(in.ConsumerId) == 0 || len(in.Version) == 0 {
 		PactLogger.Errorf(nil, "pact retrieve request failed: invalid params.")
 		return &brokerpb.GetProviderConsumerVersionPactResponse{
-			Response: pb.CreateResponse(scerr.ErrInternal, "Request format invalid."),
+			Response: proto.CreateResponse(scerr.ErrInternal, "Request format invalid."),
 		}, -1, nil
 	}
 	tenant := GetDefaultTenantProject()
@@ -460,13 +461,13 @@ func RetrieveProviderConsumerPact(ctx context.Context,
 	if err != nil {
 		PactLogger.Errorf(err, "pact retrieve failed, providerId is %s: query provider failed.", in.ProviderId)
 		return &brokerpb.GetProviderConsumerVersionPactResponse{
-			Response: pb.CreateResponse(scerr.ErrInternal, "Query provider failed."),
+			Response: proto.CreateResponse(scerr.ErrInternal, "Query provider failed."),
 		}, -1, err
 	}
 	if provider == nil {
 		PactLogger.Errorf(nil, "pact retrieve failed, providerId is %s: provider not exist.", in.ProviderId)
 		return &brokerpb.GetProviderConsumerVersionPactResponse{
-			Response: pb.CreateResponse(scerr.ErrInternal, "Provider does not exist."),
+			Response: proto.CreateResponse(scerr.ErrInternal, "Provider does not exist."),
 		}, -1, nil
 	}
 	// Get consumer microservice
@@ -474,13 +475,13 @@ func RetrieveProviderConsumerPact(ctx context.Context,
 	if err != nil {
 		PactLogger.Errorf(err, "pact retrieve failed, consumerId is %s: query consumer failed.", in.ConsumerId)
 		return &brokerpb.GetProviderConsumerVersionPactResponse{
-			Response: pb.CreateResponse(scerr.ErrInternal, "Query consumer failed."),
+			Response: proto.CreateResponse(scerr.ErrInternal, "Query consumer failed."),
 		}, -1, err
 	}
 	if consumer == nil {
 		PactLogger.Errorf(nil, "pact retrieve failed, consumerId is %s: consumer not exist.", in.ConsumerId)
 		return &brokerpb.GetProviderConsumerVersionPactResponse{
-			Response: pb.CreateResponse(scerr.ErrInternal, "Consumer does not exist."),
+			Response: proto.CreateResponse(scerr.ErrInternal, "Consumer does not exist."),
 		}, -1, nil
 	}
 	// Get provider participant
@@ -489,7 +490,7 @@ func RetrieveProviderConsumerPact(ctx context.Context,
 	if err != nil || providerParticipant == nil {
 		PactLogger.Errorf(nil, "pact retrieve failed, provider participant %s cannot be searched.", in.ProviderId)
 		return &brokerpb.GetProviderConsumerVersionPactResponse{
-			Response: pb.CreateResponse(scerr.ErrInternal, "Provider participant cannot be searched."),
+			Response: proto.CreateResponse(scerr.ErrInternal, "Provider participant cannot be searched."),
 		}, -1, err
 	}
 	// Get consumer participant
@@ -498,7 +499,7 @@ func RetrieveProviderConsumerPact(ctx context.Context,
 	if err != nil || consumerParticipant == nil {
 		PactLogger.Errorf(nil, "pact retrieve failed, consumer participant %s cannot be searched.", in.ConsumerId)
 		return &brokerpb.GetProviderConsumerVersionPactResponse{
-			Response: pb.CreateResponse(scerr.ErrInternal, "consumer participant cannot be searched."),
+			Response: proto.CreateResponse(scerr.ErrInternal, "consumer participant cannot be searched."),
 		}, -1, err
 	}
 	// Get or create version
@@ -507,7 +508,7 @@ func RetrieveProviderConsumerPact(ctx context.Context,
 	if err != nil || version == nil {
 		PactLogger.Errorf(nil, "pact retrieve failed, version cannot be searched.")
 		return &brokerpb.GetProviderConsumerVersionPactResponse{
-			Response: pb.CreateResponse(scerr.ErrInternal, "version cannot be searched."),
+			Response: proto.CreateResponse(scerr.ErrInternal, "version cannot be searched."),
 		}, -1, err
 	}
 	// Get all pactversions and filter using the provider participant id
@@ -542,7 +543,7 @@ func RetrieveProviderConsumerPact(ctx context.Context,
 	if len(pactIDs) == 0 {
 		PactLogger.Errorf(nil, "pact retrieve failed, pact cannot be found.")
 		return &brokerpb.GetProviderConsumerVersionPactResponse{
-			Response: pb.CreateResponse(scerr.ErrInternal, "pact cannot be found."),
+			Response: proto.CreateResponse(scerr.ErrInternal, "pact cannot be found."),
 		}, -1, err
 	}
 	pactKey := util.StringJoin([]string{
@@ -570,14 +571,14 @@ func RetrieveProviderConsumerPact(ctx context.Context,
 		if _, ok := pactIDs[pactObj.Id]; ok {
 			//PactLogger.Infof("pact retrieve succeeded, found pact: %s", string(pactObj.Content))
 			return &brokerpb.GetProviderConsumerVersionPactResponse{
-				Response: pb.CreateResponse(pb.Response_SUCCESS, "pact found."),
+				Response: proto.CreateResponse(proto.Response_SUCCESS, "pact found."),
 				Pact:     pactObj.Content,
 			}, pactObj.Id, nil
 		}
 	}
 	PactLogger.Errorf(nil, "pact retrieve failed, pact cannot be found.")
 	return &brokerpb.GetProviderConsumerVersionPactResponse{
-		Response: pb.CreateResponse(scerr.ErrInternal, "pact cannot be found."),
+		Response: proto.CreateResponse(scerr.ErrInternal, "pact cannot be found."),
 	}, -1, nil
 }
 
@@ -589,7 +590,7 @@ func DeletePactData(ctx context.Context,
 	_, err := backend.Registry().Do(ctx,
 		registry.DEL, registry.WithStrKey(allPactKey), registry.WithPrefix())
 	if err != nil {
-		return pb.CreateResponse(scerr.ErrInternal, "error deleting pacts."), err
+		return proto.CreateResponse(scerr.ErrInternal, "error deleting pacts."), err
 	}
-	return pb.CreateResponse(pb.Response_SUCCESS, "deleting pacts Succeed."), nil
+	return proto.CreateResponse(proto.Response_SUCCESS, "deleting pacts Succeed."), nil
 }
diff --git a/server/core/backend/common.go b/server/core/backend/common.go
index 15a1bb2..e508819 100644
--- a/server/core/backend/common.go
+++ b/server/core/backend/common.go
@@ -17,7 +17,7 @@ package backend
 
 import (
 	"github.com/apache/servicecomb-service-center/server/core"
-	pb "github.com/apache/servicecomb-service-center/server/core/proto"
+	"github.com/apache/servicecomb-service-center/server/core/proto"
 	"github.com/apache/servicecomb-service-center/server/plugin/discovery"
 	"time"
 )
@@ -51,45 +51,45 @@ var (
 func registerInnerTypes() {
 	SERVICE = Store().MustInstall(NewAddOn("SERVICE",
 		discovery.Configure().WithPrefix(core.GetServiceRootKey("")).
-			WithInitSize(500).WithParser(pb.ServiceParser)))
+			WithInitSize(500).WithParser(proto.ServiceParser)))
 	INSTANCE = Store().MustInstall(NewAddOn("INSTANCE",
 		discovery.Configure().WithPrefix(core.GetInstanceRootKey("")).
-			WithInitSize(1000).WithParser(pb.InstanceParser).
+			WithInitSize(1000).WithParser(proto.InstanceParser).
 			WithDeferHandler(NewInstanceEventDeferHandler())))
 	DOMAIN = Store().MustInstall(NewAddOn("DOMAIN",
 		discovery.Configure().WithPrefix(core.GetDomainRootKey()+core.SPLIT).
-			WithInitSize(100).WithParser(pb.StringParser)))
+			WithInitSize(100).WithParser(proto.StringParser)))
 	SCHEMA = Store().MustInstall(NewAddOn("SCHEMA",
 		discovery.Configure().WithPrefix(core.GetServiceSchemaRootKey("")).
 			WithInitSize(0)))
 	SchemaSummary = Store().MustInstall(NewAddOn("SCHEMA_SUMMARY",
 		discovery.Configure().WithPrefix(core.GetServiceSchemaSummaryRootKey("")).
-			WithInitSize(100).WithParser(pb.StringParser)))
+			WithInitSize(100).WithParser(proto.StringParser)))
 	RULE = Store().MustInstall(NewAddOn("RULE",
 		discovery.Configure().WithPrefix(core.GetServiceRuleRootKey("")).
-			WithInitSize(100).WithParser(pb.RuleParser)))
+			WithInitSize(100).WithParser(proto.RuleParser)))
 	LEASE = Store().MustInstall(NewAddOn("LEASE",
 		discovery.Configure().WithPrefix(core.GetInstanceLeaseRootKey("")).
-			WithInitSize(1000).WithParser(pb.StringParser)))
+			WithInitSize(1000).WithParser(proto.StringParser)))
 	ServiceIndex = Store().MustInstall(NewAddOn("SERVICE_INDEX",
 		discovery.Configure().WithPrefix(core.GetServiceIndexRootKey("")).
-			WithInitSize(500).WithParser(pb.StringParser)))
+			WithInitSize(500).WithParser(proto.StringParser)))
 	ServiceAlias = Store().MustInstall(NewAddOn("SERVICE_ALIAS",
 		discovery.Configure().WithPrefix(core.GetServiceAliasRootKey("")).
-			WithInitSize(100).WithParser(pb.StringParser)))
+			WithInitSize(100).WithParser(proto.StringParser)))
 	ServiceTag = Store().MustInstall(NewAddOn("SERVICE_TAG",
 		discovery.Configure().WithPrefix(core.GetServiceTagRootKey("")).
-			WithInitSize(100).WithParser(pb.MapParser)))
+			WithInitSize(100).WithParser(proto.MapParser)))
 	RuleIndex = Store().MustInstall(NewAddOn("RULE_INDEX",
 		discovery.Configure().WithPrefix(core.GetServiceRuleIndexRootKey("")).
-			WithInitSize(100).WithParser(pb.StringParser)))
+			WithInitSize(100).WithParser(proto.StringParser)))
 	DependencyRule = Store().MustInstall(NewAddOn("DEPENDENCY_RULE",
 		discovery.Configure().WithPrefix(core.GetServiceDependencyRuleRootKey("")).
-			WithInitSize(100).WithParser(pb.DependencyRuleParser)))
+			WithInitSize(100).WithParser(proto.DependencyRuleParser)))
 	DependencyQueue = Store().MustInstall(NewAddOn("DEPENDENCY_QUEUE",
 		discovery.Configure().WithPrefix(core.GetServiceDependencyQueueRootKey("")).
-			WithInitSize(100).WithParser(pb.DependencyQueueParser)))
+			WithInitSize(100).WithParser(proto.DependencyQueueParser)))
 	PROJECT = Store().MustInstall(NewAddOn("PROJECT",
 		discovery.Configure().WithPrefix(core.GetProjectRootKey("")).
-			WithInitSize(100).WithParser(pb.StringParser)))
+			WithInitSize(100).WithParser(proto.StringParser)))
 }
diff --git a/server/core/backend/defer_instance.go b/server/core/backend/defer_instance.go
index 9149f42..ffd801d 100644
--- a/server/core/backend/defer_instance.go
+++ b/server/core/backend/defer_instance.go
@@ -21,8 +21,8 @@ import (
 	"context"
 	"github.com/apache/servicecomb-service-center/pkg/gopool"
 	"github.com/apache/servicecomb-service-center/pkg/log"
+	"github.com/apache/servicecomb-service-center/pkg/registry"
 	"github.com/apache/servicecomb-service-center/pkg/util"
-	pb "github.com/apache/servicecomb-service-center/server/core/proto"
 	"github.com/apache/servicecomb-service-center/server/plugin/discovery"
 	"sync"
 	"time"
@@ -72,18 +72,18 @@ func (iedh *InstanceEventDeferHandler) recoverOrDefer(evt discovery.KvEvent) {
 	key := util.BytesToStringWithNoCopy(kv.Key)
 	_, ok := iedh.items[key]
 	switch evt.Type {
-	case pb.EVT_CREATE, pb.EVT_UPDATE:
+	case registry.EVT_CREATE, registry.EVT_UPDATE:
 		if ok {
 			log.Infof("recovered key %s events", key)
 			// return nil // no need to publish event to subscribers?
 		}
 		iedh.recover(evt)
-	case pb.EVT_DELETE:
+	case registry.EVT_DELETE:
 		if ok {
 			return
 		}
 
-		instance := kv.Value.(*pb.MicroServiceInstance)
+		instance := kv.Value.(*registry.MicroServiceInstance)
 		if instance == nil {
 			log.Errorf(nil, "defer or recover a %s nil Value, KV is %v", evt.Type, kv)
 			return
diff --git a/server/core/backend/defer_test.go b/server/core/backend/defer_test.go
index 66815b5..fbefa28 100644
--- a/server/core/backend/defer_test.go
+++ b/server/core/backend/defer_test.go
@@ -18,8 +18,8 @@ package backend
 
 import (
 	"fmt"
+	pb "github.com/apache/servicecomb-service-center/pkg/registry"
 	"github.com/apache/servicecomb-service-center/pkg/util"
-	pb "github.com/apache/servicecomb-service-center/server/core/proto"
 	"github.com/apache/servicecomb-service-center/server/plugin/discovery"
 	"testing"
 	"time"
diff --git a/server/core/backend/registry.go b/server/core/backend/registry.go
index f4e98d0..31a0789 100644
--- a/server/core/backend/registry.go
+++ b/server/core/backend/registry.go
@@ -25,7 +25,7 @@ import (
 	"github.com/apache/servicecomb-service-center/pkg/gopool"
 	"github.com/apache/servicecomb-service-center/pkg/log"
 	"github.com/apache/servicecomb-service-center/server/core"
-	pb "github.com/apache/servicecomb-service-center/server/core/proto"
+	"github.com/apache/servicecomb-service-center/server/core/proto"
 	"github.com/apache/servicecomb-service-center/server/plugin"
 	"github.com/apache/servicecomb-service-center/server/plugin/registry"
 	"sync"
@@ -154,10 +154,10 @@ func (s *RegistryEngine) registryService(pCtx context.Context) error {
 		log.Error("query service center existence failed", err)
 		return err
 	}
-	if respE.Response.Code == pb.Response_SUCCESS {
+	if respE.Response.GetCode() == proto.Response_SUCCESS {
 		log.Warnf("service center service[%s] already registered", respE.ServiceId)
 		respG, err := core.ServiceAPI.GetOne(ctx, core.GetServiceRequest(respE.ServiceId))
-		if respG.Response.Code != pb.Response_SUCCESS {
+		if respG.Response.GetCode() != proto.Response_SUCCESS {
 			log.Errorf(err, "query service center service[%s] info failed", respE.ServiceId)
 			return fmt.Errorf("service center service file lost")
 		}
@@ -186,9 +186,9 @@ func (s *RegistryEngine) registryInstance(pCtx context.Context) error {
 		log.Error("register failed", err)
 		return err
 	}
-	if respI.Response.Code != pb.Response_SUCCESS {
+	if respI.Response.GetCode() != proto.Response_SUCCESS {
 		err = fmt.Errorf("register service center[%s] instance failed, %s",
-			core.Instance.ServiceId, respI.Response.Message)
+			core.Instance.ServiceId, respI.Response.GetMessage())
 		log.Error(err.Error(), nil)
 		return err
 	}
@@ -208,9 +208,9 @@ func (s *RegistryEngine) unregisterInstance(pCtx context.Context) error {
 		log.Error("unregister failed", err)
 		return err
 	}
-	if respI.Response.Code != pb.Response_SUCCESS {
+	if respI.Response.GetCode() != proto.Response_SUCCESS {
 		err = fmt.Errorf("unregister service center instance[%s/%s] failed, %s",
-			core.Instance.ServiceId, core.Instance.InstanceId, respI.Response.Message)
+			core.Instance.ServiceId, core.Instance.InstanceId, respI.Response.GetMessage())
 		log.Error(err.Error(), nil)
 		return err
 	}
@@ -226,7 +226,7 @@ func (s *RegistryEngine) sendHeartBeat(pCtx context.Context) {
 		log.Error("sen heartbeat failed", err)
 		return
 	}
-	if respI.Response.Code == pb.Response_SUCCESS {
+	if respI.Response.GetCode() == proto.Response_SUCCESS {
 		log.Debugf("update service center instance[%s/%s] heartbeat",
 			core.Instance.ServiceId, core.Instance.InstanceId)
 		return
diff --git a/server/core/config.go b/server/core/config.go
index 2cb98f1..89d569c 100644
--- a/server/core/config.go
+++ b/server/core/config.go
@@ -18,6 +18,7 @@
 package core
 
 import (
+	"github.com/apache/servicecomb-service-center/server/core/proto"
 	"github.com/go-chassis/go-archaius"
 	"os"
 	"runtime"
@@ -26,7 +27,6 @@ import (
 	"github.com/apache/servicecomb-service-center/pkg/log"
 	"github.com/apache/servicecomb-service-center/pkg/plugin"
 	"github.com/apache/servicecomb-service-center/pkg/util"
-	pb "github.com/apache/servicecomb-service-center/server/core/proto"
 	"github.com/apache/servicecomb-service-center/version"
 	"github.com/astaxie/beego"
 )
@@ -46,7 +46,7 @@ const (
 
 )
 
-var ServerInfo = pb.NewServerInformation()
+var ServerInfo = proto.NewServerInformation()
 
 func Configure() {
 	err := archaius.Init(archaius.WithMemorySource(), archaius.WithENVSource())
@@ -66,7 +66,7 @@ func Configure() {
 
 }
 
-func newInfo() pb.ServerInformation {
+func newInfo() proto.ServerInformation {
 	maxLogFileSize := beego.AppConfig.DefaultInt64("log_rotate_size", 20)
 	if maxLogFileSize <= 0 || maxLogFileSize > 50 {
 		maxLogFileSize = 20
@@ -94,9 +94,9 @@ func newInfo() pb.ServerInformation {
 	accessLogFileFromConfig := beego.AppConfig.DefaultString("access_log_file", "./access.log")
 	accessLogFile := util.GetEnvString("SC_ACCESS_LOG_FILE", accessLogFileFromConfig)
 
-	return pb.ServerInformation{
+	return proto.ServerInformation{
 		Version: InitVersion,
-		Config: pb.ServerConfig{
+		Config: proto.ServerConfig{
 			MaxHeaderBytes: int64(beego.AppConfig.DefaultInt("max_header_bytes", 16384)),
 			MaxBodyBytes:   beego.AppConfig.DefaultInt64("max_body_bytes", 2097152),
 
diff --git a/server/core/key_convertor.go b/server/core/key_convertor.go
index d504c89..57fb513 100644
--- a/server/core/key_convertor.go
+++ b/server/core/key_convertor.go
@@ -17,8 +17,8 @@ package core
 
 import (
 	"fmt"
+	"github.com/apache/servicecomb-service-center/pkg/registry"
 	"github.com/apache/servicecomb-service-center/pkg/util"
-	pb "github.com/apache/servicecomb-service-center/server/core/proto"
 	"strings"
 )
 
@@ -92,14 +92,14 @@ func GetInfoFromTagKV(key []byte) (serviceID, domainProject string) {
 	return
 }
 
-func GetInfoFromSvcIndexKV(key []byte) *pb.MicroServiceKey {
+func GetInfoFromSvcIndexKV(key []byte) *registry.MicroServiceKey {
 	keys := KvToResponse(key)
 	l := len(keys)
 	if l < 6 {
 		return nil
 	}
 	domainProject := fmt.Sprintf("%s/%s", keys[l-6], keys[l-5])
-	return &pb.MicroServiceKey{
+	return &registry.MicroServiceKey{
 		Tenant:      domainProject,
 		Environment: keys[l-4],
 		AppId:       keys[l-3],
@@ -108,7 +108,7 @@ func GetInfoFromSvcIndexKV(key []byte) *pb.MicroServiceKey {
 	}
 }
 
-func GetInfoFromSvcAliasKV(key []byte) *pb.MicroServiceKey {
+func GetInfoFromSvcAliasKV(key []byte) *registry.MicroServiceKey {
 	return GetInfoFromSvcIndexKV(key)
 }
 
@@ -144,21 +144,21 @@ func GetInfoFromDependencyQueueKV(key []byte) (consumerID, domainProject, uuid s
 	return
 }
 
-func GetInfoFromDependencyRuleKV(key []byte) (t string, _ *pb.MicroServiceKey) {
+func GetInfoFromDependencyRuleKV(key []byte) (t string, _ *registry.MicroServiceKey) {
 	keys := KvToResponse(key)
 	l := len(keys)
 	if l < 5 {
 		return "", nil
 	}
 	if keys[l-1] == "*" {
-		return keys[l-3], &pb.MicroServiceKey{
+		return keys[l-3], &registry.MicroServiceKey{
 			Tenant:      fmt.Sprintf("%s/%s", keys[l-5], keys[l-4]),
 			Environment: keys[l-2],
 			ServiceName: keys[l-1],
 		}
 	}
 
-	return keys[l-5], &pb.MicroServiceKey{
+	return keys[l-5], &registry.MicroServiceKey{
 		Tenant:      fmt.Sprintf("%s/%s", keys[l-7], keys[l-6]),
 		Environment: keys[l-4],
 		AppId:       keys[l-3],
diff --git a/server/core/key_convertor_test.go b/server/core/key_convertor_test.go
index 244bd3f..a716607 100644
--- a/server/core/key_convertor_test.go
+++ b/server/core/key_convertor_test.go
@@ -17,7 +17,7 @@
 package core
 
 import (
-	"github.com/apache/servicecomb-service-center/server/core/proto"
+	"github.com/apache/servicecomb-service-center/pkg/registry"
 	"testing"
 )
 
@@ -78,7 +78,7 @@ func TestGetInfoFromKV(t *testing.T) {
 		t.Fatalf("TestGetInfoFromKV failed")
 	}
 
-	key := GetInfoFromSvcIndexKV([]byte(GenerateServiceIndexKey(&proto.MicroServiceKey{
+	key := GetInfoFromSvcIndexKV([]byte(GenerateServiceIndexKey(&registry.MicroServiceKey{
 		Tenant:      "a/b",
 		Project:     "",
 		AppId:       "c",
@@ -129,7 +129,7 @@ func TestGetInfoFromKV(t *testing.T) {
 		t.Fatalf("TestGetInfoFromKV failed")
 	}
 
-	dt, k := GetInfoFromDependencyRuleKV([]byte(GenerateProviderDependencyRuleKey("a/b", &proto.MicroServiceKey{
+	dt, k := GetInfoFromDependencyRuleKV([]byte(GenerateProviderDependencyRuleKey("a/b", &registry.MicroServiceKey{
 		Tenant:      "a/b",
 		AppId:       "c",
 		ServiceName: "*",
@@ -138,7 +138,7 @@ func TestGetInfoFromKV(t *testing.T) {
 		t.Fatalf("TestGetInfoFromKV failed")
 	}
 
-	dt, k = GetInfoFromDependencyRuleKV([]byte(GenerateProviderDependencyRuleKey("a/b", &proto.MicroServiceKey{
+	dt, k = GetInfoFromDependencyRuleKV([]byte(GenerateProviderDependencyRuleKey("a/b", &registry.MicroServiceKey{
 		Tenant:      "a/b",
 		AppId:       "c",
 		ServiceName: "d",
diff --git a/server/core/key_generator.go b/server/core/key_generator.go
index 00e0372..cd19340 100644
--- a/server/core/key_generator.go
+++ b/server/core/key_generator.go
@@ -18,8 +18,8 @@
 package core
 
 import (
+	"github.com/apache/servicecomb-service-center/pkg/registry"
 	"github.com/apache/servicecomb-service-center/pkg/util"
-	pb "github.com/apache/servicecomb-service-center/server/core/proto"
 )
 
 const (
@@ -157,7 +157,7 @@ func GenerateRuleIndexKey(domainProject string, serviceID string, attr string, p
 	}, SPLIT)
 }
 
-func GenerateServiceIndexKey(key *pb.MicroServiceKey) string {
+func GenerateServiceIndexKey(key *registry.MicroServiceKey) string {
 	return util.StringJoin([]string{
 		GetServiceIndexRootKey(key.Tenant),
 		key.Environment,
@@ -167,7 +167,7 @@ func GenerateServiceIndexKey(key *pb.MicroServiceKey) string {
 	}, SPLIT)
 }
 
-func GenerateServiceAliasKey(key *pb.MicroServiceKey) string {
+func GenerateServiceAliasKey(key *registry.MicroServiceKey) string {
 	return util.StringJoin([]string{
 		GetServiceAliasRootKey(key.Tenant),
 		key.Environment,
@@ -233,7 +233,7 @@ func GenerateInstanceLeaseKey(domainProject string, serviceID string, instanceID
 	}, SPLIT)
 }
 
-func GenerateServiceDependencyRuleKey(serviceType string, domainProject string, in *pb.MicroServiceKey) string {
+func GenerateServiceDependencyRuleKey(serviceType string, domainProject string, in *registry.MicroServiceKey) string {
 	if in == nil {
 		return util.StringJoin([]string{
 			GetServiceDependencyRuleRootKey(domainProject),
@@ -258,11 +258,11 @@ func GenerateServiceDependencyRuleKey(serviceType string, domainProject string,
 	}, SPLIT)
 }
 
-func GenerateConsumerDependencyRuleKey(domainProject string, in *pb.MicroServiceKey) string {
+func GenerateConsumerDependencyRuleKey(domainProject string, in *registry.MicroServiceKey) string {
 	return GenerateServiceDependencyRuleKey(DepsConsumer, domainProject, in)
 }
 
-func GenerateProviderDependencyRuleKey(domainProject string, in *pb.MicroServiceKey) string {
+func GenerateProviderDependencyRuleKey(domainProject string, in *registry.MicroServiceKey) string {
 	return GenerateServiceDependencyRuleKey(DepsProvider, domainProject, in)
 }
 
diff --git a/server/core/key_generator_test.go b/server/core/key_generator_test.go
index 8450606..fc8999d 100644
--- a/server/core/key_generator_test.go
+++ b/server/core/key_generator_test.go
@@ -16,7 +16,7 @@
 package core
 
 import (
-	"github.com/apache/servicecomb-service-center/server/core/proto"
+	"github.com/apache/servicecomb-service-center/pkg/registry"
 	"github.com/stretchr/testify/assert"
 	"testing"
 )
@@ -33,7 +33,7 @@ func TestGenerateDependencyRuleKey(t *testing.T) {
 	if k != "/cse-sr/ms/dep-rules/a/c" {
 		t.Fatalf("TestGenerateDependencyRuleKey failed")
 	}
-	k = GenerateConsumerDependencyRuleKey("a", &proto.MicroServiceKey{
+	k = GenerateConsumerDependencyRuleKey("a", &registry.MicroServiceKey{
 		Environment: "1",
 		AppId:       "2",
 		ServiceName: "3",
@@ -42,7 +42,7 @@ func TestGenerateDependencyRuleKey(t *testing.T) {
 	if k != "/cse-sr/ms/dep-rules/a/c/1/2/3/4" {
 		t.Fatalf("TestGenerateDependencyRuleKey failed")
 	}
-	k = GenerateConsumerDependencyRuleKey("a", &proto.MicroServiceKey{
+	k = GenerateConsumerDependencyRuleKey("a", &registry.MicroServiceKey{
 		Environment: "1",
 		AppId:       "2",
 		ServiceName: "*",
@@ -57,7 +57,7 @@ func TestGenerateDependencyRuleKey(t *testing.T) {
 	if k != "/cse-sr/ms/dep-rules/a/p" {
 		t.Fatalf("TestGenerateDependencyRuleKey failed")
 	}
-	k = GenerateProviderDependencyRuleKey("a", &proto.MicroServiceKey{
+	k = GenerateProviderDependencyRuleKey("a", &registry.MicroServiceKey{
 		Environment: "1",
 		AppId:       "2",
 		ServiceName: "3",
@@ -66,7 +66,7 @@ func TestGenerateDependencyRuleKey(t *testing.T) {
 	if k != "/cse-sr/ms/dep-rules/a/p/1/2/3/4" {
 		t.Fatalf("TestGenerateDependencyRuleKey failed")
 	}
-	k = GenerateProviderDependencyRuleKey("a", &proto.MicroServiceKey{
+	k = GenerateProviderDependencyRuleKey("a", &registry.MicroServiceKey{
 		Environment: "1",
 		AppId:       "2",
 		ServiceName: "*",
diff --git a/server/core/microservice.go b/server/core/microservice.go
index 6644b5f..18de54d 100644
--- a/server/core/microservice.go
+++ b/server/core/microservice.go
@@ -19,8 +19,9 @@ package core
 
 import (
 	"context"
+	"github.com/apache/servicecomb-service-center/pkg/registry"
 	"github.com/apache/servicecomb-service-center/pkg/util"
-	pb "github.com/apache/servicecomb-service-center/server/core/proto"
+	"github.com/apache/servicecomb-service-center/server/core/proto"
 	"github.com/apache/servicecomb-service-center/version"
 	"github.com/astaxie/beego"
 	"os"
@@ -28,10 +29,10 @@ import (
 )
 
 var (
-	ServiceAPI         pb.ServiceCtrlServer
-	InstanceAPI        pb.ServiceInstanceCtrlServerEx
-	Service            *pb.MicroService
-	Instance           *pb.MicroServiceInstance
+	ServiceAPI         proto.ServiceCtrlServer
+	InstanceAPI        proto.ServiceInstanceCtrlServerEx
+	Service            *registry.MicroService
+	Instance           *registry.MicroServiceInstance
 	sharedServiceNames map[string]struct{}
 )
 
@@ -58,30 +59,30 @@ func init() {
 }
 
 func prepareSelfRegistration() {
-	Service = &pb.MicroService{
-		Environment: pb.ENV_PROD,
+	Service = &registry.MicroService{
+		Environment: registry.ENV_PROD,
 		AppId:       RegistryAppID,
 		ServiceName: RegistryServiceName,
 		Alias:       RegistryServiceAlias,
 		Version:     version.Ver().Version,
-		Status:      pb.MS_UP,
+		Status:      registry.MS_UP,
 		Level:       "BACK",
 		Schemas: []string{
 			"servicecenter.grpc.api.ServiceCtrl",
 			"servicecenter.grpc.api.ServiceInstanceCtrl",
 		},
 		Properties: map[string]string{
-			pb.PROP_ALLOW_CROSS_APP: "true",
+			proto.PROP_ALLOW_CROSS_APP: "true",
 		},
 	}
 	if beego.BConfig.RunMode == "dev" {
-		Service.Environment = pb.ENV_DEV
+		Service.Environment = registry.ENV_DEV
 	}
 
-	Instance = &pb.MicroServiceInstance{
-		Status: pb.MSI_UP,
-		HealthCheck: &pb.HealthCheck{
-			Mode:     pb.CHECK_BY_HEARTBEAT,
+	Instance = &registry.MicroServiceInstance{
+		Status: registry.MSI_UP,
+		HealthCheck: &registry.HealthCheck{
+			Mode:     registry.CHECK_BY_HEARTBEAT,
 			Interval: RegistryDefaultLeaseRenewalinterval,
 			Times:    RegistryDefaultLeaseRetrytimes,
 		},
@@ -109,7 +110,7 @@ func SetSharedMode() {
 	sharedServiceNames[Service.ServiceName] = struct{}{}
 }
 
-func IsShared(key *pb.MicroServiceKey) bool {
+func IsShared(key *registry.MicroServiceKey) bool {
 	if !IsDefaultDomainProject(key.Tenant) {
 		return false
 	}
@@ -128,9 +129,9 @@ func IsSCInstance(ctx context.Context) bool {
 	return b
 }
 
-func GetExistenceRequest() *pb.GetExistenceRequest {
-	return &pb.GetExistenceRequest{
-		Type:        pb.EXISTENCE_MS,
+func GetExistenceRequest() *registry.GetExistenceRequest {
+	return &registry.GetExistenceRequest{
+		Type:        proto.EXISTENCE_MS,
 		Environment: Service.Environment,
 		AppId:       Service.AppId,
 		ServiceName: Service.ServiceName,
@@ -138,33 +139,33 @@ func GetExistenceRequest() *pb.GetExistenceRequest {
 	}
 }
 
-func GetServiceRequest(serviceID string) *pb.GetServiceRequest {
-	return &pb.GetServiceRequest{
+func GetServiceRequest(serviceID string) *registry.GetServiceRequest {
+	return &registry.GetServiceRequest{
 		ServiceId: serviceID,
 	}
 }
 
-func CreateServiceRequest() *pb.CreateServiceRequest {
-	return &pb.CreateServiceRequest{
+func CreateServiceRequest() *registry.CreateServiceRequest {
+	return &registry.CreateServiceRequest{
 		Service: Service,
 	}
 }
 
-func RegisterInstanceRequest() *pb.RegisterInstanceRequest {
-	return &pb.RegisterInstanceRequest{
+func RegisterInstanceRequest() *registry.RegisterInstanceRequest {
+	return &registry.RegisterInstanceRequest{
 		Instance: Instance,
 	}
 }
 
-func UnregisterInstanceRequest() *pb.UnregisterInstanceRequest {
-	return &pb.UnregisterInstanceRequest{
+func UnregisterInstanceRequest() *registry.UnregisterInstanceRequest {
+	return &registry.UnregisterInstanceRequest{
 		ServiceId:  Instance.ServiceId,
 		InstanceId: Instance.InstanceId,
 	}
 }
 
-func HeartbeatRequest() *pb.HeartbeatRequest {
-	return &pb.HeartbeatRequest{
+func HeartbeatRequest() *registry.HeartbeatRequest {
+	return &registry.HeartbeatRequest{
 		ServiceId:  Instance.ServiceId,
 		InstanceId: Instance.InstanceId,
 	}
diff --git a/server/core/microservice_test.go b/server/core/microservice_test.go
index 9c418a6..b125af2 100644
--- a/server/core/microservice_test.go
+++ b/server/core/microservice_test.go
@@ -17,7 +17,7 @@ package core
 
 import (
 	"context"
-	"github.com/apache/servicecomb-service-center/server/core/proto"
+	"github.com/apache/servicecomb-service-center/pkg/registry"
 	"github.com/astaxie/beego"
 	"os"
 	"testing"
@@ -54,28 +54,28 @@ func TestPrepareSelfRegistration(t *testing.T) {
 
 func TestSetSharedMode(t *testing.T) {
 	SetSharedMode()
-	if IsShared(&proto.MicroServiceKey{}) {
+	if IsShared(&registry.MicroServiceKey{}) {
 		t.Fatalf("TestSetSharedMode failed")
 	}
-	if IsShared(&proto.MicroServiceKey{Tenant: "default"}) {
+	if IsShared(&registry.MicroServiceKey{Tenant: "default"}) {
 		t.Fatalf("TestSetSharedMode failed")
 	}
-	if IsShared(&proto.MicroServiceKey{Tenant: "default/default"}) {
+	if IsShared(&registry.MicroServiceKey{Tenant: "default/default"}) {
 		t.Fatalf("TestSetSharedMode failed")
 	}
-	if IsShared(&proto.MicroServiceKey{Tenant: "default/default", AppId: "default"}) {
+	if IsShared(&registry.MicroServiceKey{Tenant: "default/default", AppId: "default"}) {
 		t.Fatalf("TestSetSharedMode failed")
 	}
 
 	os.Setenv("CSE_SHARED_SERVICES", "shared")
 	SetSharedMode()
-	if IsShared(&proto.MicroServiceKey{Tenant: "default/default", AppId: "default", ServiceName: "no-shared"}) {
+	if IsShared(&registry.MicroServiceKey{Tenant: "default/default", AppId: "default", ServiceName: "no-shared"}) {
 		t.Fatalf("TestSetSharedMode failed")
 	}
-	if !IsShared(&proto.MicroServiceKey{Tenant: "default/default", AppId: "default", ServiceName: "shared"}) {
+	if !IsShared(&registry.MicroServiceKey{Tenant: "default/default", AppId: "default", ServiceName: "shared"}) {
 		t.Fatalf("TestSetSharedMode failed")
 	}
-	if !IsShared(&proto.MicroServiceKey{Tenant: "default/default", AppId: "default", Alias: "shared"}) {
+	if !IsShared(&registry.MicroServiceKey{Tenant: "default/default", AppId: "default", Alias: "shared"}) {
 		t.Fatalf("TestSetSharedMode failed")
 	}
 }
diff --git a/server/core/proto/common.go b/server/core/proto/common.go
index b3dc0a2..2d91d52 100644
--- a/server/core/proto/common.go
+++ b/server/core/proto/common.go
@@ -16,28 +16,11 @@
 package proto
 
 import (
+	"github.com/apache/servicecomb-service-center/pkg/registry"
 	scerr "github.com/apache/servicecomb-service-center/server/scerror"
 )
 
 const (
-	EVT_INIT   EventType = "INIT"
-	EVT_CREATE EventType = "CREATE"
-	EVT_UPDATE EventType = "UPDATE"
-	EVT_DELETE EventType = "DELETE"
-	EVT_EXPIRE EventType = "EXPIRE"
-	EVT_ERROR  EventType = "ERROR"
-	MS_UP      string    = "UP"
-	MS_DOWN    string    = "DOWN"
-
-	MSI_UP           string = "UP"
-	MSI_DOWN         string = "DOWN"
-	MSI_STARTING     string = "STARTING"
-	MSI_TESTING      string = "TESTING"
-	MSI_OUTOFSERVICE string = "OUTOFSERVICE"
-
-	CHECK_BY_HEARTBEAT string = "push"
-	CHECK_BY_PLATFORM  string = "pull"
-
 	EXISTENCE_MS     string = "microservice"
 	EXISTENCE_SCHEMA string = "schema"
 
@@ -45,35 +28,26 @@ const (
 
 	Response_SUCCESS int32 = 0
 
-	ENV_DEV    string = "development"
-	ENV_TEST   string = "testing"
-	ENV_ACCEPT string = "acceptance"
-	ENV_PROD   string = "production"
-
-	REGISTERBY_SDK      string = "SDK"
-	REGISTERBY_SIDECAR  string = "SIDECAR"
-	REGISTERBY_PLATFORM string = "PLATFORM"
-
 	APP_ID  = "default"
 	VERSION = "0.0.1"
 )
 
-func CreateResponse(code int32, message string) *Response {
-	resp := &Response{
+func CreateResponse(code int32, message string) *registry.Response {
+	resp := &registry.Response{
 		Code:    code,
 		Message: message,
 	}
 	return resp
 }
 
-func CreateResponseWithSCErr(err *scerr.Error) *Response {
-	return &Response{
+func CreateResponseWithSCErr(err *scerr.Error) *registry.Response {
+	return &registry.Response{
 		Code:    err.Code,
 		Message: err.Detail,
 	}
 }
 
-func DependenciesToKeys(in []*MicroServiceKey, domainProject string) []*MicroServiceKey {
+func DependenciesToKeys(in []*registry.MicroServiceKey, domainProject string) []*registry.MicroServiceKey {
 	for _, value := range in {
 		if len(value.Tenant) == 0 {
 			value.Tenant = domainProject
@@ -82,8 +56,8 @@ func DependenciesToKeys(in []*MicroServiceKey, domainProject string) []*MicroSer
 	return in
 }
 
-func MicroServiceToKey(domainProject string, in *MicroService) *MicroServiceKey {
-	return &MicroServiceKey{
+func MicroServiceToKey(domainProject string, in *registry.MicroService) *registry.MicroServiceKey {
+	return &registry.MicroServiceKey{
 		Tenant:      domainProject,
 		Environment: in.Environment,
 		AppId:       in.AppId,
diff --git a/server/core/proto/parser.go b/server/core/proto/parser.go
index f361625..ec7e408 100644
--- a/server/core/proto/parser.go
+++ b/server/core/proto/parser.go
@@ -18,6 +18,7 @@ package proto
 import (
 	"encoding/json"
 	"errors"
+	"github.com/apache/servicecomb-service-center/pkg/registry"
 	"github.com/apache/servicecomb-service-center/pkg/util"
 )
 
@@ -34,11 +35,11 @@ var (
 	newString CreateValueFunc = func() interface{} { return "" }
 	newMap    CreateValueFunc = func() interface{} { return make(map[string]string) }
 
-	newService         CreateValueFunc = func() interface{} { return new(MicroService) }
-	newInstance        CreateValueFunc = func() interface{} { return new(MicroServiceInstance) }
-	newRule            CreateValueFunc = func() interface{} { return new(ServiceRule) }
-	newDependencyRule  CreateValueFunc = func() interface{} { return new(MicroServiceDependency) }
-	newDependencyQueue CreateValueFunc = func() interface{} { return new(ConsumerDependency) }
+	newService         CreateValueFunc = func() interface{} { return new(registry.MicroService) }
+	newInstance        CreateValueFunc = func() interface{} { return new(registry.MicroServiceInstance) }
+	newRule            CreateValueFunc = func() interface{} { return new(registry.ServiceRule) }
+	newDependencyRule  CreateValueFunc = func() interface{} { return new(registry.MicroServiceDependency) }
+	newDependencyQueue CreateValueFunc = func() interface{} { return new(registry.ConsumerDependency) }
 )
 
 // parse
diff --git a/server/core/proto/parser_test.go b/server/core/proto/parser_test.go
index 116c953..1c0b4f6 100644
--- a/server/core/proto/parser_test.go
+++ b/server/core/proto/parser_test.go
@@ -17,6 +17,7 @@
 package proto
 
 import (
+	"github.com/apache/servicecomb-service-center/pkg/registry"
 	"github.com/stretchr/testify/assert"
 	"testing"
 )
@@ -63,7 +64,7 @@ func TestParseInnerValueTypeFunc(t *testing.T) {
 		t.Fatalf("MapParser.Unmarshal failed")
 	}
 
-	var m interface{} = new(MicroService)
+	var m interface{} = new(registry.MicroService)
 	err = JsonUnmarshal(nil, nil)
 	if err == nil {
 		t.Fatalf("JsonUnmarshal failed")
@@ -72,7 +73,7 @@ func TestParseInnerValueTypeFunc(t *testing.T) {
 	if err != nil {
 		t.Fatalf("MapParser.Unmarshal failed, %v", err)
 	}
-	if m.(*MicroService).ServiceName != "abc" {
+	if m.(*registry.MicroService).ServiceName != "abc" {
 		t.Fatalf("MapParser.Unmarshal failed, %s", m)
 	}
 }
@@ -87,7 +88,7 @@ func TestParseValueTypeFunc(t *testing.T) {
 	if err != nil {
 		t.Fatalf("ServiceParser.Unmarshal failed, %s", err.Error())
 	}
-	v, ok := r.(*MicroService)
+	v, ok := r.(*registry.MicroService)
 	assert.True(t, ok)
 	assert.Equal(t, "abc", v.ServiceName)
 
@@ -95,7 +96,7 @@ func TestParseValueTypeFunc(t *testing.T) {
 	if err != nil {
 		t.Fatalf("InstanceParser.Unmarshal failed, %s", err.Error())
 	}
-	mi, ok := r.(*MicroServiceInstance)
+	mi, ok := r.(*registry.MicroServiceInstance)
 	assert.True(t, ok)
 	assert.Equal(t, "abc", mi.HostName)
 
@@ -103,7 +104,7 @@ func TestParseValueTypeFunc(t *testing.T) {
 	if err != nil {
 		t.Fatalf("RuleParser.Unmarshal failed, %s", err.Error())
 	}
-	if v, ok := r.(*ServiceRule); !ok || v.RuleId != "abc" {
+	if v, ok := r.(*registry.ServiceRule); !ok || v.RuleId != "abc" {
 		t.Fatalf("RuleParser.Unmarshal failed, %s", v)
 	}
 
@@ -111,7 +112,7 @@ func TestParseValueTypeFunc(t *testing.T) {
 	if err != nil {
 		t.Fatalf("DependencyRuleParser.Unmarshal failed, %s", err.Error())
 	}
-	md, ok := r.(*MicroServiceDependency)
+	md, ok := r.(*registry.MicroServiceDependency)
 	assert.True(t, ok)
 	assert.Equal(t, "zhqClient", md.Dependency[0].ServiceName)
 }
diff --git a/server/core/proto/services.go b/server/core/proto/services.go
index 8e709da..12f6af4 100644
--- a/server/core/proto/services.go
+++ b/server/core/proto/services.go
@@ -18,16 +18,17 @@ package proto
 
 import (
 	"context"
+	"github.com/apache/servicecomb-service-center/pkg/registry"
 	"github.com/gorilla/websocket"
 )
 
 type ServiceInstanceCtrlServerEx interface {
 	ServiceInstanceCtrlServer
 
-	BatchFind(ctx context.Context, in *BatchFindInstancesRequest) (*BatchFindInstancesResponse, error)
+	BatchFind(ctx context.Context, in *registry.BatchFindInstancesRequest) (*registry.BatchFindInstancesResponse, error)
 
-	WebSocketWatch(ctx context.Context, in *WatchInstanceRequest, conn *websocket.Conn)
-	WebSocketListAndWatch(ctx context.Context, in *WatchInstanceRequest, conn *websocket.Conn)
+	WebSocketWatch(ctx context.Context, in *registry.WatchInstanceRequest, conn *websocket.Conn)
+	WebSocketListAndWatch(ctx context.Context, in *registry.WatchInstanceRequest, conn *websocket.Conn)
 
-	ClusterHealth(ctx context.Context) (*GetInstancesResponse, error)
+	ClusterHealth(ctx context.Context) (*registry.GetInstancesResponse, error)
 }
diff --git a/server/core/proto/services.pb.go b/server/core/proto/services.pb.go
index bacf07e..61f32f8 100644
--- a/server/core/proto/services.pb.go
+++ b/server/core/proto/services.pb.go
@@ -19,598 +19,54 @@ package proto
 
 import (
 	"context"
+	"github.com/apache/servicecomb-service-center/pkg/registry"
 	"google.golang.org/grpc"
 )
 
-type ModifySchemasRequest struct {
-	ServiceId string    `protobuf:"bytes,1,opt,name=serviceId" json:"serviceId,omitempty"`
-	Schemas   []*Schema `protobuf:"bytes,2,rep,name=schemas" json:"schemas,omitempty"`
-}
-
-type Schema struct {
-	SchemaId string `protobuf:"bytes,1,opt,name=schemaId" json:"schemaId,omitempty"`
-	Summary  string `protobuf:"bytes,2,opt,name=summary" json:"summary,omitempty"`
-	Schema   string `protobuf:"bytes,3,opt,name=schema" json:"schema,omitempty"`
-}
-
-type ModifySchemasResponse struct {
-	Response *Response `protobuf:"bytes,1,opt,name=response" json:"response,omitempty"`
-}
-
-type HeartbeatSetRequest struct {
-	Instances []*HeartbeatSetElement `protobuf:"bytes,1,rep,name=instances" json:"instances,omitempty"`
-}
-
-type HeartbeatSetElement struct {
-	ServiceId  string `protobuf:"bytes,1,opt,name=serviceId" json:"serviceId,omitempty"`
-	InstanceId string `protobuf:"bytes,2,opt,name=instanceId" json:"instanceId,omitempty"`
-}
-
-type HeartbeatSetResponse struct {
-	Response  *Response        `protobuf:"bytes,1,opt,name=response" json:"response,omitempty"`
-	Instances []*InstanceHbRst `protobuf:"bytes,2,rep,name=instances" json:"instances,omitempty"`
-}
-
-type InstanceHbRst struct {
-	ServiceId  string `protobuf:"bytes,1,opt,name=serviceId" json:"serviceId,omitempty"`
-	InstanceId string `protobuf:"bytes,2,opt,name=instanceId" json:"instanceId,omitempty"`
-	ErrMessage string `protobuf:"bytes,3,opt,name=errMessage" json:"errMessage,omitempty"`
-}
-
-type StService struct {
-	Count       int64 `protobuf:"varint,1,opt,name=count" json:"count,omitempty"`
-	OnlineCount int64 `protobuf:"varint,2,opt,name=onlineCount" json:"onlineCount,omitempty"`
-}
-
-type StInstance struct {
-	Count         int64 `protobuf:"varint,1,opt,name=count" json:"count,omitempty"`
-	CountByDomain int64 `protobuf:"varint,2,opt,name=countByDomain" json:"countByDomain,omitempty"`
-}
-
-type StApp struct {
-	Count int64 `protobuf:"varint,1,opt,name=count" json:"count,omitempty"`
-}
-
-type Statistics struct {
-	Services  *StService  `protobuf:"bytes,1,opt,name=services" json:"services,omitempty"`
-	Instances *StInstance `protobuf:"bytes,2,opt,name=instances" json:"instances,omitempty"`
-	Apps      *StApp      `protobuf:"bytes,3,opt,name=apps" json:"apps,omitempty"`
-}
-
-type GetServicesInfoRequest struct {
-	Options     []string `protobuf:"bytes,1,rep,name=options" json:"options,omitempty"`
-	AppId       string   `protobuf:"bytes,2,opt,name=appId" json:"appId,omitempty"`
-	ServiceName string   `protobuf:"bytes,3,opt,name=serviceName" json:"serviceName,omitempty"`
-	CountOnly   bool     `protobuf:"varint,4,opt,name=countOnly" json:"countOnly,omitempty"`
-	WithShared  bool     `protobuf:"varint,5,opt,name=withShared" json:"withShared,omitempty"`
-}
-
-type GetServicesInfoResponse struct {
-	Response          *Response        `protobuf:"bytes,1,opt,name=response" json:"response,omitempty"`
-	AllServicesDetail []*ServiceDetail `protobuf:"bytes,2,rep,name=allServicesDetail" json:"allServicesDetail,omitempty"`
-	Statistics        *Statistics      `protobuf:"bytes,3,opt,name=statistics" json:"statistics,omitempty"`
-}
-
-type MicroServiceKey struct {
-	Tenant      string `protobuf:"bytes,1,opt,name=tenant" json:"tenant,omitempty"`
-	Project     string `protobuf:"bytes,2,opt,name=project" json:"project,omitempty"`
-	AppId       string `protobuf:"bytes,3,opt,name=appId" json:"appId,omitempty"`
-	ServiceName string `protobuf:"bytes,4,opt,name=serviceName" json:"serviceName,omitempty"`
-	Version     string `protobuf:"bytes,5,opt,name=version" json:"version,omitempty"`
-	Environment string `protobuf:"bytes,6,opt,name=environment" json:"environment,omitempty"`
-	Alias       string `protobuf:"bytes,7,opt,name=alias" json:"alias,omitempty"`
-}
-
-type MicroService struct {
-	ServiceId    string             `protobuf:"bytes,1,opt,name=serviceId" json:"serviceId,omitempty"`
-	AppId        string             `protobuf:"bytes,2,opt,name=appId" json:"appId,omitempty"`
-	ServiceName  string             `protobuf:"bytes,3,opt,name=serviceName" json:"serviceName,omitempty"`
-	Version      string             `protobuf:"bytes,4,opt,name=version" json:"version,omitempty"`
-	Description  string             `protobuf:"bytes,5,opt,name=description" json:"description,omitempty"`
-	Level        string             `protobuf:"bytes,6,opt,name=level" json:"level,omitempty"`
-	Schemas      []string           `protobuf:"bytes,7,rep,name=schemas" json:"schemas,omitempty"`
-	Paths        []*ServicePath     `protobuf:"bytes,10,rep,name=paths" json:"paths,omitempty"`
-	Status       string             `protobuf:"bytes,8,opt,name=status" json:"status,omitempty"`
-	Properties   map[string]string  `protobuf:"bytes,9,rep,name=properties" json:"properties,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
-	Timestamp    string             `protobuf:"bytes,11,opt,name=timestamp" json:"timestamp,omitempty"`
-	Providers    []*MicroServiceKey `protobuf:"bytes,12,rep,name=providers" json:"providers,omitempty"`
-	Alias        string             `protobuf:"bytes,13,opt,name=alias" json:"alias,omitempty"`
-	LBStrategy   map[string]string  `protobuf:"bytes,14,rep,name=LBStrategy" json:"LBStrategy,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
-	ModTimestamp string             `protobuf:"bytes,15,opt,name=modTimestamp" json:"modTimestamp,omitempty"`
-	Environment  string             `protobuf:"bytes,16,opt,name=environment" json:"environment,omitempty"`
-	RegisterBy   string             `protobuf:"bytes,17,opt,name=registerBy" json:"registerBy,omitempty"`
-	Framework    *FrameWorkProperty `protobuf:"bytes,18,opt,name=framework" json:"framework,omitempty"`
-}
-
-type FrameWorkProperty struct {
-	Name    string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
-	Version string `protobuf:"bytes,2,opt,name=version" json:"version,omitempty"`
-}
-
-type ServiceRule struct {
-	RuleId       string `protobuf:"bytes,1,opt,name=ruleId" json:"ruleId,omitempty"`
-	RuleType     string `protobuf:"bytes,2,opt,name=ruleType" json:"ruleType,omitempty"`
-	Attribute    string `protobuf:"bytes,3,opt,name=attribute" json:"attribute,omitempty"`
-	Pattern      string `protobuf:"bytes,4,opt,name=pattern" json:"pattern,omitempty"`
-	Description  string `protobuf:"bytes,5,opt,name=description" json:"description,omitempty"`
-	Timestamp    string `protobuf:"bytes,6,opt,name=timestamp" json:"timestamp,omitempty"`
-	ModTimestamp string `protobuf:"bytes,7,opt,name=modTimestamp" json:"modTimestamp,omitempty"`
-}
-
-type AddOrUpdateServiceRule struct {
-	RuleType    string `protobuf:"bytes,1,opt,name=ruleType" json:"ruleType,omitempty"`
-	Attribute   string `protobuf:"bytes,2,opt,name=attribute" json:"attribute,omitempty"`
-	Pattern     string `protobuf:"bytes,3,opt,name=pattern" json:"pattern,omitempty"`
-	Description string `protobuf:"bytes,4,opt,name=description" json:"description,omitempty"`
-}
-
-type ServicePath struct {
-	Path     string            `protobuf:"bytes,1,opt,name=path" json:"path,omitempty"`
-	Property map[string]string `protobuf:"bytes,2,rep,name=property" json:"property,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
-}
-
-type Response struct {
-	Code    int32  `protobuf:"varint,1,opt,name=code" json:"code,omitempty"`
-	Message string `protobuf:"bytes,2,opt,name=message" json:"message,omitempty"`
-}
-
-func (m *Response) GetCode() int32 {
-	if m != nil {
-		return m.Code
-	}
-	return 0
-}
-
-func (m *Response) GetMessage() string {
-	if m != nil {
-		return m.Message
-	}
-	return ""
-}
-
-type GetExistenceRequest struct {
-	Type        string `protobuf:"bytes,1,opt,name=type" json:"type,omitempty"`
-	AppId       string `protobuf:"bytes,2,opt,name=appId" json:"appId,omitempty"`
-	ServiceName string `protobuf:"bytes,3,opt,name=serviceName" json:"serviceName,omitempty"`
-	Version     string `protobuf:"bytes,4,opt,name=version" json:"version,omitempty"`
-	ServiceId   string `protobuf:"bytes,5,opt,name=serviceId" json:"serviceId,omitempty"`
-	SchemaId    string `protobuf:"bytes,6,opt,name=schemaId" json:"schemaId,omitempty"`
-	Environment string `protobuf:"bytes,7,opt,name=environment" json:"environment,omitempty"`
-}
-
-type GetExistenceResponse struct {
-	Response  *Response `protobuf:"bytes,1,opt,name=response" json:"response,omitempty"`
-	ServiceId string    `protobuf:"bytes,2,opt,name=serviceId" json:"serviceId,omitempty"`
-	SchemaId  string    `protobuf:"bytes,3,opt,name=schemaId" json:"schemaId,omitempty"`
-	Summary   string    `protobuf:"bytes,4,opt,name=summary" json:"summary,omitempty"`
-}
-
-func (m *GetExistenceResponse) GetSummary() string {
-	if m != nil {
-		return m.Summary
-	}
-	return ""
-}
-
-type CreateServiceRequest struct {
-	Service   *MicroService             `protobuf:"bytes,1,opt,name=service" json:"service,omitempty"`
-	Rules     []*AddOrUpdateServiceRule `protobuf:"bytes,2,rep,name=rules" json:"rules,omitempty"`
-	Tags      map[string]string         `protobuf:"bytes,3,rep,name=tags" json:"tags,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
-	Instances []*MicroServiceInstance   `protobuf:"bytes,4,rep,name=instances" json:"instances,omitempty"`
-}
-
-type CreateServiceResponse struct {
-	Response  *Response `protobuf:"bytes,1,opt,name=response" json:"response,omitempty"`
-	ServiceId string    `protobuf:"bytes,2,opt,name=serviceId" json:"serviceId,omitempty"`
-}
-
-type DeleteServiceRequest struct {
-	ServiceId string `protobuf:"bytes,1,opt,name=serviceId" json:"serviceId,omitempty"`
-	Force     bool   `protobuf:"varint,2,opt,name=force" json:"force,omitempty"`
-}
-
-type DeleteServiceResponse struct {
-	Response *Response `protobuf:"bytes,1,opt,name=response" json:"response,omitempty"`
-}
-
-type GetServiceRequest struct {
-	ServiceId string `protobuf:"bytes,1,opt,name=serviceId" json:"serviceId,omitempty"`
-}
-
-type GetServiceResponse struct {
-	Response *Response     `protobuf:"bytes,1,opt,name=response" json:"response,omitempty"`
-	Service  *MicroService `protobuf:"bytes,2,opt,name=service" json:"service,omitempty"`
-}
-
-type GetServicesRequest struct {
-}
-
-type GetServicesResponse struct {
-	Response *Response       `protobuf:"bytes,1,opt,name=response" json:"response,omitempty"`
-	Services []*MicroService `protobuf:"bytes,2,rep,name=services" json:"services,omitempty"`
-}
-
-type UpdateServicePropsRequest struct {
-	ServiceId  string            `protobuf:"bytes,1,opt,name=serviceId" json:"serviceId,omitempty"`
-	Properties map[string]string `protobuf:"bytes,2,rep,name=properties" json:"properties,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
-}
-
-type UpdateServicePropsResponse struct {
-	Response *Response `protobuf:"bytes,1,opt,name=response" json:"response,omitempty"`
-}
-
-type GetServiceRulesRequest struct {
-	ServiceId string `protobuf:"bytes,1,opt,name=serviceId" json:"serviceId,omitempty"`
-}
-
-type GetServiceRulesResponse struct {
-	Response *Response      `protobuf:"bytes,1,opt,name=response" json:"response,omitempty"`
-	Rules    []*ServiceRule `protobuf:"bytes,2,rep,name=rules" json:"rules,omitempty"`
-}
-
-type UpdateServiceRuleRequest struct {
-	ServiceId string                  `protobuf:"bytes,1,opt,name=serviceId" json:"serviceId,omitempty"`
-	RuleId    string                  `protobuf:"bytes,2,opt,name=ruleId" json:"ruleId,omitempty"`
-	Rule      *AddOrUpdateServiceRule `protobuf:"bytes,3,opt,name=rule" json:"rule,omitempty"`
-}
-
-type UpdateServiceRuleResponse struct {
-	Response *Response `protobuf:"bytes,1,opt,name=response" json:"response,omitempty"`
-}
-
-type AddServiceRulesRequest struct {
-	ServiceId string                    `protobuf:"bytes,1,opt,name=serviceId" json:"serviceId,omitempty"`
-	Rules     []*AddOrUpdateServiceRule `protobuf:"bytes,2,rep,name=rules" json:"rules,omitempty"`
-}
-
-type AddServiceRulesResponse struct {
-	Response *Response `protobuf:"bytes,1,opt,name=response" json:"response,omitempty"`
-	RuleIds  []string  `protobuf:"bytes,2,rep,name=RuleIds" json:"RuleIds,omitempty"`
-}
-
-type DeleteServiceRulesRequest struct {
-	ServiceId string   `protobuf:"bytes,1,opt,name=serviceId" json:"serviceId,omitempty"`
-	RuleIds   []string `protobuf:"bytes,2,rep,name=ruleIds" json:"ruleIds,omitempty"`
-}
-
-type DeleteServiceRulesResponse struct {
-	Response *Response `protobuf:"bytes,1,opt,name=response" json:"response,omitempty"`
-}
-
-type GetServiceTagsRequest struct {
-	ServiceId string `protobuf:"bytes,1,opt,name=serviceId" json:"serviceId,omitempty"`
-}
-
-type GetServiceTagsResponse struct {
-	Response *Response         `protobuf:"bytes,1,opt,name=response" json:"response,omitempty"`
-	Tags     map[string]string `protobuf:"bytes,2,rep,name=tags" json:"tags,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
-}
-
-type UpdateServiceTagRequest struct {
-	ServiceId string `protobuf:"bytes,1,opt,name=serviceId" json:"serviceId,omitempty"`
-	Key       string `protobuf:"bytes,2,opt,name=key" json:"key,omitempty"`
-	Value     string `protobuf:"bytes,3,opt,name=value" json:"value,omitempty"`
-}
-
-type UpdateServiceTagResponse struct {
-	Response *Response `protobuf:"bytes,1,opt,name=response" json:"response,omitempty"`
-}
-
-type AddServiceTagsRequest struct {
-	ServiceId string            `protobuf:"bytes,1,opt,name=serviceId" json:"serviceId,omitempty"`
-	Tags      map[string]string `protobuf:"bytes,2,rep,name=tags" json:"tags,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
-}
-
-type AddServiceTagsResponse struct {
-	Response *Response `protobuf:"bytes,1,opt,name=response" json:"response,omitempty"`
-}
-
-type DeleteServiceTagsRequest struct {
-	ServiceId string   `protobuf:"bytes,1,opt,name=serviceId" json:"serviceId,omitempty"`
-	Keys      []string `protobuf:"bytes,2,rep,name=keys" json:"keys,omitempty"`
-}
-
-type DeleteServiceTagsResponse struct {
-	Response *Response `protobuf:"bytes,1,opt,name=response" json:"response,omitempty"`
-}
-
-type HealthCheck struct {
-	Mode     string `protobuf:"bytes,1,opt,name=mode" json:"mode,omitempty"`
-	Port     int32  `protobuf:"varint,2,opt,name=port" json:"port,omitempty"`
-	Interval int32  `protobuf:"varint,3,opt,name=interval" json:"interval,omitempty"`
-	Times    int32  `protobuf:"varint,4,opt,name=times" json:"times,omitempty"`
-	Url      string `protobuf:"bytes,5,opt,name=url" json:"url,omitempty"`
-}
-
-type MicroServiceInstance struct {
-	InstanceId     string            `protobuf:"bytes,1,opt,name=instanceId" json:"instanceId,omitempty"`
-	ServiceId      string            `protobuf:"bytes,2,opt,name=serviceId" json:"serviceId,omitempty"`
-	Endpoints      []string          `protobuf:"bytes,3,rep,name=endpoints" json:"endpoints,omitempty"`
-	HostName       string            `protobuf:"bytes,4,opt,name=hostName" json:"hostName,omitempty"`
-	Status         string            `protobuf:"bytes,5,opt,name=status" json:"status,omitempty"`
-	Properties     map[string]string `protobuf:"bytes,6,rep,name=properties" json:"properties,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
-	HealthCheck    *HealthCheck      `protobuf:"bytes,7,opt,name=healthCheck" json:"healthCheck,omitempty"`
-	Timestamp      string            `protobuf:"bytes,8,opt,name=timestamp" json:"timestamp,omitempty"`
-	DataCenterInfo *DataCenterInfo   `protobuf:"bytes,9,opt,name=dataCenterInfo" json:"dataCenterInfo,omitempty"`
-	ModTimestamp   string            `protobuf:"bytes,10,opt,name=modTimestamp" json:"modTimestamp,omitempty"`
-	Version        string            `protobuf:"bytes,11,opt,name=version" json:"version,omitempty"`
-}
-
-type DataCenterInfo struct {
-	Name          string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
-	Region        string `protobuf:"bytes,2,opt,name=region" json:"region,omitempty"`
-	AvailableZone string `protobuf:"bytes,3,opt,name=availableZone" json:"availableZone,omitempty"`
-}
-
-type MicroServiceInstanceKey struct {
-	InstanceId string `protobuf:"bytes,1,opt,name=instanceId" json:"instanceId,omitempty"`
-	ServiceId  string `protobuf:"bytes,2,opt,name=serviceId" json:"serviceId,omitempty"`
-}
-
-type RegisterInstanceRequest struct {
-	Instance *MicroServiceInstance `protobuf:"bytes,1,opt,name=instance" json:"instance,omitempty"`
-}
-
-type RegisterInstanceResponse struct {
-	Response   *Response `protobuf:"bytes,1,opt,name=response" json:"response,omitempty"`
-	InstanceId string    `protobuf:"bytes,2,opt,name=instanceId" json:"instanceId,omitempty"`
-}
-
-type UnregisterInstanceRequest struct {
-	ServiceId  string `protobuf:"bytes,1,opt,name=serviceId" json:"serviceId,omitempty"`
-	InstanceId string `protobuf:"bytes,2,opt,name=instanceId" json:"instanceId,omitempty"`
-}
-
-type UnregisterInstanceResponse struct {
-	Response *Response `protobuf:"bytes,1,opt,name=response" json:"response,omitempty"`
-}
-
-type HeartbeatRequest struct {
-	ServiceId  string `protobuf:"bytes,1,opt,name=serviceId" json:"serviceId,omitempty"`
-	InstanceId string `protobuf:"bytes,2,opt,name=instanceId" json:"instanceId,omitempty"`
-}
-
-type HeartbeatResponse struct {
-	Response *Response `protobuf:"bytes,1,opt,name=response" json:"response,omitempty"`
-}
-
-type FindInstancesRequest struct {
-	ConsumerServiceId string   `protobuf:"bytes,1,opt,name=consumerServiceId" json:"consumerServiceId,omitempty"`
-	AppId             string   `protobuf:"bytes,2,opt,name=appId" json:"appId,omitempty"`
-	ServiceName       string   `protobuf:"bytes,3,opt,name=serviceName" json:"serviceName,omitempty"`
-	VersionRule       string   `protobuf:"bytes,4,opt,name=versionRule" json:"versionRule,omitempty"`
-	Tags              []string `protobuf:"bytes,5,rep,name=tags" json:"tags,omitempty"`
-	Environment       string   `protobuf:"bytes,6,opt,name=environment" json:"environment,omitempty"`
-}
-
-type FindInstancesResponse struct {
-	Response  *Response               `protobuf:"bytes,1,opt,name=response" json:"response,omitempty"`
-	Instances []*MicroServiceInstance `protobuf:"bytes,2,rep,name=instances" json:"instances,omitempty"`
-}
-
-type GetOneInstanceRequest struct {
-	ConsumerServiceId  string   `protobuf:"bytes,1,opt,name=consumerServiceId" json:"consumerServiceId,omitempty"`
-	ProviderServiceId  string   `protobuf:"bytes,2,opt,name=providerServiceId" json:"providerServiceId,omitempty"`
-	ProviderInstanceId string   `protobuf:"bytes,3,opt,name=providerInstanceId" json:"providerInstanceId,omitempty"`
-	Tags               []string `protobuf:"bytes,4,rep,name=tags" json:"tags,omitempty"`
-}
-
-type GetOneInstanceResponse struct {
-	Response *Response             `protobuf:"bytes,1,opt,name=response" json:"response,omitempty"`
-	Instance *MicroServiceInstance `protobuf:"bytes,2,opt,name=instance" json:"instance,omitempty"`
-}
-
-type GetInstancesRequest struct {
-	ConsumerServiceId string   `protobuf:"bytes,1,opt,name=consumerServiceId" json:"consumerServiceId,omitempty"`
-	ProviderServiceId string   `protobuf:"bytes,2,opt,name=providerServiceId" json:"providerServiceId,omitempty"`
-	Tags              []string `protobuf:"bytes,3,rep,name=tags" json:"tags,omitempty"`
-}
-
-type GetInstancesResponse struct {
-	Response  *Response               `protobuf:"bytes,1,opt,name=response" json:"response,omitempty"`
-	Instances []*MicroServiceInstance `protobuf:"bytes,2,rep,name=instances" json:"instances,omitempty"`
-}
-
-type UpdateInstanceStatusRequest struct {
-	ServiceId  string `protobuf:"bytes,1,opt,name=serviceId" json:"serviceId,omitempty"`
-	InstanceId string `protobuf:"bytes,2,opt,name=instanceId" json:"instanceId,omitempty"`
-	Status     string `protobuf:"bytes,3,opt,name=status" json:"status,omitempty"`
-}
-
-type UpdateInstanceStatusResponse struct {
-	Response *Response `protobuf:"bytes,1,opt,name=response" json:"response,omitempty"`
-}
-
-type UpdateInstancePropsRequest struct {
-	ServiceId  string            `protobuf:"bytes,1,opt,name=serviceId" json:"serviceId,omitempty"`
-	InstanceId string            `protobuf:"bytes,2,opt,name=instanceId" json:"instanceId,omitempty"`
-	Properties map[string]string `protobuf:"bytes,3,rep,name=properties" json:"properties,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
-}
-
-type UpdateInstancePropsResponse struct {
-	Response *Response `protobuf:"bytes,1,opt,name=response" json:"response,omitempty"`
-}
-
-type WatchInstanceRequest struct {
-	SelfServiceId string `protobuf:"bytes,1,opt,name=selfServiceId" json:"selfServiceId,omitempty"`
-}
-
-type WatchInstanceResponse struct {
-	Response *Response             `protobuf:"bytes,1,opt,name=response" json:"response,omitempty"`
-	Action   string                `protobuf:"bytes,2,opt,name=action" json:"action,omitempty"`
-	Key      *MicroServiceKey      `protobuf:"bytes,3,opt,name=key" json:"key,omitempty"`
-	Instance *MicroServiceInstance `protobuf:"bytes,4,opt,name=instance" json:"instance,omitempty"`
-}
-
-type GetSchemaRequest struct {
-	ServiceId string `protobuf:"bytes,1,opt,name=serviceId" json:"serviceId,omitempty"`
-	SchemaId  string `protobuf:"bytes,2,opt,name=schemaId" json:"schemaId,omitempty"`
-}
-
-type GetAllSchemaRequest struct {
-	ServiceId  string `protobuf:"bytes,1,opt,name=serviceId" json:"serviceId,omitempty"`
-	WithSchema bool   `protobuf:"varint,2,opt,name=withSchema" json:"withSchema,omitempty"`
-}
-
-type GetSchemaResponse struct {
-	Response      *Response `protobuf:"bytes,1,opt,name=response" json:"response,omitempty"`
-	Schema        string    `protobuf:"bytes,2,opt,name=schema" json:"schema,omitempty"`
-	SchemaSummary string    `protobuf:"bytes,3,opt,name=schemaSummary" json:"schemaSummary,omitempty"`
-}
-
-type GetAllSchemaResponse struct {
-	Response *Response `protobuf:"bytes,1,opt,name=response" json:"response,omitempty"`
-	Schemas  []*Schema `protobuf:"bytes,2,rep,name=schemas" json:"schemas,omitempty"`
-}
-
-type DeleteSchemaRequest struct {
-	ServiceId string `protobuf:"bytes,1,opt,name=serviceId" json:"serviceId,omitempty"`
-	SchemaId  string `protobuf:"bytes,2,opt,name=schemaId" json:"schemaId,omitempty"`
-}
-
-type DeleteSchemaResponse struct {
-	Response *Response `protobuf:"bytes,1,opt,name=response" json:"response,omitempty"`
-}
-
-type ModifySchemaRequest struct {
-	ServiceId string `protobuf:"bytes,1,opt,name=serviceId" json:"serviceId,omitempty"`
-	SchemaId  string `protobuf:"bytes,2,opt,name=schemaId" json:"schemaId,omitempty"`
-	Schema    string `protobuf:"bytes,3,opt,name=schema" json:"schema,omitempty"`
-	Summary   string `protobuf:"bytes,4,opt,name=summary" json:"summary,omitempty"`
-}
-
-type ModifySchemaResponse struct {
-	Response *Response `protobuf:"bytes,1,opt,name=response" json:"response,omitempty"`
-}
-
-type AddDependenciesRequest struct {
-	Dependencies []*ConsumerDependency `protobuf:"bytes,1,rep,name=dependencies" json:"dependencies,omitempty"`
-}
-
-type AddDependenciesResponse struct {
-	Response *Response `protobuf:"bytes,1,opt,name=response" json:"response,omitempty"`
-}
-
-type CreateDependenciesRequest struct {
-	Dependencies []*ConsumerDependency `protobuf:"bytes,1,rep,name=dependencies" json:"dependencies,omitempty"`
-}
-
-type ConsumerDependency struct {
-	Consumer  *MicroServiceKey   `protobuf:"bytes,1,opt,name=consumer" json:"consumer,omitempty"`
-	Providers []*MicroServiceKey `protobuf:"bytes,2,rep,name=providers" json:"providers,omitempty"`
-	Override  bool               `protobuf:"varint,3,opt,name=override" json:"override,omitempty"`
-}
-
-type CreateDependenciesResponse struct {
-	Response *Response `protobuf:"bytes,1,opt,name=response" json:"response,omitempty"`
-}
-
-type GetDependenciesRequest struct {
-	ServiceId  string `protobuf:"bytes,1,opt,name=serviceId" json:"serviceId,omitempty"`
-	SameDomain bool   `protobuf:"varint,2,opt,name=sameDomain" json:"sameDomain,omitempty"`
-	NoSelf     bool   `protobuf:"varint,3,opt,name=noSelf" json:"noSelf,omitempty"`
-}
-
-type GetConDependenciesResponse struct {
-	Response  *Response       `protobuf:"bytes,1,opt,name=response" json:"response,omitempty"`
-	Providers []*MicroService `protobuf:"bytes,2,rep,name=providers" json:"providers,omitempty"`
-}
-
-type GetProDependenciesResponse struct {
-	Response  *Response       `protobuf:"bytes,1,opt,name=response" json:"response,omitempty"`
-	Consumers []*MicroService `protobuf:"bytes,2,rep,name=consumers" json:"consumers,omitempty"`
-}
-
-// 服务详情
-type ServiceDetail struct {
-	MicroService         *MicroService           `protobuf:"bytes,1,opt,name=microService" json:"microService,omitempty"`
-	Instances            []*MicroServiceInstance `protobuf:"bytes,2,rep,name=instances" json:"instances,omitempty"`
-	SchemaInfos          []*Schema               `protobuf:"bytes,3,rep,name=schemaInfos" json:"schemaInfos,omitempty"`
-	Rules                []*ServiceRule          `protobuf:"bytes,4,rep,name=rules" json:"rules,omitempty"`
-	Providers            []*MicroService         `protobuf:"bytes,5,rep,name=providers" json:"providers,omitempty"`
-	Consumers            []*MicroService         `protobuf:"bytes,6,rep,name=consumers" json:"consumers,omitempty"`
-	Tags                 map[string]string       `protobuf:"bytes,7,rep,name=tags" json:"tags,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
-	MicroServiceVersions []string                `protobuf:"bytes,8,rep,name=microServiceVersions" json:"microServiceVersions,omitempty"`
-	Statics              *Statistics             `protobuf:"bytes,9,opt,name=statics" json:"statics,omitempty"`
-}
-
-// 服务详情返回信息
-type GetServiceDetailResponse struct {
-	Response *Response      `protobuf:"bytes,1,opt,name=response" json:"response,omitempty"`
-	Service  *ServiceDetail `protobuf:"bytes,2,opt,name=service" json:"service,omitempty"`
-}
-
-// 删除服务请求
-type DelServicesRequest struct {
-	ServiceIds []string `protobuf:"bytes,1,rep,name=serviceIds" json:"serviceIds,omitempty"`
-	Force      bool     `protobuf:"varint,2,opt,name=force" json:"force,omitempty"`
-}
-
-// 删除服务响应内容
-type DelServicesRspInfo struct {
-	ErrMessage string `protobuf:"bytes,1,opt,name=errMessage" json:"errMessage,omitempty"`
-	ServiceId  string `protobuf:"bytes,2,opt,name=serviceId" json:"serviceId,omitempty"`
-}
-
-// 删除服务响应
-type DelServicesResponse struct {
-	Response *Response             `protobuf:"bytes,1,opt,name=response" json:"response,omitempty"`
-	Services []*DelServicesRspInfo `protobuf:"bytes,2,rep,name=services" json:"services,omitempty"`
-}
-
-type GetAppsRequest struct {
-	Environment string `protobuf:"bytes,1,opt,name=environment" json:"environment,omitempty"`
-	WithShared  bool   `protobuf:"varint,2,opt,name=withShared" json:"withShared,omitempty"`
-}
-
-type GetAppsResponse struct {
-	Response *Response `protobuf:"bytes,1,opt,name=response" json:"response,omitempty"`
-	AppIds   []string  `protobuf:"bytes,2,rep,name=appIds" json:"appIds,omitempty"`
-}
 type ServiceCtrlServer interface {
-	Exist(context.Context, *GetExistenceRequest) (*GetExistenceResponse, error)
-	Create(context.Context, *CreateServiceRequest) (*CreateServiceResponse, error)
-	Delete(context.Context, *DeleteServiceRequest) (*DeleteServiceResponse, error)
-	GetOne(context.Context, *GetServiceRequest) (*GetServiceResponse, error)
-	GetServices(context.Context, *GetServicesRequest) (*GetServicesResponse, error)
-	UpdateProperties(context.Context, *UpdateServicePropsRequest) (*UpdateServicePropsResponse, error)
-	AddRule(context.Context, *AddServiceRulesRequest) (*AddServiceRulesResponse, error)
-	GetRule(context.Context, *GetServiceRulesRequest) (*GetServiceRulesResponse, error)
-	UpdateRule(context.Context, *UpdateServiceRuleRequest) (*UpdateServiceRuleResponse, error)
-	DeleteRule(context.Context, *DeleteServiceRulesRequest) (*DeleteServiceRulesResponse, error)
-	AddTags(context.Context, *AddServiceTagsRequest) (*AddServiceTagsResponse, error)
-	GetTags(context.Context, *GetServiceTagsRequest) (*GetServiceTagsResponse, error)
-	UpdateTag(context.Context, *UpdateServiceTagRequest) (*UpdateServiceTagResponse, error)
-	DeleteTags(context.Context, *DeleteServiceTagsRequest) (*DeleteServiceTagsResponse, error)
-	GetSchemaInfo(context.Context, *GetSchemaRequest) (*GetSchemaResponse, error)
-	GetAllSchemaInfo(context.Context, *GetAllSchemaRequest) (*GetAllSchemaResponse, error)
-	DeleteSchema(context.Context, *DeleteSchemaRequest) (*DeleteSchemaResponse, error)
-	ModifySchema(context.Context, *ModifySchemaRequest) (*ModifySchemaResponse, error)
-	ModifySchemas(context.Context, *ModifySchemasRequest) (*ModifySchemasResponse, error)
-	AddDependenciesForMicroServices(context.Context, *AddDependenciesRequest) (*AddDependenciesResponse, error)
-	CreateDependenciesForMicroServices(context.Context, *CreateDependenciesRequest) (*CreateDependenciesResponse, error)
-	GetProviderDependencies(context.Context, *GetDependenciesRequest) (*GetProDependenciesResponse, error)
-	GetConsumerDependencies(context.Context, *GetDependenciesRequest) (*GetConDependenciesResponse, error)
-	DeleteServices(context.Context, *DelServicesRequest) (*DelServicesResponse, error)
+	Exist(context.Context, *registry.GetExistenceRequest) (*registry.GetExistenceResponse, error)
+	Create(context.Context, *registry.CreateServiceRequest) (*registry.CreateServiceResponse, error)
+	Delete(context.Context, *registry.DeleteServiceRequest) (*registry.DeleteServiceResponse, error)
+	GetOne(context.Context, *registry.GetServiceRequest) (*registry.GetServiceResponse, error)
+	GetServices(context.Context, *registry.GetServicesRequest) (*registry.GetServicesResponse, error)
+	UpdateProperties(context.Context, *registry.UpdateServicePropsRequest) (*registry.UpdateServicePropsResponse, error)
+	AddRule(context.Context, *registry.AddServiceRulesRequest) (*registry.AddServiceRulesResponse, error)
+	GetRule(context.Context, *registry.GetServiceRulesRequest) (*registry.GetServiceRulesResponse, error)
+	UpdateRule(context.Context, *registry.UpdateServiceRuleRequest) (*registry.UpdateServiceRuleResponse, error)
+	DeleteRule(context.Context, *registry.DeleteServiceRulesRequest) (*registry.DeleteServiceRulesResponse, error)
+	AddTags(context.Context, *registry.AddServiceTagsRequest) (*registry.AddServiceTagsResponse, error)
+	GetTags(context.Context, *registry.GetServiceTagsRequest) (*registry.GetServiceTagsResponse, error)
+	UpdateTag(context.Context, *registry.UpdateServiceTagRequest) (*registry.UpdateServiceTagResponse, error)
+	DeleteTags(context.Context, *registry.DeleteServiceTagsRequest) (*registry.DeleteServiceTagsResponse, error)
+	GetSchemaInfo(context.Context, *registry.GetSchemaRequest) (*registry.GetSchemaResponse, error)
+	GetAllSchemaInfo(context.Context, *registry.GetAllSchemaRequest) (*registry.GetAllSchemaResponse, error)
+	DeleteSchema(context.Context, *registry.DeleteSchemaRequest) (*registry.DeleteSchemaResponse, error)
+	ModifySchema(context.Context, *registry.ModifySchemaRequest) (*registry.ModifySchemaResponse, error)
+	ModifySchemas(context.Context, *registry.ModifySchemasRequest) (*registry.ModifySchemasResponse, error)
+	AddDependenciesForMicroServices(context.Context, *registry.AddDependenciesRequest) (*registry.AddDependenciesResponse, error)
+	CreateDependenciesForMicroServices(context.Context, *registry.CreateDependenciesRequest) (*registry.CreateDependenciesResponse, error)
+	GetProviderDependencies(context.Context, *registry.GetDependenciesRequest) (*registry.GetProDependenciesResponse, error)
+	GetConsumerDependencies(context.Context, *registry.GetDependenciesRequest) (*registry.GetConDependenciesResponse, error)
+	DeleteServices(context.Context, *registry.DelServicesRequest) (*registry.DelServicesResponse, error)
 }
 type ServiceInstanceCtrlServer interface {
-	Register(context.Context, *RegisterInstanceRequest) (*RegisterInstanceResponse, error)
-	Unregister(context.Context, *UnregisterInstanceRequest) (*UnregisterInstanceResponse, error)
-	Heartbeat(context.Context, *HeartbeatRequest) (*HeartbeatResponse, error)
-	Find(context.Context, *FindInstancesRequest) (*FindInstancesResponse, error)
-	GetInstances(context.Context, *GetInstancesRequest) (*GetInstancesResponse, error)
-	GetOneInstance(context.Context, *GetOneInstanceRequest) (*GetOneInstanceResponse, error)
-	UpdateStatus(context.Context, *UpdateInstanceStatusRequest) (*UpdateInstanceStatusResponse, error)
-	UpdateInstanceProperties(context.Context, *UpdateInstancePropsRequest) (*UpdateInstancePropsResponse, error)
-	Watch(*WatchInstanceRequest, ServiceInstanceCtrl_WatchServer) error
-	HeartbeatSet(context.Context, *HeartbeatSetRequest) (*HeartbeatSetResponse, error)
+	Register(context.Context, *registry.RegisterInstanceRequest) (*registry.RegisterInstanceResponse, error)
+	Unregister(context.Context, *registry.UnregisterInstanceRequest) (*registry.UnregisterInstanceResponse, error)
+	Heartbeat(context.Context, *registry.HeartbeatRequest) (*registry.HeartbeatResponse, error)
+	Find(context.Context, *registry.FindInstancesRequest) (*registry.FindInstancesResponse, error)
+	GetInstances(context.Context, *registry.GetInstancesRequest) (*registry.GetInstancesResponse, error)
+	GetOneInstance(context.Context, *registry.GetOneInstanceRequest) (*registry.GetOneInstanceResponse, error)
+	UpdateStatus(context.Context, *registry.UpdateInstanceStatusRequest) (*registry.UpdateInstanceStatusResponse, error)
+	UpdateInstanceProperties(context.Context, *registry.UpdateInstancePropsRequest) (*registry.UpdateInstancePropsResponse, error)
+	Watch(*registry.WatchInstanceRequest, ServiceInstanceCtrl_WatchServer) error
+	HeartbeatSet(context.Context, *registry.HeartbeatSetRequest) (*registry.HeartbeatSetResponse, error)
 }
 type ServiceInstanceCtrl_WatchServer interface {
-	Send(*WatchInstanceResponse) error
+	Send(*registry.WatchInstanceResponse) error
 	grpc.ServerStream
 }
 type GovernServiceCtrlServer interface {
-	GetServiceDetail(context.Context, *GetServiceRequest) (*GetServiceDetailResponse, error)
-	GetServicesInfo(context.Context, *GetServicesInfoRequest) (*GetServicesInfoResponse, error)
-	GetApplications(context.Context, *GetAppsRequest) (*GetAppsResponse, error)
+	GetServiceDetail(context.Context, *registry.GetServiceRequest) (*registry.GetServiceDetailResponse, error)
+	GetServicesInfo(context.Context, *registry.GetServicesInfoRequest) (*registry.GetServicesInfoResponse, error)
+	GetApplications(context.Context, *registry.GetAppsRequest) (*registry.GetAppsResponse, error)
 }
diff --git a/server/core/proto/types.go b/server/core/proto/types.go
index 429cd57..c301032 100644
--- a/server/core/proto/types.go
+++ b/server/core/proto/types.go
@@ -21,12 +21,6 @@ import (
 	"github.com/apache/servicecomb-service-center/pkg/util"
 )
 
-type EventType string
-
-type MicroServiceDependency struct {
-	Dependency []*MicroServiceKey `json:"Dependency,omitempty"`
-}
-
 type ServerConfig struct {
 	MaxHeaderBytes int64 `json:"maxHeaderBytes"`
 	MaxBodyBytes   int64 `json:"maxBodyBytes"`
diff --git a/server/notify/listwatcher.go b/server/notify/listwatcher.go
index 5b64a8f..6de175f 100644
--- a/server/notify/listwatcher.go
+++ b/server/notify/listwatcher.go
@@ -22,8 +22,8 @@ import (
 	"github.com/apache/servicecomb-service-center/pkg/gopool"
 	"github.com/apache/servicecomb-service-center/pkg/log"
 	"github.com/apache/servicecomb-service-center/pkg/notify"
+	pb "github.com/apache/servicecomb-service-center/pkg/registry"
 	simple "github.com/apache/servicecomb-service-center/pkg/time"
-	pb "github.com/apache/servicecomb-service-center/server/core/proto"
 	"time"
 )
 
diff --git a/server/notify/stream.go b/server/notify/stream.go
index 25b18a7..f382d19 100644
--- a/server/notify/stream.go
+++ b/server/notify/stream.go
@@ -21,13 +21,14 @@ import (
 	"context"
 	"errors"
 	"github.com/apache/servicecomb-service-center/pkg/log"
+	pb "github.com/apache/servicecomb-service-center/pkg/registry"
 	"github.com/apache/servicecomb-service-center/pkg/util"
 	apt "github.com/apache/servicecomb-service-center/server/core"
-	pb "github.com/apache/servicecomb-service-center/server/core/proto"
+	"github.com/apache/servicecomb-service-center/server/core/proto"
 	"time"
 )
 
-func HandleWatchJob(watcher *InstanceEventListWatcher, stream pb.ServiceInstanceCtrl_WatchServer) (err error) {
+func HandleWatchJob(watcher *InstanceEventListWatcher, stream proto.ServiceInstanceCtrl_WatchServer) (err error) {
 	timer := time.NewTimer(HeartbeatInterval)
 	defer timer.Stop()
 	for {
@@ -66,7 +67,7 @@ func HandleWatchJob(watcher *InstanceEventListWatcher, stream pb.ServiceInstance
 	}
 }
 
-func DoStreamListAndWatch(ctx context.Context, serviceID string, f func() ([]*pb.WatchInstanceResponse, int64), stream pb.ServiceInstanceCtrl_WatchServer) (err error) {
+func DoStreamListAndWatch(ctx context.Context, serviceID string, f func() ([]*pb.WatchInstanceResponse, int64), stream proto.ServiceInstanceCtrl_WatchServer) (err error) {
 	domainProject := util.ParseDomainProject(ctx)
 	domain := util.ParseDomain(ctx)
 	watcher := NewInstanceEventListWatcher(serviceID, apt.GetInstanceRootKey(domainProject)+"/", f)
diff --git a/server/notify/stream_test.go b/server/notify/stream_test.go
index 1c7694f..6d92cb5 100644
--- a/server/notify/stream_test.go
+++ b/server/notify/stream_test.go
@@ -19,8 +19,8 @@ package notify
 import (
 	"context"
 	"github.com/apache/servicecomb-service-center/pkg/log"
+	pb "github.com/apache/servicecomb-service-center/pkg/registry"
 	simple "github.com/apache/servicecomb-service-center/pkg/time"
-	pb "github.com/apache/servicecomb-service-center/server/core/proto"
 	"google.golang.org/grpc"
 	"testing"
 	"time"
diff --git a/server/notify/websocket.go b/server/notify/websocket.go
index ceccf39..d31eb8d 100644
--- a/server/notify/websocket.go
+++ b/server/notify/websocket.go
@@ -22,8 +22,8 @@ import (
 	"encoding/json"
 	"fmt"
 	"github.com/apache/servicecomb-service-center/pkg/log"
+	pb "github.com/apache/servicecomb-service-center/pkg/registry"
 	"github.com/apache/servicecomb-service-center/pkg/util"
-	pb "github.com/apache/servicecomb-service-center/server/core/proto"
 	serviceUtil "github.com/apache/servicecomb-service-center/server/service/util"
 	"github.com/gorilla/websocket"
 	"time"
diff --git a/server/notify/websocket_test.go b/server/notify/websocket_test.go
index 14fa2c5..d9059f9 100644
--- a/server/notify/websocket_test.go
+++ b/server/notify/websocket_test.go
@@ -19,6 +19,7 @@ package notify
 import (
 	"context"
 	"errors"
+	"github.com/apache/servicecomb-service-center/pkg/registry"
 	"github.com/apache/servicecomb-service-center/server/core"
 	"github.com/apache/servicecomb-service-center/server/core/proto"
 	_ "github.com/apache/servicecomb-service-center/server/plugin/discovery/etcd"
@@ -65,12 +66,12 @@ func TestDoWebSocketListAndWatch(t *testing.T) {
 
 	EstablishWebSocketError(conn, errors.New("error"))
 
-	w := NewInstanceEventListWatcher("g", "s", func() (results []*proto.WatchInstanceResponse, rev int64) {
-		results = append(results, &proto.WatchInstanceResponse{
+	w := NewInstanceEventListWatcher("g", "s", func() (results []*registry.WatchInstanceResponse, rev int64) {
+		results = append(results, &registry.WatchInstanceResponse{
 			Response: proto.CreateResponse(proto.Response_SUCCESS, "ok"),
-			Action:   string(proto.EVT_CREATE),
-			Key:      &proto.MicroServiceKey{},
-			Instance: &proto.MicroServiceInstance{},
+			Action:   string(registry.EVT_CREATE),
+			Key:      &registry.MicroServiceKey{},
+			Instance: &registry.MicroServiceInstance{},
 		})
 		return
 	})
@@ -90,7 +91,7 @@ func TestDoWebSocketListAndWatch(t *testing.T) {
 	go func() {
 		DoWebSocketListAndWatch(context.Background(), "", nil, conn)
 
-		w2 := NewInstanceEventListWatcher("g", "s", func() (results []*proto.WatchInstanceResponse, rev int64) {
+		w2 := NewInstanceEventListWatcher("g", "s", func() (results []*registry.WatchInstanceResponse, rev int64) {
 			return
 		})
 		ws2 := &WebSocket{
@@ -109,11 +110,11 @@ func TestDoWebSocketListAndWatch(t *testing.T) {
 	w.OnMessage(nil)
 	w.OnMessage(&InstanceEvent{})
 
-	GetNotifyCenter().Publish(NewInstanceEvent("g", "s", 1, &proto.WatchInstanceResponse{
+	GetNotifyCenter().Publish(NewInstanceEvent("g", "s", 1, &registry.WatchInstanceResponse{
 		Response: proto.CreateResponse(proto.Response_SUCCESS, "ok"),
-		Action:   string(proto.EVT_CREATE),
-		Key:      &proto.MicroServiceKey{},
-		Instance: &proto.MicroServiceInstance{},
+		Action:   string(registry.EVT_CREATE),
+		Key:      &registry.MicroServiceKey{},
+		Instance: &registry.MicroServiceInstance{},
 	}))
 
 	<-time.After(time.Second)
diff --git a/server/plugin/discovery/cacher.go b/server/plugin/discovery/cacher.go
index d929daa..5590c47 100644
--- a/server/plugin/discovery/cacher.go
+++ b/server/plugin/discovery/cacher.go
@@ -17,8 +17,9 @@ package discovery
 
 import (
 	"github.com/apache/servicecomb-service-center/pkg/log"
+	"github.com/apache/servicecomb-service-center/pkg/registry"
+	"github.com/apache/servicecomb-service-center/pkg/types"
 	"github.com/apache/servicecomb-service-center/pkg/util"
-	"github.com/apache/servicecomb-service-center/server/core/proto"
 )
 
 // CommonCacher implements discovery.Cacher.
@@ -36,9 +37,9 @@ func (c *CommonCacher) Cache() CacheReader {
 	return c.cache
 }
 
-func (c *CommonCacher) Notify(action proto.EventType, key string, kv *KeyValue) {
+func (c *CommonCacher) Notify(action types.EventType, key string, kv *KeyValue) {
 	switch action {
-	case proto.EVT_DELETE:
+	case registry.EVT_DELETE:
 		c.cache.Remove(key)
 	default:
 		c.cache.Put(key, kv)
diff --git a/server/plugin/discovery/cacher_test.go b/server/plugin/discovery/cacher_test.go
index 8db81c6..97426d9 100644
--- a/server/plugin/discovery/cacher_test.go
+++ b/server/plugin/discovery/cacher_test.go
@@ -16,7 +16,7 @@
 package discovery
 
 import (
-	"github.com/apache/servicecomb-service-center/server/core/proto"
+	"github.com/apache/servicecomb-service-center/pkg/registry"
 	"testing"
 )
 
@@ -41,19 +41,19 @@ func TestNewCommonCacher(t *testing.T) {
 		t.Fatalf("TestNewCommonCacher failed")
 	}
 
-	cacher.Notify(proto.EVT_CREATE, "/a", &KeyValue{Version: 1})
-	if e.Type == proto.EVT_CREATE || cache.Get("/a").Version != 1 {
+	cacher.Notify(registry.EVT_CREATE, "/a", &KeyValue{Version: 1})
+	if e.Type == registry.EVT_CREATE || cache.Get("/a").Version != 1 {
 		t.Fatalf("TestNewCommonCacher failed")
 	}
 	cfg.WithEventFunc(func(evt KvEvent) {
 		e = evt
 	})
-	cacher.Notify(proto.EVT_CREATE, "/a", &KeyValue{Version: 1})
-	if e.Type != proto.EVT_CREATE || cache.Get("/a").Version != 1 {
+	cacher.Notify(registry.EVT_CREATE, "/a", &KeyValue{Version: 1})
+	if e.Type != registry.EVT_CREATE || cache.Get("/a").Version != 1 {
 		t.Fatalf("TestNewCommonCacher failed")
 	}
-	cacher.Notify(proto.EVT_DELETE, "/a", &KeyValue{Version: 1})
-	if e.Type != proto.EVT_DELETE || cache.Get("/a") != nil {
+	cacher.Notify(registry.EVT_DELETE, "/a", &KeyValue{Version: 1})
+	if e.Type != registry.EVT_DELETE || cache.Get("/a") != nil {
 		t.Fatalf("TestNewCommonCacher failed")
 	}
 	cacher.Stop()
diff --git a/server/plugin/discovery/config.go b/server/plugin/discovery/config.go
index 5590861..b14cbab 100644
--- a/server/plugin/discovery/config.go
+++ b/server/plugin/discovery/config.go
@@ -18,7 +18,7 @@ package discovery
 
 import (
 	"fmt"
-	pb "github.com/apache/servicecomb-service-center/server/core/proto"
+	"github.com/apache/servicecomb-service-center/server/core/proto"
 	"time"
 )
 
@@ -30,7 +30,7 @@ type Config struct {
 	Period       time.Duration
 	DeferHandler DeferHandler
 	OnEvent      KvEventFunc
-	Parser       pb.Parser
+	Parser       proto.Parser
 }
 
 func (cfg *Config) String() string {
@@ -80,7 +80,7 @@ func (cfg *Config) AppendEventFunc(f KvEventFunc) *Config {
 	return cfg
 }
 
-func (cfg *Config) WithParser(parser pb.Parser) *Config {
+func (cfg *Config) WithParser(parser proto.Parser) *Config {
 	cfg.Parser = parser
 	return cfg
 }
@@ -91,6 +91,6 @@ func Configure() *Config {
 		Timeout:  DefaultTimeout,
 		Period:   time.Second,
 		InitSize: DefaultCacheInitSize,
-		Parser:   pb.BytesParser,
+		Parser:   proto.BytesParser,
 	}
 }
diff --git a/server/plugin/discovery/config_test.go b/server/plugin/discovery/config_test.go
index 798f315..d1ecc53 100644
--- a/server/plugin/discovery/config_test.go
+++ b/server/plugin/discovery/config_test.go
@@ -16,7 +16,7 @@
 package discovery
 
 import (
-	pb "github.com/apache/servicecomb-service-center/server/core/proto"
+	"github.com/apache/servicecomb-service-center/server/core/proto"
 	"testing"
 	"time"
 )
@@ -70,8 +70,8 @@ func TestConfigure(t *testing.T) {
 	if i != 3 {
 		t.Fatalf("TestConfigure failed")
 	}
-	cfg.WithParser(pb.MapParser)
-	if cfg.Parser != pb.MapParser {
+	cfg.WithParser(proto.MapParser)
+	if cfg.Parser != proto.MapParser {
 		t.Fatalf("TestConfigure failed")
 	}
 	if cfg.String() != "{key: /test, timeout: 2s, period: 3s}" {
diff --git a/server/plugin/discovery/etcd/cacher_kv.go b/server/plugin/discovery/etcd/cacher_kv.go
index 8b0f23a..eaa302b 100644
--- a/server/plugin/discovery/etcd/cacher_kv.go
+++ b/server/plugin/discovery/etcd/cacher_kv.go
@@ -23,10 +23,10 @@ import (
 	"github.com/apache/servicecomb-service-center/pkg/backoff"
 	"github.com/apache/servicecomb-service-center/pkg/gopool"
 	"github.com/apache/servicecomb-service-center/pkg/log"
+	rmodel "github.com/apache/servicecomb-service-center/pkg/registry"
 	"github.com/apache/servicecomb-service-center/pkg/util"
 	"github.com/apache/servicecomb-service-center/server/core"
 	"github.com/apache/servicecomb-service-center/server/core/backend"
-	"github.com/apache/servicecomb-service-center/server/core/proto"
 	"github.com/apache/servicecomb-service-center/server/plugin/discovery"
 	"github.com/apache/servicecomb-service-center/server/plugin/registry"
 	"github.com/coreos/etcd/mvcc/mvccpb"
@@ -163,14 +163,14 @@ func (c *KvCacher) handleWatcher(watcher Watcher) error {
 		rev := resp.Revision
 		evts := make([]discovery.KvEvent, 0, len(resp.Kvs))
 		for _, kv := range resp.Kvs {
-			evt := discovery.NewKvEvent(proto.EVT_CREATE, nil, kv.ModRevision)
+			evt := discovery.NewKvEvent(rmodel.EVT_CREATE, nil, kv.ModRevision)
 			switch {
 			case resp.Action == registry.Put && kv.Version == 1:
-				evt.Type, evt.KV = proto.EVT_CREATE, c.doParse(kv)
+				evt.Type, evt.KV = rmodel.EVT_CREATE, c.doParse(kv)
 			case resp.Action == registry.Put:
-				evt.Type, evt.KV = proto.EVT_UPDATE, c.doParse(kv)
+				evt.Type, evt.KV = rmodel.EVT_UPDATE, c.doParse(kv)
 			case resp.Action == registry.Delete:
-				evt.Type = proto.EVT_DELETE
+				evt.Type = rmodel.EVT_DELETE
 				if kv.Value == nil {
 					// it will happen in embed mode, and then need to get the cache value not unmarshal
 					evt.KV = c.cache.Get(util.BytesToStringWithNoCopy(kv.Key))
@@ -284,7 +284,7 @@ func (c *KvCacher) filterDelete(newStore map[string]*mvccpb.KeyValue,
 			i = 0
 		}
 
-		block[i] = discovery.NewKvEvent(proto.EVT_DELETE, v, rev)
+		block[i] = discovery.NewKvEvent(rmodel.EVT_DELETE, v, rev)
 		i++
 		return
 	})
@@ -311,7 +311,7 @@ func (c *KvCacher) filterCreateOrUpdate(newStore map[string]*mvccpb.KeyValue,
 			}
 
 			if kv := c.doParse(v); kv != nil {
-				block[i] = discovery.NewKvEvent(proto.EVT_CREATE, kv, rev)
+				block[i] = discovery.NewKvEvent(rmodel.EVT_CREATE, kv, rev)
 				i++
 			}
 			continue
@@ -328,7 +328,7 @@ func (c *KvCacher) filterCreateOrUpdate(newStore map[string]*mvccpb.KeyValue,
 		}
 
 		if kv := c.doParse(v); kv != nil {
-			block[i] = discovery.NewKvEvent(proto.EVT_UPDATE, kv, rev)
+			block[i] = discovery.NewKvEvent(rmodel.EVT_UPDATE, kv, rev)
 			i++
 		}
 	}
@@ -411,23 +411,23 @@ func (c *KvCacher) buildCache(evts []discovery.KvEvent) {
 		ok := prevKv != nil
 
 		switch evt.Type {
-		case proto.EVT_CREATE, proto.EVT_UPDATE:
+		case rmodel.EVT_CREATE, rmodel.EVT_UPDATE:
 			switch {
 			case init:
-				evt.Type = proto.EVT_INIT
-			case !ok && evt.Type != proto.EVT_CREATE:
+				evt.Type = rmodel.EVT_INIT
+			case !ok && evt.Type != rmodel.EVT_CREATE:
 				log.Warnf("unexpected %s event! it should be %s key %s",
-					evt.Type, proto.EVT_CREATE, key)
-				evt.Type = proto.EVT_CREATE
-			case ok && evt.Type != proto.EVT_UPDATE:
+					evt.Type, rmodel.EVT_CREATE, key)
+				evt.Type = rmodel.EVT_CREATE
+			case ok && evt.Type != rmodel.EVT_UPDATE:
 				log.Warnf("unexpected %s event! it should be %s key %s",
-					evt.Type, proto.EVT_UPDATE, key)
-				evt.Type = proto.EVT_UPDATE
+					evt.Type, rmodel.EVT_UPDATE, key)
+				evt.Type = rmodel.EVT_UPDATE
 			}
 
 			c.cache.Put(key, evt.KV)
 			evts[i] = evt
-		case proto.EVT_DELETE:
+		case rmodel.EVT_DELETE:
 			if !ok {
 				log.Warnf("unexpected %s event! key %s does not cache",
 					evt.Type, key)
diff --git a/server/plugin/discovery/etcd/cacher_kv_test.go b/server/plugin/discovery/etcd/cacher_kv_test.go
index ec9750c..4819a30 100644
--- a/server/plugin/discovery/etcd/cacher_kv_test.go
+++ b/server/plugin/discovery/etcd/cacher_kv_test.go
@@ -21,8 +21,9 @@ import (
 	"encoding/json"
 	"fmt"
 	"github.com/apache/servicecomb-service-center/pkg/gopool"
+	pb "github.com/apache/servicecomb-service-center/pkg/registry"
 	"github.com/apache/servicecomb-service-center/pkg/util"
-	pb "github.com/apache/servicecomb-service-center/server/core/proto"
+	"github.com/apache/servicecomb-service-center/server/core/proto"
 	"github.com/apache/servicecomb-service-center/server/plugin/discovery"
 	"github.com/apache/servicecomb-service-center/server/plugin/registry"
 	"github.com/coreos/etcd/mvcc/mvccpb"
@@ -288,7 +289,7 @@ func TestNewKvCacher(t *testing.T) {
 	lw.Bus <- nil
 	evt.KV = nil
 	old := *cr.Cfg
-	cr.Cfg.WithParser(pb.MapParser)
+	cr.Cfg.WithParser(proto.MapParser)
 	cr.refresh(ctx)
 	// check event
 	if evt.KV != nil {
@@ -378,7 +379,7 @@ func BenchmarkFilter(b *testing.B) {
 	}
 	v, _ := json.Marshal(inst)
 
-	cfg := discovery.Configure().WithParser(pb.InstanceParser)
+	cfg := discovery.Configure().WithParser(proto.InstanceParser)
 
 	n := 300 * 1000 // 30w
 	cache := discovery.NewKvCache("test", cfg)
diff --git a/server/plugin/discovery/etcd/common.go b/server/plugin/discovery/etcd/common.go
index 030784c..b0c1a04 100644
--- a/server/plugin/discovery/etcd/common.go
+++ b/server/plugin/discovery/etcd/common.go
@@ -16,7 +16,7 @@
 package etcd
 
 import (
-	pb "github.com/apache/servicecomb-service-center/server/core/proto"
+	"github.com/apache/servicecomb-service-center/server/core/proto"
 	"github.com/apache/servicecomb-service-center/server/plugin/discovery"
 	"github.com/coreos/etcd/mvcc/mvccpb"
 	"time"
@@ -38,7 +38,7 @@ func init() {
 	close(closedCh)
 }
 
-func FromEtcdKeyValue(dist *discovery.KeyValue, src *mvccpb.KeyValue, parser pb.Parser) (err error) {
+func FromEtcdKeyValue(dist *discovery.KeyValue, src *mvccpb.KeyValue, parser proto.Parser) (err error) {
 	dist.Key = src.Key
 	dist.Version = src.Version
 	dist.CreateRevision = src.CreateRevision
diff --git a/server/plugin/discovery/etcd/indexer_etcd.go b/server/plugin/discovery/etcd/indexer_etcd.go
index 3e6d3a9..3f5c8ff 100644
--- a/server/plugin/discovery/etcd/indexer_etcd.go
+++ b/server/plugin/discovery/etcd/indexer_etcd.go
@@ -18,12 +18,12 @@ package etcd
 
 import (
 	"fmt"
+	"github.com/apache/servicecomb-service-center/server/core/proto"
 	"strings"
 
 	"github.com/apache/servicecomb-service-center/pkg/log"
 	"github.com/apache/servicecomb-service-center/pkg/util"
 	"github.com/apache/servicecomb-service-center/server/core/backend"
-	pb "github.com/apache/servicecomb-service-center/server/core/proto"
 	"github.com/apache/servicecomb-service-center/server/plugin/discovery"
 	"github.com/apache/servicecomb-service-center/server/plugin/registry"
 
@@ -34,7 +34,7 @@ import (
 // Indexer searches data from etcd server.
 type Indexer struct {
 	Client registry.Registry
-	Parser pb.Parser
+	Parser proto.Parser
 	Root   string
 }
 
@@ -88,6 +88,6 @@ func (i *Indexer) Creditable() bool {
 	return true
 }
 
-func NewEtcdIndexer(root string, p pb.Parser) (indexer *Indexer) {
+func NewEtcdIndexer(root string, p proto.Parser) (indexer *Indexer) {
 	return &Indexer{Client: backend.Registry(), Parser: p, Root: root}
 }
diff --git a/server/plugin/discovery/etcd/indexer_test.go b/server/plugin/discovery/etcd/indexer_test.go
index dd100fe..57cd156 100644
--- a/server/plugin/discovery/etcd/indexer_test.go
+++ b/server/plugin/discovery/etcd/indexer_test.go
@@ -18,7 +18,7 @@ package etcd
 
 import (
 	"context"
-	pb "github.com/apache/servicecomb-service-center/server/core/proto"
+	"github.com/apache/servicecomb-service-center/server/core/proto"
 	"github.com/apache/servicecomb-service-center/server/plugin/discovery"
 	"github.com/apache/servicecomb-service-center/server/plugin/registry"
 	"github.com/coreos/etcd/mvcc/mvccpb"
@@ -28,7 +28,7 @@ import (
 func TestEtcdIndexer_Search(t *testing.T) {
 	data := &registry.PluginResponse{Revision: 1}
 	c := &mockRegistry{}
-	i := &Indexer{Client: c, Root: "/", Parser: pb.BytesParser}
+	i := &Indexer{Client: c, Root: "/", Parser: proto.BytesParser}
 
 	// case: key does not contain prefix
 	resp, err := i.Search(context.Background(), registry.WithStrKey("a"))
@@ -53,7 +53,7 @@ func TestEtcdIndexer_Search(t *testing.T) {
 	data.Count = 2
 	data.Kvs = []*mvccpb.KeyValue{{Key: []byte("/a/b"), Value: []byte("abc")}, {Key: []byte("/a/c"), Value: []byte("{}")}}
 	old := i.Parser
-	i.Parser = pb.MapParser
+	i.Parser = proto.MapParser
 	c.Response = data
 	resp, err = i.Search(context.Background(), registry.WithStrKey("/a"))
 	if err != nil || resp == nil || resp.Count != 2 || len(resp.Kvs) != 1 {
diff --git a/server/plugin/discovery/k8s/adaptor/cacher_index.go b/server/plugin/discovery/k8s/adaptor/cacher_index.go
index d1a2852..36de0b4 100644
--- a/server/plugin/discovery/k8s/adaptor/cacher_index.go
+++ b/server/plugin/discovery/k8s/adaptor/cacher_index.go
@@ -16,8 +16,8 @@
 package adaptor
 
 import (
+	"github.com/apache/servicecomb-service-center/pkg/registry"
 	"github.com/apache/servicecomb-service-center/server/core"
-	pb "github.com/apache/servicecomb-service-center/server/core/proto"
 	"github.com/apache/servicecomb-service-center/server/plugin/discovery"
 	"k8s.io/api/core/v1"
 )
@@ -36,17 +36,17 @@ func (c *ServiceIndexCacher) onServiceEvent(evt K8sEvent) {
 	if !ShouldRegisterService(svc) {
 		kv := c.Cache().Get(indexKey)
 		if kv != nil {
-			c.Notify(pb.EVT_DELETE, indexKey, kv)
+			c.Notify(registry.EVT_DELETE, indexKey, kv)
 		}
 		return
 	}
 
 	switch evt.EventType {
-	case pb.EVT_CREATE:
+	case registry.EVT_CREATE:
 		kv := AsKeyValue(indexKey, serviceID, svc.ResourceVersion)
 		c.Notify(evt.EventType, indexKey, kv)
-	case pb.EVT_UPDATE:
-	case pb.EVT_DELETE:
+	case registry.EVT_UPDATE:
+	case registry.EVT_DELETE:
 		kv := c.Cache().Get(indexKey)
 		if kv != nil {
 			c.Notify(evt.EventType, indexKey, kv)
diff --git a/server/plugin/discovery/k8s/adaptor/cacher_instance.go b/server/plugin/discovery/k8s/adaptor/cacher_instance.go
index f5cf037..8a502d4 100644
--- a/server/plugin/discovery/k8s/adaptor/cacher_instance.go
+++ b/server/plugin/discovery/k8s/adaptor/cacher_instance.go
@@ -16,9 +16,10 @@
 package adaptor
 
 import (
+	pb "github.com/apache/servicecomb-service-center/pkg/registry"
 	"github.com/apache/servicecomb-service-center/pkg/util"
 	"github.com/apache/servicecomb-service-center/server/core"
-	pb "github.com/apache/servicecomb-service-center/server/core/proto"
+	"github.com/apache/servicecomb-service-center/server/core/proto"
 	"github.com/apache/servicecomb-service-center/server/plugin/discovery"
 	"k8s.io/api/core/v1"
 	"reflect"
@@ -109,7 +110,7 @@ func (c *InstanceCacher) onEndpointsEvent(evt K8sEvent) {
 					Status:         pb.MSI_UP,
 					DataCenterInfo: &pb.DataCenterInfo{},
 					Timestamp:      strconv.FormatInt(pod.CreationTimestamp.Unix(), 10),
-					Version:        getLabel(svc.Labels, LabelVersion, pb.VERSION),
+					Version:        getLabel(svc.Labels, LabelVersion, proto.VERSION),
 					Properties: map[string]string{
 						PropNodeIP: pod.Status.HostIP,
 					},
diff --git a/server/plugin/discovery/k8s/adaptor/cacher_service.go b/server/plugin/discovery/k8s/adaptor/cacher_service.go
index 8d0f063..6d1bd5b 100644
--- a/server/plugin/discovery/k8s/adaptor/cacher_service.go
+++ b/server/plugin/discovery/k8s/adaptor/cacher_service.go
@@ -16,8 +16,8 @@
 package adaptor
 
 import (
+	pb "github.com/apache/servicecomb-service-center/pkg/registry"
 	"github.com/apache/servicecomb-service-center/server/core"
-	pb "github.com/apache/servicecomb-service-center/server/core/proto"
 	"github.com/apache/servicecomb-service-center/server/plugin/discovery"
 	"k8s.io/api/core/v1"
 )
diff --git a/server/plugin/discovery/k8s/adaptor/convertor.go b/server/plugin/discovery/k8s/adaptor/convertor.go
index 5bec7a7..95be1e1 100644
--- a/server/plugin/discovery/k8s/adaptor/convertor.go
+++ b/server/plugin/discovery/k8s/adaptor/convertor.go
@@ -16,8 +16,9 @@
 package adaptor
 
 import (
+	pb "github.com/apache/servicecomb-service-center/pkg/registry"
 	"github.com/apache/servicecomb-service-center/pkg/util"
-	pb "github.com/apache/servicecomb-service-center/server/core/proto"
+	"github.com/apache/servicecomb-service-center/server/core/proto"
 	"github.com/apache/servicecomb-service-center/server/plugin/discovery"
 	"k8s.io/api/core/v1"
 	"net/url"
@@ -81,9 +82,9 @@ func generateServiceKey(domainProject string, svc *v1.Service) *pb.MicroServiceK
 	return &pb.MicroServiceKey{
 		Tenant:      domainProject,
 		Environment: getLabel(svc.Labels, LabelEnvironment, ""),
-		AppId:       getLabel(svc.Labels, LabelApp, pb.APP_ID),
+		AppId:       getLabel(svc.Labels, LabelApp, proto.APP_ID),
 		ServiceName: svc.Name,
-		Version:     getLabel(svc.Labels, LabelVersion, pb.VERSION),
+		Version:     getLabel(svc.Labels, LabelVersion, proto.VERSION),
 	}
 }
 
@@ -91,9 +92,9 @@ func FromK8sService(domainProject string, svc *v1.Service) (ms *pb.MicroService)
 	ms = &pb.MicroService{
 		ServiceId:   generateServiceID(domainProject, svc),
 		Environment: getLabel(svc.Labels, LabelEnvironment, ""),
-		AppId:       getLabel(svc.Labels, LabelApp, pb.APP_ID),
+		AppId:       getLabel(svc.Labels, LabelApp, proto.APP_ID),
 		ServiceName: svc.Name,
-		Version:     getLabel(svc.Labels, LabelVersion, pb.VERSION),
+		Version:     getLabel(svc.Labels, LabelVersion, proto.VERSION),
 		Level:       "BACK",
 		Status:      pb.MS_UP,
 		Framework: &pb.FrameWorkProperty{
diff --git a/server/plugin/discovery/k8s/adaptor/kube_client.go b/server/plugin/discovery/k8s/adaptor/kube_client.go
index bad7d33..502cc30 100644
--- a/server/plugin/discovery/k8s/adaptor/kube_client.go
+++ b/server/plugin/discovery/k8s/adaptor/kube_client.go
@@ -19,9 +19,9 @@ import (
 	"context"
 	"github.com/apache/servicecomb-service-center/pkg/gopool"
 	"github.com/apache/servicecomb-service-center/pkg/log"
+	pb "github.com/apache/servicecomb-service-center/pkg/registry"
 	"github.com/apache/servicecomb-service-center/pkg/util"
 	"github.com/apache/servicecomb-service-center/server/alarm"
-	pb "github.com/apache/servicecomb-service-center/server/core/proto"
 	"k8s.io/api/core/v1"
 	"k8s.io/client-go/informers"
 	"k8s.io/client-go/kubernetes"
diff --git a/server/plugin/discovery/k8s/adaptor/listwatcher.go b/server/plugin/discovery/k8s/adaptor/listwatcher.go
index 19df74c..520d400 100644
--- a/server/plugin/discovery/k8s/adaptor/listwatcher.go
+++ b/server/plugin/discovery/k8s/adaptor/listwatcher.go
@@ -18,13 +18,14 @@ package adaptor
 import (
 	"context"
 	"github.com/apache/servicecomb-service-center/pkg/queue"
-	pb "github.com/apache/servicecomb-service-center/server/core/proto"
+	pb "github.com/apache/servicecomb-service-center/pkg/registry"
+	"github.com/apache/servicecomb-service-center/pkg/types"
 	"k8s.io/client-go/tools/cache"
 	"reflect"
 )
 
 type K8sEvent struct {
-	EventType  pb.EventType
+	EventType  types.EventType
 	Object     interface{}
 	PrevObject interface{}
 }
diff --git a/server/plugin/discovery/servicecenter/aggregate.go b/server/plugin/discovery/servicecenter/aggregate.go
index 55d087a..3ccbd82 100644
--- a/server/plugin/discovery/servicecenter/aggregate.go
+++ b/server/plugin/discovery/servicecenter/aggregate.go
@@ -18,7 +18,7 @@ package servicecenter
 import (
 	"context"
 	"crypto/tls"
-	"github.com/apache/servicecomb-service-center/pkg/client/sc"
+	client2 "github.com/apache/servicecomb-service-center/client"
 	"github.com/apache/servicecomb-service-center/pkg/log"
 	"github.com/apache/servicecomb-service-center/pkg/model"
 	"github.com/apache/servicecomb-service-center/pkg/util"
@@ -37,7 +37,7 @@ var (
 	clientTLS  *tls.Config
 )
 
-type SCClientAggregate []*sc.Client
+type SCClientAggregate []*client2.Client
 
 func getClientTLS() (*tls.Config, error) {
 	if clientTLS != nil {
@@ -85,9 +85,10 @@ func (c *SCClientAggregate) cacheAppend(name string, setter model.Setter, getter
 }
 
 func (c *SCClientAggregate) GetSchemasByServiceID(ctx context.Context, domainProject, serviceID string) (*discovery.Response, *scerr.Error) {
+	dp := strings.Split(domainProject, "/")
 	var response discovery.Response
 	for _, client := range *c {
-		schemas, err := client.GetSchemasByServiceID(ctx, domainProject, serviceID)
+		schemas, err := client.GetSchemasByServiceID(ctx, dp[0], dp[1], serviceID)
 		if err != nil && err.InternalError() {
 			log.Errorf(err, "get schema by serviceID[%s/%s] failed", domainProject, serviceID)
 			continue
@@ -110,9 +111,10 @@ func (c *SCClientAggregate) GetSchemasByServiceID(ctx context.Context, domainPro
 }
 
 func (c *SCClientAggregate) GetSchemaBySchemaID(ctx context.Context, domainProject, serviceID, schemaID string) (*discovery.Response, *scerr.Error) {
+	dp := strings.Split(domainProject, "/")
 	var response discovery.Response
 	for _, client := range *c {
-		schema, err := client.GetSchemaBySchemaID(ctx, domainProject, serviceID, schemaID)
+		schema, err := client.GetSchemaBySchemaID(ctx, dp[0], dp[1], serviceID, schemaID)
 		if err != nil && err.InternalError() {
 			log.Errorf(err, "get schema by serviceID[%s/%s] failed", domainProject, serviceID)
 			continue
@@ -132,12 +134,12 @@ func (c *SCClientAggregate) GetSchemaBySchemaID(ctx context.Context, domainProje
 	return &response, nil
 }
 
-func (c *SCClientAggregate) GetInstancesByServiceID(ctx context.Context, domainProject, providerID, consumerID string) (*discovery.Response, *scerr.Error) {
+func (c *SCClientAggregate) GetInstancesByServiceID(ctx context.Context, domain, project, providerID, consumerID string) (*discovery.Response, *scerr.Error) {
 	var response discovery.Response
 	for _, client := range *c {
-		insts, err := client.GetInstancesByServiceID(ctx, domainProject, providerID, consumerID)
+		insts, err := client.GetInstancesByServiceID(ctx, domain, project, providerID, consumerID)
 		if err != nil && err.InternalError() {
-			log.Errorf(err, "consumer[%s] get provider[%s/%s] instances failed", consumerID, domainProject, providerID)
+			log.Errorf(err, "consumer[%s] get provider[%s/%s/%s] instances failed", consumerID, domain, project, providerID)
 			continue
 		}
 		if insts == nil {
@@ -146,7 +148,7 @@ func (c *SCClientAggregate) GetInstancesByServiceID(ctx context.Context, domainP
 		response.Count = int64(len(insts))
 		for _, instance := range insts {
 			response.Kvs = append(response.Kvs, &discovery.KeyValue{
-				Key:         []byte(core.GenerateInstanceKey(domainProject, providerID, instance.InstanceId)),
+				Key:         []byte(core.GenerateInstanceKey(domain+"/"+project, providerID, instance.InstanceId)),
 				Value:       instance,
 				ModRevision: 0,
 				ClusterName: client.Cfg.Name,
@@ -156,12 +158,12 @@ func (c *SCClientAggregate) GetInstancesByServiceID(ctx context.Context, domainP
 	return &response, nil
 }
 
-func (c *SCClientAggregate) GetInstanceByInstanceID(ctx context.Context, domainProject, providerID, instanceID, consumerID string) (*discovery.Response, *scerr.Error) {
+func (c *SCClientAggregate) GetInstanceByInstanceID(ctx context.Context, domain, project, providerID, instanceID, consumerID string) (*discovery.Response, *scerr.Error) {
 	var response discovery.Response
 	for _, client := range *c {
-		instance, err := client.GetInstanceByInstanceID(ctx, domainProject, providerID, instanceID, consumerID)
+		instance, err := client.GetInstanceByInstanceID(ctx, domain, project, providerID, instanceID, consumerID)
 		if err != nil && err.InternalError() {
-			log.Errorf(err, "consumer[%s] get provider[%s/%s] instances failed", consumerID, domainProject, providerID)
+			log.Errorf(err, "consumer[%s] get provider[%s/%s/%s] instances failed", consumerID, domain, project, providerID)
 			continue
 		}
 		if instance == nil {
@@ -169,7 +171,7 @@ func (c *SCClientAggregate) GetInstanceByInstanceID(ctx context.Context, domainP
 		}
 		response.Count = 1
 		response.Kvs = append(response.Kvs, &discovery.KeyValue{
-			Key:         []byte(core.GenerateInstanceKey(domainProject, providerID, instance.InstanceId)),
+			Key:         []byte(core.GenerateInstanceKey(domain+"/"+project, providerID, instance.InstanceId)),
 			Value:       instance,
 			ModRevision: 0,
 			ClusterName: client.Cfg.Name,
@@ -187,7 +189,7 @@ func GetOrCreateSCClient() *SCClientAggregate {
 			if len(name) == 0 || name == registry.Configuration().ClusterName {
 				continue
 			}
-			client, err := sc.NewSCClient(sc.Config{Name: name, Endpoints: endpoints})
+			client, err := client2.NewSCClient(client2.Config{Name: name, Endpoints: endpoints})
 			if err != nil {
 				log.Errorf(err, "new service center[%s]%v client failed", name, endpoints)
 				continue
diff --git a/server/plugin/discovery/servicecenter/indexer.go b/server/plugin/discovery/servicecenter/indexer.go
index f17374b..f7f67ec 100644
--- a/server/plugin/discovery/servicecenter/indexer.go
+++ b/server/plugin/discovery/servicecenter/indexer.go
@@ -16,7 +16,7 @@
 package servicecenter
 
 import (
-	"github.com/apache/servicecomb-service-center/pkg/client/sc"
+	"github.com/apache/servicecomb-service-center/client"
 	"github.com/apache/servicecomb-service-center/pkg/log"
 	"github.com/apache/servicecomb-service-center/pkg/util"
 	"github.com/apache/servicecomb-service-center/server/core"
@@ -24,6 +24,7 @@ import (
 	"github.com/apache/servicecomb-service-center/server/plugin/discovery"
 	"github.com/apache/servicecomb-service-center/server/plugin/registry"
 	scerr "github.com/apache/servicecomb-service-center/server/scerror"
+	"strings"
 
 	"context"
 )
@@ -60,7 +61,7 @@ func (i *ClusterIndexer) search(ctx context.Context, opts ...registry.PluginOpOp
 	op := registry.OpGet(opts...)
 	key := util.BytesToStringWithNoCopy(op.Key)
 
-	ctx = context.WithValue(ctx, sc.QueryGlobal, "0")
+	ctx = context.WithValue(ctx, client.QueryGlobal, "0")
 	switch i.Type {
 	case backend.SCHEMA:
 		r, err = i.searchSchemas(ctx, op)
@@ -96,10 +97,11 @@ func (i *ClusterIndexer) searchInstances(ctx context.Context, op registry.Plugin
 		scErr *scerr.Error
 	)
 	serviceID, instanceID, domainProject := core.GetInfoFromInstKV(op.Key)
+	dp := strings.Split(domainProject, "/")
 	if op.Prefix && len(instanceID) == 0 {
-		resp, scErr = i.Client.GetInstancesByServiceID(ctx, domainProject, serviceID, "")
+		resp, scErr = i.Client.GetInstancesByServiceID(ctx, dp[0], dp[1], serviceID, "")
 	} else {
-		resp, scErr = i.Client.GetInstanceByInstanceID(ctx, domainProject, serviceID, instanceID, "")
+		resp, scErr = i.Client.GetInstanceByInstanceID(ctx, dp[0], dp[1], serviceID, instanceID, "")
 	}
 	if scErr != nil {
 		return nil, scErr
diff --git a/server/plugin/discovery/servicecenter/syncer.go b/server/plugin/discovery/servicecenter/syncer.go
index 3aa4b6a..769968b 100644
--- a/server/plugin/discovery/servicecenter/syncer.go
+++ b/server/plugin/discovery/servicecenter/syncer.go
@@ -18,6 +18,7 @@ package servicecenter
 import (
 	"fmt"
 	"github.com/apache/servicecomb-service-center/pkg/model"
+	proto "github.com/apache/servicecomb-service-center/pkg/registry"
 	"sync"
 	"time"
 
@@ -27,7 +28,6 @@ import (
 	"github.com/apache/servicecomb-service-center/server/alarm"
 	"github.com/apache/servicecomb-service-center/server/core"
 	"github.com/apache/servicecomb-service-center/server/core/backend"
-	pb "github.com/apache/servicecomb-service-center/server/core/proto"
 	"github.com/apache/servicecomb-service-center/server/plugin/discovery"
 	"github.com/apache/servicecomb-service-center/server/plugin/registry"
 
@@ -139,18 +139,18 @@ func (c *Syncer) checkWithConflictHandleFunc(local *Cacher, remote model.Getter,
 		case old == nil:
 			newKv.Version = 1
 			newKv.CreateRevision = v.Rev
-			local.Notify(pb.EVT_CREATE, v.Key, newKv)
+			local.Notify(proto.EVT_CREATE, v.Key, newKv)
 		case old.ModRevision != v.Rev:
 			// if connect to some cluster failed, then skip to notify changes
 			// of these clusters to prevent publish the wrong changes events of kvs.
 			if err, ok := skipClusters[old.ClusterName]; ok {
 				log.Errorf(err, "cluster[%s] temporarily unavailable, skip cluster[%s] event %s %s",
-					old.ClusterName, v.ClusterName, pb.EVT_UPDATE, v.Key)
+					old.ClusterName, v.ClusterName, proto.EVT_UPDATE, v.Key)
 				break
 			}
 			newKv.Version = 1 + old.Version
 			newKv.CreateRevision = old.CreateRevision
-			local.Notify(pb.EVT_UPDATE, v.Key, newKv)
+			local.Notify(proto.EVT_UPDATE, v.Key, newKv)
 		}
 		return true
 	})
@@ -168,7 +168,7 @@ func (c *Syncer) checkWithConflictHandleFunc(local *Cacher, remote model.Getter,
 		if !exist {
 			if err, ok := skipClusters[v.ClusterName]; ok {
 				log.Errorf(err, "cluster[%s] temporarily unavailable, skip event %s %s",
-					v.ClusterName, pb.EVT_DELETE, v.Key)
+					v.ClusterName, proto.EVT_DELETE, v.Key)
 				return true
 			}
 			deletes = append(deletes, v)
@@ -176,7 +176,7 @@ func (c *Syncer) checkWithConflictHandleFunc(local *Cacher, remote model.Getter,
 		return true
 	})
 	for _, v := range deletes {
-		local.Notify(pb.EVT_DELETE, util.BytesToStringWithNoCopy(v.Key), v)
+		local.Notify(proto.EVT_DELETE, util.BytesToStringWithNoCopy(v.Key), v)
 	}
 }
 
diff --git a/server/plugin/discovery/servicecenter/syncer_test.go b/server/plugin/discovery/servicecenter/syncer_test.go
index 27c345f..2b116f3 100644
--- a/server/plugin/discovery/servicecenter/syncer_test.go
+++ b/server/plugin/discovery/servicecenter/syncer_test.go
@@ -19,7 +19,7 @@ import (
 	"fmt"
 	"github.com/apache/servicecomb-service-center/pkg/log"
 	model2 "github.com/apache/servicecomb-service-center/pkg/model"
-	"github.com/apache/servicecomb-service-center/server/core/proto"
+	registry2 "github.com/apache/servicecomb-service-center/pkg/registry"
 	"github.com/apache/servicecomb-service-center/server/plugin/discovery"
 	"github.com/apache/servicecomb-service-center/server/plugin/registry"
 	"testing"
@@ -42,7 +42,7 @@ func TestClusterIndexer_Sync(t *testing.T) {
 
 	// case: CREATE
 	cfg.WithEventFunc(func(evt discovery.KvEvent) {
-		if evt.Type != proto.EVT_CREATE {
+		if evt.Type != registry2.EVT_CREATE {
 			t.Fatalf("TestClusterIndexer_Sync failed, %v", evt)
 		}
 		fmt.Println(evt)
@@ -55,7 +55,7 @@ func TestClusterIndexer_Sync(t *testing.T) {
 
 	// case: UPDATE
 	cfg.WithEventFunc(func(evt discovery.KvEvent) {
-		if evt.Type != proto.EVT_UPDATE {
+		if evt.Type != registry2.EVT_UPDATE {
 			t.Fatalf("TestClusterIndexer_Sync failed, %v", evt)
 		}
 		fmt.Println(evt)
@@ -119,7 +119,7 @@ func TestClusterIndexer_Sync(t *testing.T) {
 	// case: DELETE
 	cfg.WithEventFunc(func(evt discovery.KvEvent) {
 		fmt.Println(evt)
-		if evt.Type != proto.EVT_DELETE {
+		if evt.Type != registry2.EVT_DELETE {
 			t.Fatalf("TestClusterIndexer_Sync failed, %v", evt)
 		}
 	})
@@ -130,7 +130,7 @@ func TestClusterIndexer_Sync(t *testing.T) {
 
 	// case: CREATE again and set cluster to local cluster name
 	cfg.WithEventFunc(func(evt discovery.KvEvent) {
-		if evt.Type != proto.EVT_CREATE {
+		if evt.Type != registry2.EVT_CREATE {
 			t.Fatalf("TestClusterIndexer_Sync failed, %v", evt)
 		}
 		fmt.Println(evt)
@@ -143,7 +143,7 @@ func TestClusterIndexer_Sync(t *testing.T) {
 
 	// case: UPDATE but skip local cluster
 	cfg.WithEventFunc(func(evt discovery.KvEvent) {
-		if evt.Type != proto.EVT_UPDATE && evt.KV.Value != "aa" {
+		if evt.Type != registry2.EVT_UPDATE && evt.KV.Value != "aa" {
 			t.Fatalf("TestClusterIndexer_Sync failed, %v", evt)
 		}
 		fmt.Println(evt)
diff --git a/server/plugin/discovery/types.go b/server/plugin/discovery/types.go
index b341cae..7e75723 100644
--- a/server/plugin/discovery/types.go
+++ b/server/plugin/discovery/types.go
@@ -19,8 +19,8 @@ import (
 	"encoding/json"
 	"fmt"
 	simple "github.com/apache/servicecomb-service-center/pkg/time"
+	"github.com/apache/servicecomb-service-center/pkg/types"
 	"github.com/apache/servicecomb-service-center/pkg/util"
-	pb "github.com/apache/servicecomb-service-center/server/core/proto"
 	"github.com/apache/servicecomb-service-center/server/plugin/registry"
 	"strconv"
 	"time"
@@ -85,7 +85,7 @@ type Response struct {
 
 type KvEvent struct {
 	Revision int64
-	Type     pb.EventType
+	Type     types.EventType
 	KV       *KeyValue
 	CreateAt simple.Time
 }
@@ -97,6 +97,6 @@ type KvEventHandler interface {
 	OnEvent(evt KvEvent)
 }
 
-func NewKvEvent(action pb.EventType, kv *KeyValue, rev int64) KvEvent {
+func NewKvEvent(action types.EventType, kv *KeyValue, rev int64) KvEvent {
 	return KvEvent{Type: action, KV: kv, Revision: rev, CreateAt: simple.FromTime(time.Now())}
 }
diff --git a/server/plugin/quota/counter/event.go b/server/plugin/quota/counter/event.go
index e312543..52e2b37 100644
--- a/server/plugin/quota/counter/event.go
+++ b/server/plugin/quota/counter/event.go
@@ -18,10 +18,11 @@ package counter
 import (
 	"context"
 	"github.com/apache/servicecomb-service-center/pkg/log"
+	"github.com/apache/servicecomb-service-center/pkg/registry"
 	"github.com/apache/servicecomb-service-center/pkg/util"
 	"github.com/apache/servicecomb-service-center/server/core"
 	"github.com/apache/servicecomb-service-center/server/core/backend"
-	pb "github.com/apache/servicecomb-service-center/server/core/proto"
+	"github.com/apache/servicecomb-service-center/server/core/proto"
 	"github.com/apache/servicecomb-service-center/server/plugin/discovery"
 	serviceUtil "github.com/apache/servicecomb-service-center/server/service/util"
 	"github.com/astaxie/beego"
@@ -48,9 +49,9 @@ func (h *ServiceIndexEventHandler) OnEvent(evt discovery.KvEvent) {
 	}
 
 	switch evt.Type {
-	case pb.EVT_INIT, pb.EVT_CREATE:
+	case registry.EVT_INIT, registry.EVT_CREATE:
 		GetCounters().OnCreate(h.Type(), key.Tenant)
-	case pb.EVT_DELETE:
+	case registry.EVT_DELETE:
 		GetCounters().OnDelete(h.Type(), key.Tenant)
 	default:
 	}
@@ -78,20 +79,20 @@ func (h *InstanceEventHandler) OnEvent(evt discovery.KvEvent) {
 	}
 
 	switch evt.Type {
-	case pb.EVT_INIT, pb.EVT_CREATE:
+	case registry.EVT_INIT, registry.EVT_CREATE:
 		if domainProject == core.RegistryDomainProject {
 			service, err := serviceUtil.GetService(context.Background(), domainProject, serviceID)
 			if service == nil || err != nil {
 				log.Errorf(err, "GetService[%s] failed", key)
 				return
 			}
-			if core.IsShared(pb.MicroServiceToKey(domainProject, service)) {
+			if core.IsShared(proto.MicroServiceToKey(domainProject, service)) {
 				SharedServiceIds.Put(key, struct{}{})
 				return
 			}
 		}
 		GetCounters().OnCreate(h.Type(), domainProject)
-	case pb.EVT_DELETE:
+	case registry.EVT_DELETE:
 		GetCounters().OnDelete(h.Type(), domainProject)
 	}
 }
diff --git a/server/plugin/quota/counter/event_test.go b/server/plugin/quota/counter/event_test.go
index 9a171ff..846b8d1 100644
--- a/server/plugin/quota/counter/event_test.go
+++ b/server/plugin/quota/counter/event_test.go
@@ -16,9 +16,9 @@
 package counter
 
 import (
+	registry2 "github.com/apache/servicecomb-service-center/pkg/registry"
 	"github.com/apache/servicecomb-service-center/server/core"
 	"github.com/apache/servicecomb-service-center/server/core/backend"
-	"github.com/apache/servicecomb-service-center/server/core/proto"
 	"github.com/apache/servicecomb-service-center/server/plugin/discovery"
 	"testing"
 )
@@ -58,9 +58,9 @@ func TestNewServiceIndexEventHandler(t *testing.T) {
 
 	cases := []discovery.KvEvent{
 		{
-			Type: proto.EVT_INIT,
+			Type: registry2.EVT_INIT,
 			KV: &discovery.KeyValue{
-				Key: []byte(core.GenerateServiceIndexKey(&proto.MicroServiceKey{
+				Key: []byte(core.GenerateServiceIndexKey(&registry2.MicroServiceKey{
 					Tenant:      core.RegistryDomainProject,
 					Project:     "",
 					AppId:       core.RegistryAppID,
@@ -73,9 +73,9 @@ func TestNewServiceIndexEventHandler(t *testing.T) {
 			},
 		},
 		{
-			Type: proto.EVT_UPDATE,
+			Type: registry2.EVT_UPDATE,
 			KV: &discovery.KeyValue{
-				Key: []byte(core.GenerateServiceIndexKey(&proto.MicroServiceKey{
+				Key: []byte(core.GenerateServiceIndexKey(&registry2.MicroServiceKey{
 					Tenant:      core.RegistryDomainProject,
 					Project:     "",
 					AppId:       core.RegistryAppID,
@@ -88,9 +88,9 @@ func TestNewServiceIndexEventHandler(t *testing.T) {
 			},
 		},
 		{
-			Type: proto.EVT_DELETE,
+			Type: registry2.EVT_DELETE,
 			KV: &discovery.KeyValue{
-				Key: []byte(core.GenerateServiceIndexKey(&proto.MicroServiceKey{
+				Key: []byte(core.GenerateServiceIndexKey(&registry2.MicroServiceKey{
 					Tenant:      core.RegistryDomainProject,
 					Project:     "",
 					AppId:       core.RegistryAppID,
@@ -103,9 +103,9 @@ func TestNewServiceIndexEventHandler(t *testing.T) {
 			},
 		},
 		{
-			Type: proto.EVT_CREATE,
+			Type: registry2.EVT_CREATE,
 			KV: &discovery.KeyValue{
-				Key: []byte(core.GenerateServiceIndexKey(&proto.MicroServiceKey{
+				Key: []byte(core.GenerateServiceIndexKey(&registry2.MicroServiceKey{
 					Tenant:      core.RegistryDomainProject,
 					Project:     "",
 					AppId:       core.RegistryAppID,
@@ -118,9 +118,9 @@ func TestNewServiceIndexEventHandler(t *testing.T) {
 			},
 		},
 		{
-			Type: proto.EVT_INIT,
+			Type: registry2.EVT_INIT,
 			KV: &discovery.KeyValue{
-				Key: []byte(core.GenerateServiceIndexKey(&proto.MicroServiceKey{
+				Key: []byte(core.GenerateServiceIndexKey(&registry2.MicroServiceKey{
 					Tenant:      "a/b",
 					Project:     "",
 					AppId:       "c",
@@ -133,9 +133,9 @@ func TestNewServiceIndexEventHandler(t *testing.T) {
 			},
 		},
 		{
-			Type: proto.EVT_DELETE,
+			Type: registry2.EVT_DELETE,
 			KV: &discovery.KeyValue{
-				Key: []byte(core.GenerateServiceIndexKey(&proto.MicroServiceKey{
+				Key: []byte(core.GenerateServiceIndexKey(&registry2.MicroServiceKey{
 					Tenant:      "a/b",
 					Project:     "",
 					AppId:       "c",
@@ -148,9 +148,9 @@ func TestNewServiceIndexEventHandler(t *testing.T) {
 			},
 		},
 		{
-			Type: proto.EVT_UPDATE,
+			Type: registry2.EVT_UPDATE,
 			KV: &discovery.KeyValue{
-				Key: []byte(core.GenerateServiceIndexKey(&proto.MicroServiceKey{
+				Key: []byte(core.GenerateServiceIndexKey(&registry2.MicroServiceKey{
 					Tenant:      "a/b",
 					Project:     "",
 					AppId:       "c",
@@ -163,9 +163,9 @@ func TestNewServiceIndexEventHandler(t *testing.T) {
 			},
 		},
 		{
-			Type: proto.EVT_CREATE,
+			Type: registry2.EVT_CREATE,
 			KV: &discovery.KeyValue{
-				Key: []byte(core.GenerateServiceIndexKey(&proto.MicroServiceKey{
+				Key: []byte(core.GenerateServiceIndexKey(&registry2.MicroServiceKey{
 					Tenant:      "a/b",
 					Project:     "",
 					AppId:       "c",
@@ -194,56 +194,56 @@ func TestNewInstanceEventHandler(t *testing.T) {
 	SharedServiceIds.Put(core.RegistryDomainProject+core.SPLIT+"2", struct{}{})
 	cases := []discovery.KvEvent{
 		{
-			Type: proto.EVT_INIT,
+			Type: registry2.EVT_INIT,
 			KV: &discovery.KeyValue{
 				Key:   []byte(core.GenerateInstanceKey(core.RegistryDomainProject, "2", "1")),
 				Value: nil,
 			},
 		},
 		{
-			Type: proto.EVT_UPDATE,
+			Type: registry2.EVT_UPDATE,
 			KV: &discovery.KeyValue{
 				Key:   []byte(core.GenerateInstanceKey(core.RegistryDomainProject, "2", "1")),
 				Value: nil,
 			},
 		},
 		{
-			Type: proto.EVT_CREATE,
+			Type: registry2.EVT_CREATE,
 			KV: &discovery.KeyValue{
 				Key:   []byte(core.GenerateInstanceKey(core.RegistryDomainProject, "2", "1")),
 				Value: nil,
 			},
 		},
 		{
-			Type: proto.EVT_DELETE,
+			Type: registry2.EVT_DELETE,
 			KV: &discovery.KeyValue{
 				Key:   []byte(core.GenerateInstanceKey(core.RegistryDomainProject, "2", "1")),
 				Value: nil,
 			},
 		},
 		{
-			Type: proto.EVT_INIT,
+			Type: registry2.EVT_INIT,
 			KV: &discovery.KeyValue{
 				Key:   []byte(core.GenerateInstanceKey("a/b", "1", "1")),
 				Value: nil,
 			},
 		},
 		{
-			Type: proto.EVT_DELETE,
+			Type: registry2.EVT_DELETE,
 			KV: &discovery.KeyValue{
 				Key:   []byte(core.GenerateInstanceKey("a/b", "1", "1")),
 				Value: nil,
 			},
 		},
 		{
-			Type: proto.EVT_UPDATE,
+			Type: registry2.EVT_UPDATE,
 			KV: &discovery.KeyValue{
 				Key:   []byte(core.GenerateInstanceKey("a/b", "1", "1")),
 				Value: nil,
 			},
 		},
 		{
-			Type: proto.EVT_CREATE,
+			Type: registry2.EVT_CREATE,
 			KV: &discovery.KeyValue{
 				Key:   []byte(core.GenerateInstanceKey("a/b", "1", "1")),
 				Value: nil,
diff --git a/server/plugin/registry/config.go b/server/plugin/registry/config.go
index adce06d..991c236 100644
--- a/server/plugin/registry/config.go
+++ b/server/plugin/registry/config.go
@@ -17,6 +17,7 @@ package registry
 
 import (
 	"github.com/apache/servicecomb-service-center/pkg/log"
+	"github.com/apache/servicecomb-service-center/pkg/types"
 	"github.com/apache/servicecomb-service-center/server/core"
 	"github.com/astaxie/beego"
 	"strings"
@@ -30,19 +31,19 @@ var (
 )
 
 type Config struct {
-	SslEnabled       bool          `json:"-"`
-	ManagerAddress   string        `json:"manageAddress,omitempty"`
-	ClusterName      string        `json:"manageName,omitempty"`
-	ClusterAddresses string        `json:"manageClusters,omitempty"` // the raw string of cluster configuration
-	Clusters         Clusters      `json:"-"`                        // parsed from ClusterAddresses
-	DialTimeout      time.Duration `json:"connectTimeout"`
-	RequestTimeOut   time.Duration `json:"registryTimeout"`
-	AutoSyncInterval time.Duration `json:"autoSyncInterval"`
+	SslEnabled       bool           `json:"-"`
+	ManagerAddress   string         `json:"manageAddress,omitempty"`
+	ClusterName      string         `json:"manageName,omitempty"`
+	ClusterAddresses string         `json:"manageClusters,omitempty"` // the raw string of cluster configuration
+	Clusters         types.Clusters `json:"-"`                        // parsed from ClusterAddresses
+	DialTimeout      time.Duration  `json:"connectTimeout"`
+	RequestTimeOut   time.Duration  `json:"registryTimeout"`
+	AutoSyncInterval time.Duration  `json:"autoSyncInterval"`
 }
 
 //InitClusterInfo re-org address info with node name
 func (c *Config) InitClusterInfo() {
-	c.Clusters = make(Clusters)
+	c.Clusters = make(types.Clusters)
 	// sc-0=http(s)://host1:port1,http(s)://host2:port2,sc-1=http(s)://host3:port3
 	kvs := strings.Split(c.ClusterAddresses, "=")
 	if l := len(kvs); l >= 2 {
diff --git a/server/plugin/registry/types.go b/server/plugin/registry/types.go
index 98d119e..35458cd 100644
--- a/server/plugin/registry/types.go
+++ b/server/plugin/registry/types.go
@@ -121,5 +121,3 @@ func (pr *PluginResponse) String() string {
 	return fmt.Sprintf("{action: %s, count: %d/%d, rev: %d, succeed: %v}",
 		pr.Action, len(pr.Kvs), pr.Count, pr.Revision, pr.Succeeded)
 }
-
-type Clusters map[string][]string
diff --git a/server/rest/admin/service.go b/server/rest/admin/service.go
index 2005b4d..e652e6b 100644
--- a/server/rest/admin/service.go
+++ b/server/rest/admin/service.go
@@ -26,7 +26,7 @@ import (
 	"github.com/apache/servicecomb-service-center/server/alarm"
 	"github.com/apache/servicecomb-service-center/server/core"
 	"github.com/apache/servicecomb-service-center/server/core/backend"
-	pb "github.com/apache/servicecomb-service-center/server/core/proto"
+	"github.com/apache/servicecomb-service-center/server/core/proto"
 	"github.com/apache/servicecomb-service-center/server/plugin/discovery"
 	"github.com/apache/servicecomb-service-center/server/plugin/registry"
 	scerr "github.com/apache/servicecomb-service-center/server/scerror"
@@ -66,12 +66,12 @@ func (service *Service) Dump(ctx context.Context, in *model.DumpRequest) (*model
 
 	if !core.IsDefaultDomainProject(domainProject) {
 		return &model.DumpResponse{
-			Response: pb.CreateResponse(scerr.ErrForbidden, "Required admin permission"),
+			Response: proto.CreateResponse(scerr.ErrForbidden, "Required admin permission"),
 		}, nil
 	}
 
 	resp := &model.DumpResponse{
-		Response: pb.CreateResponse(pb.Response_SUCCESS, "Admin dump successfully"),
+		Response: proto.CreateResponse(proto.Response_SUCCESS, "Admin dump successfully"),
 	}
 
 	if len(in.Options) == 0 {
diff --git a/server/rest/admin/service_test.go b/server/rest/admin/service_test.go
index 204e033..07ee87d 100644
--- a/server/rest/admin/service_test.go
+++ b/server/rest/admin/service_test.go
@@ -20,7 +20,7 @@ import (
 	"context"
 	model2 "github.com/apache/servicecomb-service-center/pkg/model"
 	"github.com/apache/servicecomb-service-center/pkg/util"
-	pb "github.com/apache/servicecomb-service-center/server/core/proto"
+	"github.com/apache/servicecomb-service-center/server/core/proto"
 	mgr "github.com/apache/servicecomb-service-center/server/plugin"
 	"github.com/apache/servicecomb-service-center/server/plugin/discovery/etcd"
 	etcd2 "github.com/apache/servicecomb-service-center/server/plugin/registry/etcd"
@@ -41,13 +41,13 @@ func TestAdminService_Dump(t *testing.T) {
 	t.Log("execute 'dump' operation,when get all,should be passed")
 	resp, err := admin.AdminServiceAPI.Dump(getContext(), &model2.DumpRequest{})
 	assert.NoError(t, err)
-	assert.Equal(t, pb.Response_SUCCESS, resp.Response.Code)
+	assert.Equal(t, proto.Response_SUCCESS, resp.Response.GetCode())
 	t.Log("execute 'dump' operation,when get by domain project,should be passed")
 	resp, err = admin.AdminServiceAPI.Dump(
 		util.SetDomainProject(context.Background(), "x", "x"),
 		&model2.DumpRequest{})
 	assert.NoError(t, err)
-	assert.Equal(t, scerr.ErrForbidden, resp.Response.Code)
+	assert.Equal(t, scerr.ErrForbidden, resp.Response.GetCode())
 }
 
 func getContext() context.Context {
diff --git a/server/rest/controller/rest_util.go b/server/rest/controller/rest_util.go
index ec31fae..2be3846 100644
--- a/server/rest/controller/rest_util.go
+++ b/server/rest/controller/rest_util.go
@@ -21,10 +21,11 @@ import (
 	"encoding/json"
 	"fmt"
 	"github.com/apache/servicecomb-service-center/pkg/log"
+	pb "github.com/apache/servicecomb-service-center/pkg/registry"
 	"github.com/apache/servicecomb-service-center/pkg/rest"
 	"github.com/apache/servicecomb-service-center/pkg/util"
 	"github.com/apache/servicecomb-service-center/server/alarm"
-	pb "github.com/apache/servicecomb-service-center/server/core/proto"
+	"github.com/apache/servicecomb-service-center/server/core/proto"
 	"github.com/apache/servicecomb-service-center/server/scerror"
 	"net/http"
 	"strconv"
@@ -46,7 +47,7 @@ func WriteError(w http.ResponseWriter, code int32, detail string) {
 }
 
 func WriteResponse(w http.ResponseWriter, resp *pb.Response, obj interface{}) {
-	if resp != nil && resp.GetCode() != pb.Response_SUCCESS {
+	if resp != nil && resp.GetCode() != proto.Response_SUCCESS {
 		WriteError(w, resp.GetCode(), resp.GetMessage())
 		return
 	}
@@ -70,7 +71,7 @@ func WriteResponse(w http.ResponseWriter, resp *pb.Response, obj interface{}) {
 }
 
 func WriteJSONIfSuccess(w http.ResponseWriter, resp *pb.Response, json []byte) {
-	if resp.GetCode() == pb.Response_SUCCESS {
+	if resp.GetCode() == proto.Response_SUCCESS {
 		WriteJSON(w, json)
 		return
 	}
diff --git a/server/rest/controller/v3/main_controller.go b/server/rest/controller/v3/main_controller.go
index 6603250..54f693a 100644
--- a/server/rest/controller/v3/main_controller.go
+++ b/server/rest/controller/v3/main_controller.go
@@ -18,8 +18,9 @@ package v3
 
 import (
 	"encoding/json"
+	pb "github.com/apache/servicecomb-service-center/pkg/registry"
 	"github.com/apache/servicecomb-service-center/pkg/rest"
-	pb "github.com/apache/servicecomb-service-center/server/core/proto"
+	"github.com/apache/servicecomb-service-center/server/core/proto"
 	"github.com/apache/servicecomb-service-center/server/rest/controller"
 	"github.com/apache/servicecomb-service-center/server/rest/controller/v4"
 	"github.com/apache/servicecomb-service-center/version"
@@ -39,7 +40,7 @@ func init() {
 		APIVersion: APIVersion,
 	}
 	versionJsonCache, _ = json.Marshal(result)
-	versionResp = pb.CreateResponse(pb.Response_SUCCESS, "get version successfully")
+	versionResp = proto.CreateResponse(proto.Response_SUCCESS, "get version successfully")
 }
 
 type MainService struct {
diff --git a/server/rest/controller/v4/dependency_controller.go b/server/rest/controller/v4/dependency_controller.go
index 3415cb5..3717db1 100644
--- a/server/rest/controller/v4/dependency_controller.go
+++ b/server/rest/controller/v4/dependency_controller.go
@@ -20,10 +20,10 @@ package v4
 import (
 	"encoding/json"
 	"github.com/apache/servicecomb-service-center/pkg/log"
+	pb "github.com/apache/servicecomb-service-center/pkg/registry"
 	"github.com/apache/servicecomb-service-center/pkg/rest"
 	"github.com/apache/servicecomb-service-center/pkg/util"
 	"github.com/apache/servicecomb-service-center/server/core"
-	pb "github.com/apache/servicecomb-service-center/server/core/proto"
 	"github.com/apache/servicecomb-service-center/server/rest/controller"
 	scerr "github.com/apache/servicecomb-service-center/server/scerror"
 	"io/ioutil"
diff --git a/server/rest/controller/v4/instance_controller.go b/server/rest/controller/v4/instance_controller.go
index 2efbe5c..2bc13e1 100644
--- a/server/rest/controller/v4/instance_controller.go
+++ b/server/rest/controller/v4/instance_controller.go
@@ -21,10 +21,11 @@ import (
 	"encoding/json"
 	"fmt"
 	"github.com/apache/servicecomb-service-center/pkg/log"
+	pb "github.com/apache/servicecomb-service-center/pkg/registry"
 	"github.com/apache/servicecomb-service-center/pkg/rest"
 	"github.com/apache/servicecomb-service-center/pkg/util"
 	"github.com/apache/servicecomb-service-center/server/core"
-	pb "github.com/apache/servicecomb-service-center/server/core/proto"
+	"github.com/apache/servicecomb-service-center/server/core/proto"
 	"github.com/apache/servicecomb-service-center/server/rest/controller"
 	scerr "github.com/apache/servicecomb-service-center/server/scerror"
 	"io/ioutil"
@@ -108,7 +109,7 @@ func (s *MicroServiceInstanceService) HeartbeatSet(w http.ResponseWriter, r *htt
 	}
 	resp, _ := core.InstanceAPI.HeartbeatSet(r.Context(), request)
 
-	if resp.Response.Code == pb.Response_SUCCESS {
+	if resp.Response.GetCode() == proto.Response_SUCCESS {
 		controller.WriteResponse(w, nil, nil)
 		return
 	}
diff --git a/server/rest/controller/v4/instance_watcher.go b/server/rest/controller/v4/instance_watcher.go
index 563cf1d..9c1b1e9 100644
--- a/server/rest/controller/v4/instance_watcher.go
+++ b/server/rest/controller/v4/instance_watcher.go
@@ -19,9 +19,9 @@ package v4
 
 import (
 	"github.com/apache/servicecomb-service-center/pkg/log"
+	pb "github.com/apache/servicecomb-service-center/pkg/registry"
 	"github.com/apache/servicecomb-service-center/pkg/rest"
 	"github.com/apache/servicecomb-service-center/server/core"
-	pb "github.com/apache/servicecomb-service-center/server/core/proto"
 	"github.com/gorilla/websocket"
 	"net/http"
 )
diff --git a/server/rest/controller/v4/main_controller.go b/server/rest/controller/v4/main_controller.go
index 09add74..fae4d7b 100644
--- a/server/rest/controller/v4/main_controller.go
+++ b/server/rest/controller/v4/main_controller.go
@@ -19,9 +19,10 @@ package v4
 
 import (
 	"encoding/json"
+	pb "github.com/apache/servicecomb-service-center/pkg/registry"
 	"github.com/apache/servicecomb-service-center/pkg/rest"
 	"github.com/apache/servicecomb-service-center/server/core"
-	pb "github.com/apache/servicecomb-service-center/server/core/proto"
+	"github.com/apache/servicecomb-service-center/server/core/proto"
 	"github.com/apache/servicecomb-service-center/server/rest/controller"
 	"github.com/apache/servicecomb-service-center/version"
 	"net/http"
@@ -38,8 +39,8 @@ const APIVersion = "4.0.0"
 
 type Result struct {
 	*version.Set
-	APIVersion string           `json:"apiVersion"`
-	Config     *pb.ServerConfig `json:"config,omitempty"`
+	APIVersion string              `json:"apiVersion"`
+	Config     *proto.ServerConfig `json:"config,omitempty"`
 }
 
 type MainService struct {
@@ -68,7 +69,7 @@ func (s *MainService) GetVersion(w http.ResponseWriter, r *http.Request) {
 			&core.ServerInfo.Config,
 		}
 		versionJSONCache, _ = json.Marshal(result)
-		versionResp = pb.CreateResponse(pb.Response_SUCCESS, "get version successfully")
+		versionResp = proto.CreateResponse(proto.Response_SUCCESS, "get version successfully")
 	})
 	controller.WriteJSONIfSuccess(w, versionResp, versionJSONCache)
 }
diff --git a/server/rest/controller/v4/microservice_controller.go b/server/rest/controller/v4/microservice_controller.go
index 14bd124..7c92c06 100644
--- a/server/rest/controller/v4/microservice_controller.go
+++ b/server/rest/controller/v4/microservice_controller.go
@@ -20,10 +20,10 @@ package v4
 import (
 	"encoding/json"
 	"github.com/apache/servicecomb-service-center/pkg/log"
+	pb "github.com/apache/servicecomb-service-center/pkg/registry"
 	"github.com/apache/servicecomb-service-center/pkg/rest"
 	"github.com/apache/servicecomb-service-center/pkg/util"
 	"github.com/apache/servicecomb-service-center/server/core"
-	pb "github.com/apache/servicecomb-service-center/server/core/proto"
 	"github.com/apache/servicecomb-service-center/server/rest/controller"
 	scerr "github.com/apache/servicecomb-service-center/server/scerror"
 	"io/ioutil"
diff --git a/server/rest/controller/v4/query_rule_controller.go b/server/rest/controller/v4/query_rule_controller.go
index df9a173..588c4c8 100644
--- a/server/rest/controller/v4/query_rule_controller.go
+++ b/server/rest/controller/v4/query_rule_controller.go
@@ -20,10 +20,10 @@ package v4
 import (
 	"encoding/json"
 	"github.com/apache/servicecomb-service-center/pkg/log"
+	pb "github.com/apache/servicecomb-service-center/pkg/registry"
 	"github.com/apache/servicecomb-service-center/pkg/rest"
 	"github.com/apache/servicecomb-service-center/pkg/util"
 	"github.com/apache/servicecomb-service-center/server/core"
-	pb "github.com/apache/servicecomb-service-center/server/core/proto"
 	"github.com/apache/servicecomb-service-center/server/rest/controller"
 	scerr "github.com/apache/servicecomb-service-center/server/scerror"
 	"io/ioutil"
diff --git a/server/rest/controller/v4/schema_controller.go b/server/rest/controller/v4/schema_controller.go
index 1d0b235..e059794 100644
--- a/server/rest/controller/v4/schema_controller.go
+++ b/server/rest/controller/v4/schema_controller.go
@@ -20,10 +20,10 @@ package v4
 import (
 	"encoding/json"
 	"github.com/apache/servicecomb-service-center/pkg/log"
+	pb "github.com/apache/servicecomb-service-center/pkg/registry"
 	"github.com/apache/servicecomb-service-center/pkg/rest"
 	"github.com/apache/servicecomb-service-center/pkg/util"
 	"github.com/apache/servicecomb-service-center/server/core"
-	pb "github.com/apache/servicecomb-service-center/server/core/proto"
 	"github.com/apache/servicecomb-service-center/server/rest/controller"
 	scerr "github.com/apache/servicecomb-service-center/server/scerror"
 	"io/ioutil"
diff --git a/server/rest/controller/v4/tag_controller.go b/server/rest/controller/v4/tag_controller.go
index d842162..8cfadd1 100644
--- a/server/rest/controller/v4/tag_controller.go
+++ b/server/rest/controller/v4/tag_controller.go
@@ -20,10 +20,10 @@ package v4
 import (
 	"encoding/json"
 	"github.com/apache/servicecomb-service-center/pkg/log"
+	pb "github.com/apache/servicecomb-service-center/pkg/registry"
 	"github.com/apache/servicecomb-service-center/pkg/rest"
 	"github.com/apache/servicecomb-service-center/pkg/util"
 	"github.com/apache/servicecomb-service-center/server/core"
-	pb "github.com/apache/servicecomb-service-center/server/core/proto"
 	"github.com/apache/servicecomb-service-center/server/rest/controller"
 	scerr "github.com/apache/servicecomb-service-center/server/scerror"
 	"io/ioutil"
diff --git a/server/rest/govern/controller_v4.go b/server/rest/govern/controller_v4.go
index 3f0a334..561eacb 100644
--- a/server/rest/govern/controller_v4.go
+++ b/server/rest/govern/controller_v4.go
@@ -18,13 +18,14 @@
 package govern
 
 import (
+	"github.com/apache/servicecomb-service-center/server/core/proto"
 	"net/http"
 
 	"github.com/apache/servicecomb-service-center/pkg/log"
+	pb "github.com/apache/servicecomb-service-center/pkg/registry"
 	"github.com/apache/servicecomb-service-center/pkg/rest"
 	"github.com/apache/servicecomb-service-center/pkg/util"
 	"github.com/apache/servicecomb-service-center/server/core"
-	pb "github.com/apache/servicecomb-service-center/server/core/proto"
 	"github.com/apache/servicecomb-service-center/server/rest/controller"
 	scerr "github.com/apache/servicecomb-service-center/server/scerror"
 	"strings"
@@ -66,7 +67,7 @@ func (governService *ResourceV4) GetGraph(w http.ResponseWriter, r *http.Request
 	}
 	nodes := make([]Node, 0, len(services))
 	for _, service := range services {
-		if !withShared && core.IsShared(pb.MicroServiceToKey(domainProject, service)) {
+		if !withShared && core.IsShared(proto.MicroServiceToKey(domainProject, service)) {
 			continue
 		}
 
diff --git a/server/rest/govern/govern_suite_test.go b/server/rest/govern/govern_suite_test.go
index 61bd8cb..e75166b 100644
--- a/server/rest/govern/govern_suite_test.go
+++ b/server/rest/govern/govern_suite_test.go
@@ -17,12 +17,14 @@
 package govern_test
 
 // initialize
-import _ "github.com/apache/servicecomb-service-center/server/bootstrap"
+import (
+	_ "github.com/apache/servicecomb-service-center/server/bootstrap"
+	"github.com/apache/servicecomb-service-center/server/core/proto"
+)
 import (
 	"context"
 	"github.com/apache/servicecomb-service-center/pkg/util"
 	"github.com/apache/servicecomb-service-center/server/core"
-	pb "github.com/apache/servicecomb-service-center/server/core/proto"
 	"github.com/apache/servicecomb-service-center/server/rest/govern"
 	"github.com/apache/servicecomb-service-center/server/service"
 	"github.com/astaxie/beego"
@@ -44,7 +46,7 @@ func TestGovern(t *testing.T) {
 	RunSpecsWithDefaultAndCustomReporters(t, "model Suite", []Reporter{junitReporter})
 }
 
-var governService pb.GovernServiceCtrlServer
+var governService proto.GovernServiceCtrlServer
 
 var _ = BeforeSuite(func() {
 	//init plugin
diff --git a/server/rest/govern/service.go b/server/rest/govern/service.go
index 7859769..b5d03e1 100644
--- a/server/rest/govern/service.go
+++ b/server/rest/govern/service.go
@@ -21,17 +21,18 @@ import (
 	"context"
 	"github.com/apache/servicecomb-service-center/pkg/gopool"
 	"github.com/apache/servicecomb-service-center/pkg/log"
+	pb "github.com/apache/servicecomb-service-center/pkg/registry"
 	"github.com/apache/servicecomb-service-center/pkg/util"
 	apt "github.com/apache/servicecomb-service-center/server/core"
 	"github.com/apache/servicecomb-service-center/server/core/backend"
-	pb "github.com/apache/servicecomb-service-center/server/core/proto"
+	"github.com/apache/servicecomb-service-center/server/core/proto"
 	"github.com/apache/servicecomb-service-center/server/plugin/registry"
 	scerr "github.com/apache/servicecomb-service-center/server/scerror"
 	"github.com/apache/servicecomb-service-center/server/service"
 	serviceUtil "github.com/apache/servicecomb-service-center/server/service/util"
 )
 
-var ServiceAPI pb.GovernServiceCtrlServer = &Service{}
+var ServiceAPI proto.GovernServiceCtrlServer = &Service{}
 
 type Service struct {
 }
@@ -67,12 +68,12 @@ func (governService *Service) GetServicesInfo(ctx context.Context, in *pb.GetSer
 		st, err = statistics(ctx, in.WithShared)
 		if err != nil {
 			return &pb.GetServicesInfoResponse{
-				Response: pb.CreateResponse(scerr.ErrInternal, err.Error()),
+				Response: proto.CreateResponse(scerr.ErrInternal, err.Error()),
 			}, err
 		}
 		if len(optionMap) == 1 {
 			return &pb.GetServicesInfoResponse{
-				Response:   pb.CreateResponse(pb.Response_SUCCESS, "Statistics successfully."),
+				Response:   proto.CreateResponse(proto.Response_SUCCESS, "Statistics successfully."),
 				Statistics: st,
 			}, nil
 		}
@@ -83,14 +84,14 @@ func (governService *Service) GetServicesInfo(ctx context.Context, in *pb.GetSer
 	if err != nil {
 		log.Errorf(err, "get all services by domain failed")
 		return &pb.GetServicesInfoResponse{
-			Response: pb.CreateResponse(scerr.ErrInternal, err.Error()),
+			Response: proto.CreateResponse(scerr.ErrInternal, err.Error()),
 		}, err
 	}
 
 	allServiceDetails := make([]*pb.ServiceDetail, 0, len(services))
 	domainProject := util.ParseDomainProject(ctx)
 	for _, service := range services {
-		if !in.WithShared && apt.IsShared(pb.MicroServiceToKey(domainProject, service)) {
+		if !in.WithShared && apt.IsShared(proto.MicroServiceToKey(domainProject, service)) {
 			continue
 		}
 		if len(in.AppId) > 0 {
@@ -110,7 +111,7 @@ func (governService *Service) GetServicesInfo(ctx context.Context, in *pb.GetSer
 		})
 		if err != nil {
 			return &pb.GetServicesInfoResponse{
-				Response: pb.CreateResponse(scerr.ErrInternal, err.Error()),
+				Response: proto.CreateResponse(scerr.ErrInternal, err.Error()),
 			}, err
 		}
 		serviceDetail.MicroService = service
@@ -118,7 +119,7 @@ func (governService *Service) GetServicesInfo(ctx context.Context, in *pb.GetSer
 	}
 
 	return &pb.GetServicesInfoResponse{
-		Response:          pb.CreateResponse(pb.Response_SUCCESS, "Get services info successfully."),
+		Response:          proto.CreateResponse(proto.Response_SUCCESS, "Get services info successfully."),
 		AllServicesDetail: allServiceDetails,
 		Statistics:        st,
 	}, nil
@@ -132,19 +133,19 @@ func (governService *Service) GetServiceDetail(ctx context.Context, in *pb.GetSe
 
 	if len(in.ServiceId) == 0 {
 		return &pb.GetServiceDetailResponse{
-			Response: pb.CreateResponse(scerr.ErrInvalidParams, "Invalid request for getting service detail."),
+			Response: proto.CreateResponse(scerr.ErrInvalidParams, "Invalid request for getting service detail."),
 		}, nil
 	}
 
 	service, err := serviceUtil.GetService(ctx, domainProject, in.ServiceId)
 	if service == nil {
 		return &pb.GetServiceDetailResponse{
-			Response: pb.CreateResponse(scerr.ErrServiceNotExists, "Service does not exist."),
+			Response: proto.CreateResponse(scerr.ErrServiceNotExists, "Service does not exist."),
 		}, nil
 	}
 	if err != nil {
 		return &pb.GetServiceDetailResponse{
-			Response: pb.CreateResponse(scerr.ErrInternal, err.Error()),
+			Response: proto.CreateResponse(scerr.ErrInternal, err.Error()),
 		}, err
 	}
 
@@ -160,7 +161,7 @@ func (governService *Service) GetServiceDetail(ctx context.Context, in *pb.GetSe
 		log.Errorf(err, "get service[%s/%s/%s] all versions failed",
 			service.Environment, service.AppId, service.ServiceName)
 		return &pb.GetServiceDetailResponse{
-			Response: pb.CreateResponse(scerr.ErrInternal, err.Error()),
+			Response: proto.CreateResponse(scerr.ErrInternal, err.Error()),
 		}, err
 	}
 
@@ -171,14 +172,14 @@ func (governService *Service) GetServiceDetail(ctx context.Context, in *pb.GetSe
 	})
 	if err != nil {
 		return &pb.GetServiceDetailResponse{
-			Response: pb.CreateResponse(scerr.ErrInternal, err.Error()),
+			Response: proto.CreateResponse(scerr.ErrInternal, err.Error()),
 		}, err
 	}
 
 	serviceInfo.MicroService = service
 	serviceInfo.MicroServiceVersions = versions
 	return &pb.GetServiceDetailResponse{
-		Response: pb.CreateResponse(pb.Response_SUCCESS, "Get service successfully."),
+		Response: proto.CreateResponse(proto.Response_SUCCESS, "Get service successfully."),
 		Service:  serviceInfo,
 	}, nil
 }
@@ -187,7 +188,7 @@ func (governService *Service) GetApplications(ctx context.Context, in *pb.GetApp
 	err := service.Validate(in)
 	if err != nil {
 		return &pb.GetAppsResponse{
-			Response: pb.CreateResponse(scerr.ErrInvalidParams, err.Error()),
+			Response: proto.CreateResponse(scerr.ErrInvalidParams, err.Error()),
 		}, nil
 	}
 
@@ -206,7 +207,7 @@ func (governService *Service) GetApplications(ctx context.Context, in *pb.GetApp
 	l := len(resp.Kvs)
 	if l == 0 {
 		return &pb.GetAppsResponse{
-			Response: pb.CreateResponse(pb.Response_SUCCESS, "Get all applications successfully."),
+			Response: proto.CreateResponse(proto.Response_SUCCESS, "Get all applications successfully."),
 		}, nil
 	}
 
@@ -225,7 +226,7 @@ func (governService *Service) GetApplications(ctx context.Context, in *pb.GetApp
 	}
 
 	return &pb.GetAppsResponse{
-		Response: pb.CreateResponse(pb.Response_SUCCESS, "Get all applications successfully."),
+		Response: proto.CreateResponse(proto.Response_SUCCESS, "Get all applications successfully."),
 		AppIds:   apps,
 	}, nil
 }
diff --git a/server/rest/govern/service_test.go b/server/rest/govern/service_test.go
index e99c2ae..38c3297 100644
--- a/server/rest/govern/service_test.go
+++ b/server/rest/govern/service_test.go
@@ -18,8 +18,9 @@ package govern_test
 
 import (
 	"bytes"
+	pb "github.com/apache/servicecomb-service-center/pkg/registry"
 	"github.com/apache/servicecomb-service-center/server/core"
-	pb "github.com/apache/servicecomb-service-center/server/core/proto"
+	"github.com/apache/servicecomb-service-center/server/core/proto"
 	"github.com/apache/servicecomb-service-center/server/rest/govern"
 	. "github.com/onsi/ginkgo"
 	. "github.com/onsi/gomega"
@@ -45,28 +46,28 @@ var _ = Describe("'Govern' service", func() {
 					Options: []string{"all"},
 				})
 				Expect(err).To(BeNil())
-				Expect(resp.Response.Code).To(Equal(pb.Response_SUCCESS))
+				Expect(resp.Response.GetCode()).To(Equal(proto.Response_SUCCESS))
 
 				By("only service metadata")
 				resp, err = governService.GetServicesInfo(getContext(), &pb.GetServicesInfoRequest{
 					Options: []string{""},
 				})
 				Expect(err).To(BeNil())
-				Expect(resp.Response.Code).To(Equal(pb.Response_SUCCESS))
+				Expect(resp.Response.GetCode()).To(Equal(proto.Response_SUCCESS))
 
 				By("custom options")
 				resp, err = governService.GetServicesInfo(getContext(), &pb.GetServicesInfoRequest{
 					Options: []string{"tags", "rules", "instances", "schemas", "statistics"},
 				})
 				Expect(err).To(BeNil())
-				Expect(resp.Response.Code).To(Equal(pb.Response_SUCCESS))
+				Expect(resp.Response.GetCode()).To(Equal(proto.Response_SUCCESS))
 
 				By("'statistics' option")
 				resp, err = governService.GetServicesInfo(getContext(), &pb.GetServicesInfoRequest{
 					Options: []string{"statistics"},
 				})
 				Expect(err).To(BeNil())
-				Expect(resp.Response.Code).To(Equal(pb.Response_SUCCESS))
+				Expect(resp.Response.GetCode()).To(Equal(proto.Response_SUCCESS))
 
 				By("get instance count")
 				resp, err = governService.GetServicesInfo(getContext(), &pb.GetServicesInfoRequest{
@@ -74,7 +75,7 @@ var _ = Describe("'Govern' service", func() {
 					CountOnly: true,
 				})
 				Expect(err).To(BeNil())
-				Expect(resp.Response.Code).To(Equal(pb.Response_SUCCESS))
+				Expect(resp.Response.GetCode()).To(Equal(proto.Response_SUCCESS))
 			})
 		})
 
@@ -90,7 +91,7 @@ var _ = Describe("'Govern' service", func() {
 					},
 				})
 				Expect(err).To(BeNil())
-				Expect(respC.Response.Code).To(Equal(pb.Response_SUCCESS))
+				Expect(respC.Response.GetCode()).To(Equal(proto.Response_SUCCESS))
 
 				svr := httptest.NewServer(&mockGovernHandler{func(w http.ResponseWriter, r *http.Request) {
 					ctrl := &govern.ResourceV4{}
@@ -127,7 +128,7 @@ var _ = Describe("'Govern' service", func() {
 				},
 			})
 			Expect(err).To(BeNil())
-			Expect(resp.Response.Code).To(Equal(pb.Response_SUCCESS))
+			Expect(resp.Response.GetCode()).To(Equal(proto.Response_SUCCESS))
 			serviceId = resp.ServiceId
 
 			core.ServiceAPI.ModifySchema(getContext(), &pb.ModifySchemaRequest{
@@ -136,7 +137,7 @@ var _ = Describe("'Govern' service", func() {
 				Schema:    "detail",
 			})
 			Expect(err).To(BeNil())
-			Expect(resp.Response.Code).To(Equal(pb.Response_SUCCESS))
+			Expect(resp.Response.GetCode()).To(Equal(proto.Response_SUCCESS))
 
 			core.InstanceAPI.Register(getContext(), &pb.RegisterInstanceRequest{
 				Instance: &pb.MicroServiceInstance{
@@ -149,7 +150,7 @@ var _ = Describe("'Govern' service", func() {
 				},
 			})
 			Expect(err).To(BeNil())
-			Expect(resp.Response.Code).To(Equal(pb.Response_SUCCESS))
+			Expect(resp.Response.GetCode()).To(Equal(proto.Response_SUCCESS))
 		})
 
 		Context("when get invalid service detail", func() {
@@ -158,7 +159,7 @@ var _ = Describe("'Govern' service", func() {
 					ServiceId: "",
 				})
 				Expect(err).To(BeNil())
-				Expect(resp.Response.Code).ToNot(Equal(pb.Response_SUCCESS))
+				Expect(resp.Response.GetCode()).ToNot(Equal(proto.Response_SUCCESS))
 			})
 		})
 
@@ -168,20 +169,20 @@ var _ = Describe("'Govern' service", func() {
 					ServiceId: serviceId,
 				})
 				Expect(err).To(BeNil())
-				Expect(respGetServiceDetail.Response.Code).To(Equal(pb.Response_SUCCESS))
+				Expect(respGetServiceDetail.Response.GetCode()).To(Equal(proto.Response_SUCCESS))
 
 				respDelete, err := core.ServiceAPI.Delete(getContext(), &pb.DeleteServiceRequest{
 					ServiceId: serviceId,
 					Force:     true,
 				})
 				Expect(err).To(BeNil())
-				Expect(respDelete.Response.Code).To(Equal(pb.Response_SUCCESS))
+				Expect(respDelete.Response.GetCode()).To(Equal(proto.Response_SUCCESS))
 
 				respGetServiceDetail, err = governService.GetServiceDetail(getContext(), &pb.GetServiceRequest{
 					ServiceId: serviceId,
 				})
 				Expect(err).To(BeNil())
-				Expect(respGetServiceDetail.Response.Code).ToNot(Equal(pb.Response_SUCCESS))
+				Expect(respGetServiceDetail.Response.GetCode()).ToNot(Equal(proto.Response_SUCCESS))
 			})
 		})
 	})
@@ -193,7 +194,7 @@ var _ = Describe("'Govern' service", func() {
 					Environment: "non-exist-env",
 				})
 				Expect(err).To(BeNil())
-				Expect(resp.Response.Code).ToNot(Equal(pb.Response_SUCCESS))
+				Expect(resp.Response.GetCode()).ToNot(Equal(proto.Response_SUCCESS))
 			})
 		})
 
@@ -201,13 +202,13 @@ var _ = Describe("'Govern' service", func() {
 			It("should be passed", func() {
 				resp, err := governService.GetApplications(getContext(), &pb.GetAppsRequest{})
 				Expect(err).To(BeNil())
-				Expect(resp.Response.Code).To(Equal(pb.Response_SUCCESS))
+				Expect(resp.Response.GetCode()).To(Equal(proto.Response_SUCCESS))
 
 				resp, err = governService.GetApplications(getContext(), &pb.GetAppsRequest{
 					Environment: pb.ENV_ACCEPT,
 				})
 				Expect(err).To(BeNil())
-				Expect(resp.Response.Code).To(Equal(pb.Response_SUCCESS))
+				Expect(resp.Response.GetCode()).To(Equal(proto.Response_SUCCESS))
 			})
 		})
 	})
diff --git a/server/service/cache/dependency.go b/server/service/cache/dependency.go
index 552f860..09cf479 100644
--- a/server/service/cache/dependency.go
+++ b/server/service/cache/dependency.go
@@ -20,8 +20,8 @@ package cache
 import (
 	"context"
 	"github.com/apache/servicecomb-service-center/pkg/cache"
+	pb "github.com/apache/servicecomb-service-center/pkg/registry"
 	"github.com/apache/servicecomb-service-center/pkg/util"
-	pb "github.com/apache/servicecomb-service-center/server/core/proto"
 	"math"
 )
 
diff --git a/server/service/cache/filter_instances.go b/server/service/cache/filter_instances.go
index d9d5f96..389dbb7 100644
--- a/server/service/cache/filter_instances.go
+++ b/server/service/cache/filter_instances.go
@@ -22,9 +22,9 @@ import (
 	"fmt"
 	"github.com/apache/servicecomb-service-center/pkg/cache"
 	"github.com/apache/servicecomb-service-center/pkg/log"
+	pb "github.com/apache/servicecomb-service-center/pkg/registry"
 	apt "github.com/apache/servicecomb-service-center/server/core"
 	"github.com/apache/servicecomb-service-center/server/core/backend"
-	pb "github.com/apache/servicecomb-service-center/server/core/proto"
 	"github.com/apache/servicecomb-service-center/server/plugin/registry"
 	serviceUtil "github.com/apache/servicecomb-service-center/server/service/util"
 	"sort"
diff --git a/server/service/cache/filter_permission.go b/server/service/cache/filter_permission.go
index 1689ef6..3298255 100644
--- a/server/service/cache/filter_permission.go
+++ b/server/service/cache/filter_permission.go
@@ -22,7 +22,7 @@ import (
 	"fmt"
 	"github.com/apache/servicecomb-service-center/pkg/cache"
 	"github.com/apache/servicecomb-service-center/pkg/log"
-	pb "github.com/apache/servicecomb-service-center/server/core/proto"
+	pb "github.com/apache/servicecomb-service-center/pkg/registry"
 	serviceUtil "github.com/apache/servicecomb-service-center/server/service/util"
 )
 
diff --git a/server/service/cache/filter_service.go b/server/service/cache/filter_service.go
index 48fa778..0b9e3bd 100644
--- a/server/service/cache/filter_service.go
+++ b/server/service/cache/filter_service.go
@@ -20,8 +20,8 @@ package cache
 import (
 	"context"
 	"github.com/apache/servicecomb-service-center/pkg/cache"
+	pb "github.com/apache/servicecomb-service-center/pkg/registry"
 	"github.com/apache/servicecomb-service-center/pkg/util"
-	pb "github.com/apache/servicecomb-service-center/server/core/proto"
 )
 
 type ServiceFilter struct {
diff --git a/server/service/cache/filter_tags.go b/server/service/cache/filter_tags.go
index 2b3d056..b1ecec7 100644
--- a/server/service/cache/filter_tags.go
+++ b/server/service/cache/filter_tags.go
@@ -22,8 +22,8 @@ import (
 	"fmt"
 	"github.com/apache/servicecomb-service-center/pkg/cache"
 	"github.com/apache/servicecomb-service-center/pkg/log"
+	pb "github.com/apache/servicecomb-service-center/pkg/registry"
 	"github.com/apache/servicecomb-service-center/pkg/util"
-	pb "github.com/apache/servicecomb-service-center/server/core/proto"
 	serviceUtil "github.com/apache/servicecomb-service-center/server/service/util"
 	"sort"
 	"strings"
diff --git a/server/service/cache/filter_version.go b/server/service/cache/filter_version.go
index f57198f..837927c 100644
--- a/server/service/cache/filter_version.go
+++ b/server/service/cache/filter_version.go
@@ -22,7 +22,7 @@ import (
 	"fmt"
 	"github.com/apache/servicecomb-service-center/pkg/cache"
 	"github.com/apache/servicecomb-service-center/pkg/log"
-	pb "github.com/apache/servicecomb-service-center/server/core/proto"
+	pb "github.com/apache/servicecomb-service-center/pkg/registry"
 	serviceUtil "github.com/apache/servicecomb-service-center/server/service/util"
 )
 
diff --git a/server/service/cache/instance.go b/server/service/cache/instance.go
index 2e07448..7ce1d66 100644
--- a/server/service/cache/instance.go
+++ b/server/service/cache/instance.go
@@ -20,8 +20,8 @@ package cache
 import (
 	"context"
 	"github.com/apache/servicecomb-service-center/pkg/cache"
+	pb "github.com/apache/servicecomb-service-center/pkg/registry"
 	"github.com/apache/servicecomb-service-center/pkg/util"
-	pb "github.com/apache/servicecomb-service-center/server/core/proto"
 	"math"
 	"time"
 )
diff --git a/server/service/dependency.go b/server/service/dependency.go
index c07d3da..c65a6b1 100644
--- a/server/service/dependency.go
+++ b/server/service/dependency.go
@@ -22,10 +22,11 @@ import (
 	"encoding/json"
 	"fmt"
 	"github.com/apache/servicecomb-service-center/pkg/log"
+	pb "github.com/apache/servicecomb-service-center/pkg/registry"
 	"github.com/apache/servicecomb-service-center/pkg/util"
 	apt "github.com/apache/servicecomb-service-center/server/core"
 	"github.com/apache/servicecomb-service-center/server/core/backend"
-	pb "github.com/apache/servicecomb-service-center/server/core/proto"
+	"github.com/apache/servicecomb-service-center/server/core/proto"
 	"github.com/apache/servicecomb-service-center/server/plugin/registry"
 	scerr "github.com/apache/servicecomb-service-center/server/scerror"
 	serviceUtil "github.com/apache/servicecomb-service-center/server/service/util"
@@ -62,13 +63,13 @@ func (s *MicroServiceService) AddOrUpdateDependencies(ctx context.Context, depen
 	domainProject := util.ParseDomainProject(ctx)
 	for _, dependencyInfo := range dependencyInfos {
 		consumerFlag := util.StringJoin([]string{dependencyInfo.Consumer.Environment, dependencyInfo.Consumer.AppId, dependencyInfo.Consumer.ServiceName, dependencyInfo.Consumer.Version}, "/")
-		consumerInfo := pb.DependenciesToKeys([]*pb.MicroServiceKey{dependencyInfo.Consumer}, domainProject)[0]
-		providersInfo := pb.DependenciesToKeys(dependencyInfo.Providers, domainProject)
+		consumerInfo := proto.DependenciesToKeys([]*pb.MicroServiceKey{dependencyInfo.Consumer}, domainProject)[0]
+		providersInfo := proto.DependenciesToKeys(dependencyInfo.Providers, domainProject)
 
 		rsp := serviceUtil.ParamsChecker(consumerInfo, providersInfo)
 		if rsp != nil {
 			log.Errorf(nil, "put request into dependency queue failed, override: %t, consumer is %s, %s",
-				override, consumerFlag, rsp.Response.Message)
+				override, consumerFlag, rsp.Response.GetMessage())
 			return rsp.Response, nil
 		}
 
@@ -76,12 +77,12 @@ func (s *MicroServiceService) AddOrUpdateDependencies(ctx context.Context, depen
 		if err != nil {
 			log.Errorf(err, "put request into dependency queue failed, override: %t, get consumer[%s] id failed",
 				override, consumerFlag)
-			return pb.CreateResponse(scerr.ErrInternal, err.Error()), err
+			return proto.CreateResponse(scerr.ErrInternal, err.Error()), err
 		}
 		if len(consumerID) == 0 {
 			log.Errorf(nil, "put request into dependency queue failed, override: %t, consumer[%s] does not exist",
 				override, consumerFlag)
-			return pb.CreateResponse(scerr.ErrServiceNotExists, fmt.Sprintf("Consumer %s does not exist.", consumerFlag)), nil
+			return proto.CreateResponse(scerr.ErrServiceNotExists, fmt.Sprintf("Consumer %s does not exist.", consumerFlag)), nil
 		}
 
 		dependencyInfo.Override = override
@@ -89,7 +90,7 @@ func (s *MicroServiceService) AddOrUpdateDependencies(ctx context.Context, depen
 		if err != nil {
 			log.Errorf(err, "put request into dependency queue failed, override: %t, marshal consumer[%s] dependency failed",
 				override, consumerFlag)
-			return pb.CreateResponse(scerr.ErrInternal, err.Error()), err
+			return proto.CreateResponse(scerr.ErrInternal, err.Error()), err
 		}
 
 		id := apt.DepsQueueUUID
@@ -103,12 +104,12 @@ func (s *MicroServiceService) AddOrUpdateDependencies(ctx context.Context, depen
 	err := backend.BatchCommit(ctx, opts)
 	if err != nil {
 		log.Errorf(err, "put request into dependency queue failed, override: %t, %v", override, dependencyInfos)
-		return pb.CreateResponse(scerr.ErrInternal, err.Error()), err
+		return proto.CreateResponse(scerr.ErrInternal, err.Error()), err
 	}
 
 	log.Infof("put request into dependency queue successfully, override: %t, %v, from remote %s",
 		override, dependencyInfos, util.GetIPFromContext(ctx))
-	return pb.CreateResponse(pb.Response_SUCCESS, "Create dependency successfully."), nil
+	return proto.CreateResponse(proto.Response_SUCCESS, "Create dependency successfully."), nil
 }
 
 func (s *MicroServiceService) GetProviderDependencies(ctx context.Context, in *pb.GetDependenciesRequest) (*pb.GetProDependenciesResponse, error) {
@@ -116,7 +117,7 @@ func (s *MicroServiceService) GetProviderDependencies(ctx context.Context, in *p
 	if err != nil {
 		log.Errorf(err, "GetProviderDependencies failed for validating parameters failed")
 		return &pb.GetProDependenciesResponse{
-			Response: pb.CreateResponse(scerr.ErrInvalidParams, err.Error()),
+			Response: proto.CreateResponse(scerr.ErrInvalidParams, err.Error()),
 		}, nil
 	}
 	domainProject := util.ParseDomainProject(ctx)
@@ -130,7 +131,7 @@ func (s *MicroServiceService) GetProviderDependencies(ctx context.Context, in *p
 	if provider == nil {
 		log.Errorf(err, "GetProviderDependencies failed for provider[%s] does not exist", providerServiceID)
 		return &pb.GetProDependenciesResponse{
-			Response: pb.CreateResponse(scerr.ErrServiceNotExists, "Provider does not exist"),
+			Response: proto.CreateResponse(scerr.ErrServiceNotExists, "Provider does not exist"),
 		}, nil
 	}
 
@@ -140,11 +141,11 @@ func (s *MicroServiceService) GetProviderDependencies(ctx context.Context, in *p
 		log.Errorf(err, "GetProviderDependencies failed, provider is %s/%s/%s/%s",
 			provider.Environment, provider.AppId, provider.ServiceName, provider.Version)
 		return &pb.GetProDependenciesResponse{
-			Response: pb.CreateResponse(scerr.ErrInternal, err.Error()),
+			Response: proto.CreateResponse(scerr.ErrInternal, err.Error()),
 		}, err
 	}
 	return &pb.GetProDependenciesResponse{
-		Response:  pb.CreateResponse(pb.Response_SUCCESS, "Get all consumers successful."),
+		Response:  proto.CreateResponse(proto.Response_SUCCESS, "Get all consumers successful."),
 		Consumers: services,
 	}, nil
 }
@@ -154,7 +155,7 @@ func (s *MicroServiceService) GetConsumerDependencies(ctx context.Context, in *p
 	if err != nil {
 		log.Errorf(err, "GetConsumerDependencies failed for validating parameters failed")
 		return &pb.GetConDependenciesResponse{
-			Response: pb.CreateResponse(scerr.ErrInvalidParams, err.Error()),
+			Response: proto.CreateResponse(scerr.ErrInvalidParams, err.Error()),
 		}, nil
 	}
 	consumerID := in.ServiceId
@@ -164,13 +165,13 @@ func (s *MicroServiceService) GetConsumerDependencies(ctx context.Context, in *p
 	if err != nil {
 		log.Errorf(err, "GetConsumerDependencies failed, consumer is %s", consumerID)
 		return &pb.GetConDependenciesResponse{
-			Response: pb.CreateResponse(scerr.ErrInternal, err.Error()),
+			Response: proto.CreateResponse(scerr.ErrInternal, err.Error()),
 		}, err
 	}
 	if consumer == nil {
 		log.Errorf(err, "GetConsumerDependencies failed for consumer[%s] does not exist", consumerID)
 		return &pb.GetConDependenciesResponse{
-			Response: pb.CreateResponse(scerr.ErrServiceNotExists, "Consumer does not exist"),
+			Response: proto.CreateResponse(scerr.ErrServiceNotExists, "Consumer does not exist"),
 		}, nil
 	}
 
@@ -180,12 +181,12 @@ func (s *MicroServiceService) GetConsumerDependencies(ctx context.Context, in *p
 		log.Errorf(err, "GetConsumerDependencies failed, consumer is %s/%s/%s/%s",
 			consumer.Environment, consumer.AppId, consumer.ServiceName, consumer.Version)
 		return &pb.GetConDependenciesResponse{
-			Response: pb.CreateResponse(scerr.ErrInternal, err.Error()),
+			Response: proto.CreateResponse(scerr.ErrInternal, err.Error()),
 		}, err
 	}
 
 	return &pb.GetConDependenciesResponse{
-		Response:  pb.CreateResponse(pb.Response_SUCCESS, "Get all providers successfully."),
+		Response:  proto.CreateResponse(proto.Response_SUCCESS, "Get all providers successfully."),
 		Providers: services,
 	}, nil
 }
diff --git a/server/service/dependency_test.go b/server/service/dependency_test.go
index 1fa475a..b80c321 100644
--- a/server/service/dependency_test.go
+++ b/server/service/dependency_test.go
@@ -17,7 +17,8 @@
 package service_test
 
 import (
-	pb "github.com/apache/servicecomb-service-center/server/core/proto"
+	pb "github.com/apache/servicecomb-service-center/pkg/registry"
+	"github.com/apache/servicecomb-service-center/server/core/proto"
 	scerr "github.com/apache/servicecomb-service-center/server/scerror"
 	"github.com/apache/servicecomb-service-center/server/service/event"
 	. "github.com/onsi/ginkgo"
@@ -46,7 +47,7 @@ var _ = Describe("'Dependency' service", func() {
 				},
 			})
 			Expect(err).To(BeNil())
-			Expect(respCreateService.Response.Code).To(Equal(pb.Response_SUCCESS))
+			Expect(respCreateService.Response.GetCode()).To(Equal(proto.Response_SUCCESS))
 			consumerId1 = respCreateService.ServiceId
 
 			respCreateService, err = serviceResource.Create(getContext(), &pb.CreateServiceRequest{
@@ -59,7 +60,7 @@ var _ = Describe("'Dependency' service", func() {
 				},
 			})
 			Expect(err).To(BeNil())
-			Expect(respCreateService.Response.Code).To(Equal(pb.Response_SUCCESS))
+			Expect(respCreateService.Response.GetCode()).To(Equal(proto.Response_SUCCESS))
 			consumerId3 = respCreateService.ServiceId
 
 			respCreateService, err = serviceResource.Create(getContext(), &pb.CreateServiceRequest{
@@ -73,7 +74,7 @@ var _ = Describe("'Dependency' service", func() {
 				},
 			})
 			Expect(err).To(BeNil())
-			Expect(respCreateService.Response.Code).To(Equal(pb.Response_SUCCESS))
+			Expect(respCreateService.Response.GetCode()).To(Equal(proto.Response_SUCCESS))
 			consumerId2 = respCreateService.ServiceId
 
 			respCreateService, err = serviceResource.Create(getContext(), &pb.CreateServiceRequest{
@@ -86,7 +87,7 @@ var _ = Describe("'Dependency' service", func() {
 				},
 			})
 			Expect(err).To(BeNil())
-			Expect(respCreateService.Response.Code).To(Equal(pb.Response_SUCCESS))
+			Expect(respCreateService.Response.GetCode()).To(Equal(proto.Response_SUCCESS))
 
 			respCreateService, err = serviceResource.Create(getContext(), &pb.CreateServiceRequest{
 				Service: &pb.MicroService{
@@ -98,7 +99,7 @@ var _ = Describe("'Dependency' service", func() {
 				},
 			})
 			Expect(err).To(BeNil())
-			Expect(respCreateService.Response.Code).To(Equal(pb.Response_SUCCESS))
+			Expect(respCreateService.Response.GetCode()).To(Equal(proto.Response_SUCCESS))
 
 			respCreateService, err = serviceResource.Create(getContext(), &pb.CreateServiceRequest{
 				Service: &pb.MicroService{
@@ -111,7 +112,7 @@ var _ = Describe("'Dependency' service", func() {
 				},
 			})
 			Expect(err).To(BeNil())
-			Expect(respCreateService.Response.Code).To(Equal(pb.Response_SUCCESS))
+			Expect(respCreateService.Response.GetCode()).To(Equal(proto.Response_SUCCESS))
 		})
 
 		Context("when request is invalid", func() {
@@ -119,7 +120,7 @@ var _ = Describe("'Dependency' service", func() {
 				By("dependency is nil")
 				respCreateDependency, err := serviceResource.CreateDependenciesForMicroServices(getContext(), &pb.CreateDependenciesRequest{})
 				Expect(err).To(BeNil())
-				Expect(respCreateDependency.Response.Code).ToNot(Equal(pb.Response_SUCCESS))
+				Expect(respCreateDependency.Response.GetCode()).ToNot(Equal(proto.Response_SUCCESS))
 
 				consumer := &pb.MicroServiceKey{
 					AppId:       "create_dep_group",
@@ -148,7 +149,7 @@ var _ = Describe("'Dependency' service", func() {
 					},
 				})
 				Expect(err).To(BeNil())
-				Expect(respCreateDependency.Response.Code).ToNot(Equal(pb.Response_SUCCESS))
+				Expect(respCreateDependency.Response.GetCode()).ToNot(Equal(proto.Response_SUCCESS))
 
 				By("provider version is invalid")
 				respCreateDependency, err = serviceResource.CreateDependenciesForMicroServices(getContext(), &pb.CreateDependenciesRequest{
@@ -166,7 +167,7 @@ var _ = Describe("'Dependency' service", func() {
 					},
 				})
 				Expect(err).To(BeNil())
-				Expect(respCreateDependency.Response.Code).To(Equal(scerr.ErrInvalidParams))
+				Expect(respCreateDependency.Response.GetCode()).To(Equal(scerr.ErrInvalidParams))
 
 				By("consumer version is invalid")
 				respCreateDependency, err = serviceResource.CreateDependenciesForMicroServices(getContext(), &pb.CreateDependenciesRequest{
@@ -182,7 +183,7 @@ var _ = Describe("'Dependency' service", func() {
 					},
 				})
 				Expect(err).To(BeNil())
-				Expect(respCreateDependency.Response.Code).To(Equal(scerr.ErrInvalidParams))
+				Expect(respCreateDependency.Response.GetCode()).To(Equal(scerr.ErrInvalidParams))
 				respCreateDependency, err = serviceResource.CreateDependenciesForMicroServices(getContext(), &pb.CreateDependenciesRequest{
 					Dependencies: []*pb.ConsumerDependency{
 						{
@@ -196,7 +197,7 @@ var _ = Describe("'Dependency' service", func() {
 					},
 				})
 				Expect(err).To(BeNil())
-				Expect(respCreateDependency.Response.Code).To(Equal(scerr.ErrInvalidParams))
+				Expect(respCreateDependency.Response.GetCode()).To(Equal(scerr.ErrInvalidParams))
 				respCreateDependency, err = serviceResource.CreateDependenciesForMicroServices(getContext(), &pb.CreateDependenciesRequest{
 					Dependencies: []*pb.ConsumerDependency{
 						{
@@ -210,7 +211,7 @@ var _ = Describe("'Dependency' service", func() {
 					},
 				})
 				Expect(err).To(BeNil())
-				Expect(respCreateDependency.Response.Code).To(Equal(scerr.ErrInvalidParams))
+				Expect(respCreateDependency.Response.GetCode()).To(Equal(scerr.ErrInvalidParams))
 				respCreateDependency, err = serviceResource.CreateDependenciesForMicroServices(getContext(), &pb.CreateDependenciesRequest{
 					Dependencies: []*pb.ConsumerDependency{
 						{
@@ -224,7 +225,7 @@ var _ = Describe("'Dependency' service", func() {
 					},
 				})
 				Expect(err).To(BeNil())
-				Expect(respCreateDependency.Response.Code).To(Equal(scerr.ErrInvalidParams))
+				Expect(respCreateDependency.Response.GetCode()).To(Equal(scerr.ErrInvalidParams))
 				respCreateDependency, err = serviceResource.CreateDependenciesForMicroServices(getContext(), &pb.CreateDependenciesRequest{
 					Dependencies: []*pb.ConsumerDependency{
 						{
@@ -238,7 +239,7 @@ var _ = Describe("'Dependency' service", func() {
 					},
 				})
 				Expect(err).To(BeNil())
-				Expect(respCreateDependency.Response.Code).To(Equal(scerr.ErrInvalidParams))
+				Expect(respCreateDependency.Response.GetCode()).To(Equal(scerr.ErrInvalidParams))
 
 				By("consumer serviceName is invalid")
 				respCreateDependency, err = serviceResource.CreateDependenciesForMicroServices(getContext(), &pb.CreateDependenciesRequest{
@@ -254,7 +255,7 @@ var _ = Describe("'Dependency' service", func() {
 					},
 				})
 				Expect(err).To(BeNil())
-				Expect(respCreateDependency.Response.Code).ToNot(Equal(pb.Response_SUCCESS))
+				Expect(respCreateDependency.Response.GetCode()).ToNot(Equal(proto.Response_SUCCESS))
 
 				By("provider app is invalid")
 				respCreateDependency, err = serviceResource.CreateDependenciesForMicroServices(getContext(), &pb.CreateDependenciesRequest{
@@ -272,7 +273,7 @@ var _ = Describe("'Dependency' service", func() {
 					},
 				})
 				Expect(err).To(BeNil())
-				Expect(respCreateDependency.Response.Code).ToNot(Equal(pb.Response_SUCCESS))
+				Expect(respCreateDependency.Response.GetCode()).ToNot(Equal(proto.Response_SUCCESS))
 
 				By("provider serviceName is invalid")
 				respCreateDependency, err = serviceResource.CreateDependenciesForMicroServices(getContext(), &pb.CreateDependenciesRequest{
@@ -290,7 +291,7 @@ var _ = Describe("'Dependency' service", func() {
 					},
 				})
 				Expect(err).To(BeNil())
-				Expect(respCreateDependency.Response.Code).ToNot(Equal(pb.Response_SUCCESS))
+				Expect(respCreateDependency.Response.GetCode()).ToNot(Equal(proto.Response_SUCCESS))
 
 				By("provider version is invalid")
 				respCreateDependency, err = serviceResource.CreateDependenciesForMicroServices(getContext(), &pb.CreateDependenciesRequest{
@@ -308,7 +309,7 @@ var _ = Describe("'Dependency' service", func() {
 					},
 				})
 				Expect(err).To(BeNil())
-				Expect(respCreateDependency.Response.Code).ToNot(Equal(pb.Response_SUCCESS))
+				Expect(respCreateDependency.Response.GetCode()).ToNot(Equal(proto.Response_SUCCESS))
 
 				By("provider in diff env")
 				respCreateDependency, err = serviceResource.CreateDependenciesForMicroServices(getContext(), &pb.CreateDependenciesRequest{
@@ -327,7 +328,7 @@ var _ = Describe("'Dependency' service", func() {
 					},
 				})
 				Expect(err).To(BeNil())
-				Expect(respCreateDependency.Response.Code).To(Equal(pb.Response_SUCCESS))
+				Expect(respCreateDependency.Response.GetCode()).To(Equal(proto.Response_SUCCESS))
 
 				By("consumer in diff env")
 				consumer.Environment = pb.ENV_PROD
@@ -346,7 +347,7 @@ var _ = Describe("'Dependency' service", func() {
 					},
 				})
 				Expect(err).To(BeNil())
-				Expect(respCreateDependency.Response.Code).To(Equal(pb.Response_SUCCESS))
+				Expect(respCreateDependency.Response.GetCode()).To(Equal(proto.Response_SUCCESS))
 
 				Expect(deh.Handle()).To(BeNil())
 
@@ -354,14 +355,14 @@ var _ = Describe("'Dependency' service", func() {
 					ServiceId: consumerId1,
 				})
 				Expect(err).To(BeNil())
-				Expect(respCon.Response.Code).To(Equal(pb.Response_SUCCESS))
+				Expect(respCon.Response.GetCode()).To(Equal(proto.Response_SUCCESS))
 				Expect(len(respCon.Providers)).To(Equal(0))
 
 				respCon, err = serviceResource.GetConsumerDependencies(getContext(), &pb.GetDependenciesRequest{
 					ServiceId: consumerId2,
 				})
 				Expect(err).To(BeNil())
-				Expect(respCon.Response.Code).To(Equal(pb.Response_SUCCESS))
+				Expect(respCon.Response.GetCode()).To(Equal(proto.Response_SUCCESS))
 				Expect(len(respCon.Providers)).To(Equal(0))
 
 				By("dependencies is invalid")
@@ -386,7 +387,7 @@ var _ = Describe("'Dependency' service", func() {
 					Dependencies: deps,
 				})
 				Expect(err).To(BeNil())
-				Expect(respCreateDependency.Response.Code).To(Equal(scerr.ErrInvalidParams))
+				Expect(respCreateDependency.Response.GetCode()).To(Equal(scerr.ErrInvalidParams))
 			})
 		})
 
@@ -414,7 +415,7 @@ var _ = Describe("'Dependency' service", func() {
 					},
 				})
 				Expect(err).To(BeNil())
-				Expect(respCreateDependency.Response.Code).To(Equal(pb.Response_SUCCESS))
+				Expect(respCreateDependency.Response.GetCode()).To(Equal(proto.Response_SUCCESS))
 
 				Expect(deh.Handle()).To(BeNil())
 
@@ -422,7 +423,7 @@ var _ = Describe("'Dependency' service", func() {
 					ServiceId: consumerId1,
 				})
 				Expect(err).To(BeNil())
-				Expect(respPro.Response.Code).To(Equal(pb.Response_SUCCESS))
+				Expect(respPro.Response.GetCode()).To(Equal(proto.Response_SUCCESS))
 				Expect(len(respPro.Providers)).To(Equal(1))
 				Expect(respPro.Providers[0].Version).To(Equal("1.0.1"))
 
@@ -442,7 +443,7 @@ var _ = Describe("'Dependency' service", func() {
 					},
 				})
 				Expect(err).To(BeNil())
-				Expect(respCreateDependency.Response.Code).To(Equal(pb.Response_SUCCESS))
+				Expect(respCreateDependency.Response.GetCode()).To(Equal(proto.Response_SUCCESS))
 
 				Expect(deh.Handle()).To(BeNil())
 
@@ -450,7 +451,7 @@ var _ = Describe("'Dependency' service", func() {
 					ServiceId: consumerId1,
 				})
 				Expect(err).To(BeNil())
-				Expect(respPro.Response.Code).To(Equal(pb.Response_SUCCESS))
+				Expect(respPro.Response.GetCode()).To(Equal(proto.Response_SUCCESS))
 				Expect(len(respPro.Providers)).To(Equal(2))
 
 				By("add *")
@@ -471,7 +472,7 @@ var _ = Describe("'Dependency' service", func() {
 					},
 				})
 				Expect(err).To(BeNil())
-				Expect(respCreateDependency.Response.Code).To(Equal(pb.Response_SUCCESS))
+				Expect(respCreateDependency.Response.GetCode()).To(Equal(proto.Response_SUCCESS))
 
 				Expect(deh.Handle()).To(BeNil())
 
@@ -479,7 +480,7 @@ var _ = Describe("'Dependency' service", func() {
 					ServiceId: consumerId3,
 				})
 				Expect(err).To(BeNil())
-				Expect(respPro.Response.Code).To(Equal(pb.Response_SUCCESS))
+				Expect(respPro.Response.GetCode()).To(Equal(proto.Response_SUCCESS))
 				Expect(len(respPro.Providers)).ToNot(Equal(0))
 
 				By("clean all")
@@ -496,7 +497,7 @@ var _ = Describe("'Dependency' service", func() {
 					},
 				})
 				Expect(err).To(BeNil())
-				Expect(respCreateDependency.Response.Code).To(Equal(pb.Response_SUCCESS))
+				Expect(respCreateDependency.Response.GetCode()).To(Equal(proto.Response_SUCCESS))
 
 				By("add multiple providers")
 				respCreateDependency, err = serviceResource.CreateDependenciesForMicroServices(getContext(), &pb.CreateDependenciesRequest{
@@ -517,7 +518,7 @@ var _ = Describe("'Dependency' service", func() {
 					},
 				})
 				Expect(err).To(BeNil())
-				Expect(respCreateDependency.Response.Code).To(Equal(pb.Response_SUCCESS))
+				Expect(respCreateDependency.Response.GetCode()).To(Equal(proto.Response_SUCCESS))
 
 				By("add 1.0.0-2.0.0 to override *")
 				respCreateDependency, err = serviceResource.CreateDependenciesForMicroServices(getContext(), &pb.CreateDependenciesRequest{
@@ -535,7 +536,7 @@ var _ = Describe("'Dependency' service", func() {
 					},
 				})
 				Expect(err).To(BeNil())
-				Expect(respCreateDependency.Response.Code).To(Equal(pb.Response_SUCCESS))
+				Expect(respCreateDependency.Response.GetCode()).To(Equal(proto.Response_SUCCESS))
 
 				Expect(deh.Handle()).To(BeNil())
 
@@ -543,7 +544,7 @@ var _ = Describe("'Dependency' service", func() {
 					ServiceId: consumerId1,
 				})
 				Expect(err).To(BeNil())
-				Expect(respPro.Response.Code).To(Equal(pb.Response_SUCCESS))
+				Expect(respPro.Response.GetCode()).To(Equal(proto.Response_SUCCESS))
 				Expect(len(respPro.Providers)).To(Equal(1))
 				Expect(respPro.Providers[0].Version).To(Equal("1.0.0"))
 
@@ -563,7 +564,7 @@ var _ = Describe("'Dependency' service", func() {
 					},
 				})
 				Expect(err).To(BeNil())
-				Expect(respAddDependency.Response.Code).To(Equal(pb.Response_SUCCESS))
+				Expect(respAddDependency.Response.GetCode()).To(Equal(proto.Response_SUCCESS))
 
 				Expect(deh.Handle()).To(BeNil())
 
@@ -571,7 +572,7 @@ var _ = Describe("'Dependency' service", func() {
 					ServiceId: consumerId1,
 				})
 				Expect(err).To(BeNil())
-				Expect(respPro.Response.Code).To(Equal(pb.Response_SUCCESS))
+				Expect(respPro.Response.GetCode()).To(Equal(proto.Response_SUCCESS))
 				Expect(len(respPro.Providers)).To(Equal(2))
 
 				By("add provider is empty")
@@ -584,7 +585,7 @@ var _ = Describe("'Dependency' service", func() {
 					},
 				})
 				Expect(err).To(BeNil())
-				Expect(respCreateDependency.Response.Code).To(Equal(pb.Response_SUCCESS))
+				Expect(respCreateDependency.Response.GetCode()).To(Equal(proto.Response_SUCCESS))
 				respCreateDependency, err = serviceResource.CreateDependenciesForMicroServices(getContext(), &pb.CreateDependenciesRequest{
 					Dependencies: []*pb.ConsumerDependency{
 						{
@@ -593,7 +594,7 @@ var _ = Describe("'Dependency' service", func() {
 					},
 				})
 				Expect(err).To(BeNil())
-				Expect(respCreateDependency.Response.Code).To(Equal(pb.Response_SUCCESS))
+				Expect(respCreateDependency.Response.GetCode()).To(Equal(proto.Response_SUCCESS))
 
 				Expect(deh.Handle()).To(BeNil())
 
@@ -601,7 +602,7 @@ var _ = Describe("'Dependency' service", func() {
 					ServiceId: consumerId1,
 				})
 				Expect(err).To(BeNil())
-				Expect(respPro.Response.Code).To(Equal(pb.Response_SUCCESS))
+				Expect(respPro.Response.GetCode()).To(Equal(proto.Response_SUCCESS))
 				Expect(len(respPro.Providers)).To(Equal(0))
 			})
 		})
@@ -625,7 +626,7 @@ var _ = Describe("'Dependency' service", func() {
 				},
 			})
 			Expect(err).To(BeNil())
-			Expect(respCreateService.Response.Code).To(Equal(pb.Response_SUCCESS))
+			Expect(respCreateService.Response.GetCode()).To(Equal(proto.Response_SUCCESS))
 			consumerId1 = respCreateService.ServiceId
 
 			respCreateService, err = serviceResource.Create(getContext(), &pb.CreateServiceRequest{
@@ -638,7 +639,7 @@ var _ = Describe("'Dependency' service", func() {
 				},
 			})
 			Expect(err).To(BeNil())
-			Expect(respCreateService.Response.Code).To(Equal(pb.Response_SUCCESS))
+			Expect(respCreateService.Response.GetCode()).To(Equal(proto.Response_SUCCESS))
 			providerId1 = respCreateService.ServiceId
 
 			respCreateService, err = serviceResource.Create(getContext(), &pb.CreateServiceRequest{
@@ -651,7 +652,7 @@ var _ = Describe("'Dependency' service", func() {
 				},
 			})
 			Expect(err).To(BeNil())
-			Expect(respCreateService.Response.Code).To(Equal(pb.Response_SUCCESS))
+			Expect(respCreateService.Response.GetCode()).To(Equal(proto.Response_SUCCESS))
 			providerId2 = respCreateService.ServiceId
 		})
 
@@ -662,28 +663,28 @@ var _ = Describe("'Dependency' service", func() {
 					ServiceId: "",
 				})
 				Expect(err).To(BeNil())
-				Expect(respPro.Response.Code).ToNot(Equal(pb.Response_SUCCESS))
+				Expect(respPro.Response.GetCode()).ToNot(Equal(proto.Response_SUCCESS))
 
 				By("service does not exist when get provider")
 				respPro, err = serviceResource.GetProviderDependencies(getContext(), &pb.GetDependenciesRequest{
 					ServiceId: "noneservice",
 				})
 				Expect(err).To(BeNil())
-				Expect(respPro.Response.Code).ToNot(Equal(pb.Response_SUCCESS))
+				Expect(respPro.Response.GetCode()).ToNot(Equal(proto.Response_SUCCESS))
 
 				By("service id is empty when get consumer")
 				respCon, err := serviceResource.GetConsumerDependencies(getContext(), &pb.GetDependenciesRequest{
 					ServiceId: "",
 				})
 				Expect(err).To(BeNil())
-				Expect(respCon.Response.Code).ToNot(Equal(pb.Response_SUCCESS))
+				Expect(respCon.Response.GetCode()).ToNot(Equal(proto.Response_SUCCESS))
 
 				By("service does not exist when get consumer")
 				respCon, err = serviceResource.GetConsumerDependencies(getContext(), &pb.GetDependenciesRequest{
 					ServiceId: "noneservice",
 				})
 				Expect(err).To(BeNil())
-				Expect(respCon.Response.Code).ToNot(Equal(pb.Response_SUCCESS))
+				Expect(respCon.Response.GetCode()).ToNot(Equal(proto.Response_SUCCESS))
 			})
 		})
 
@@ -694,14 +695,14 @@ var _ = Describe("'Dependency' service", func() {
 					ServiceId: providerId1,
 				})
 				Expect(err).To(BeNil())
-				Expect(respPro.Response.Code).To(Equal(pb.Response_SUCCESS))
+				Expect(respPro.Response.GetCode()).To(Equal(proto.Response_SUCCESS))
 
 				By("get consumer")
 				respCon, err := serviceResource.GetConsumerDependencies(getContext(), &pb.GetDependenciesRequest{
 					ServiceId: consumerId1,
 				})
 				Expect(err).To(BeNil())
-				Expect(respCon.Response.Code).To(Equal(pb.Response_SUCCESS))
+				Expect(respCon.Response.GetCode()).To(Equal(proto.Response_SUCCESS))
 			})
 		})
 
@@ -715,7 +716,7 @@ var _ = Describe("'Dependency' service", func() {
 					VersionRule:       "1.0.0+",
 				})
 				Expect(err).To(BeNil())
-				Expect(resp.Response.Code).To(Equal(pb.Response_SUCCESS))
+				Expect(resp.Response.GetCode()).To(Equal(proto.Response_SUCCESS))
 
 				Expect(deh.Handle()).To(BeNil())
 
@@ -724,7 +725,7 @@ var _ = Describe("'Dependency' service", func() {
 					ServiceId: providerId1,
 				})
 				Expect(err).To(BeNil())
-				Expect(respGetP.Response.Code).To(Equal(pb.Response_SUCCESS))
+				Expect(respGetP.Response.GetCode()).To(Equal(proto.Response_SUCCESS))
 				Expect(respGetP.Consumers[0].ServiceId).To(Equal(consumerId1))
 
 				By("get provider's deps")
@@ -732,7 +733,7 @@ var _ = Describe("'Dependency' service", func() {
 					ServiceId: consumerId1,
 				})
 				Expect(err).To(BeNil())
-				Expect(respGetC.Response.Code).To(Equal(pb.Response_SUCCESS))
+				Expect(respGetC.Response.GetCode()).To(Equal(proto.Response_SUCCESS))
 				Expect(len(respGetC.Providers)).To(Equal(2))
 
 				//重复find
@@ -743,7 +744,7 @@ var _ = Describe("'Dependency' service", func() {
 					VersionRule:       "2.0.0+",
 				})
 				Expect(err).To(BeNil())
-				Expect(resp.Response.Code).To(Equal(pb.Response_SUCCESS))
+				Expect(resp.Response.GetCode()).To(Equal(proto.Response_SUCCESS))
 
 				Expect(deh.Handle()).To(BeNil())
 
@@ -752,7 +753,7 @@ var _ = Describe("'Dependency' service", func() {
 					ServiceId: providerId1,
 				})
 				Expect(err).To(BeNil())
-				Expect(respGetP.Response.Code).To(Equal(pb.Response_SUCCESS))
+				Expect(respGetP.Response.GetCode()).To(Equal(proto.Response_SUCCESS))
 				Expect(len(respGetP.Consumers)).To(Equal(0))
 
 				By("get provider again")
@@ -760,7 +761,7 @@ var _ = Describe("'Dependency' service", func() {
 					ServiceId: consumerId1,
 				})
 				Expect(err).To(BeNil())
-				Expect(respGetC.Response.Code).To(Equal(pb.Response_SUCCESS))
+				Expect(respGetC.Response.GetCode()).To(Equal(proto.Response_SUCCESS))
 				Expect(len(respGetC.Providers)).To(Equal(1))
 				Expect(respGetC.Providers[0].ServiceId).To(Equal(providerId2))
 
@@ -772,7 +773,7 @@ var _ = Describe("'Dependency' service", func() {
 					VersionRule:       "1.0.0+",
 				})
 				Expect(err).To(BeNil())
-				Expect(resp.Response.Code).To(Equal(pb.Response_SUCCESS))
+				Expect(resp.Response.GetCode()).To(Equal(proto.Response_SUCCESS))
 
 				Expect(deh.Handle()).To(BeNil())
 
@@ -781,7 +782,7 @@ var _ = Describe("'Dependency' service", func() {
 					NoSelf:    true,
 				})
 				Expect(err).To(BeNil())
-				Expect(respGetC.Response.Code).To(Equal(pb.Response_SUCCESS))
+				Expect(respGetC.Response.GetCode()).To(Equal(proto.Response_SUCCESS))
 				Expect(len(respGetC.Providers)).To(Equal(1))
 
 				By("find before provider register")
@@ -792,7 +793,7 @@ var _ = Describe("'Dependency' service", func() {
 					VersionRule:       "1.0.0+",
 				})
 				Expect(err).To(BeNil())
-				Expect(resp.Response.Code).To(Equal(scerr.ErrServiceNotExists))
+				Expect(resp.Response.GetCode()).To(Equal(scerr.ErrServiceNotExists))
 
 				respCreateF, err := serviceResource.Create(getContext(), &pb.CreateServiceRequest{
 					Service: &pb.MicroService{
@@ -804,7 +805,7 @@ var _ = Describe("'Dependency' service", func() {
 					},
 				})
 				Expect(err).To(BeNil())
-				Expect(respCreateF.Response.Code).To(Equal(pb.Response_SUCCESS))
+				Expect(respCreateF.Response.GetCode()).To(Equal(proto.Response_SUCCESS))
 				finder1 := respCreateF.ServiceId
 
 				resp, err = instanceResource.Find(getContext(), &pb.FindInstancesRequest{
@@ -814,7 +815,7 @@ var _ = Describe("'Dependency' service", func() {
 					VersionRule:       "1.0.0+",
 				})
 				Expect(err).To(BeNil())
-				Expect(resp.Response.Code).To(Equal(pb.Response_SUCCESS))
+				Expect(resp.Response.GetCode()).To(Equal(proto.Response_SUCCESS))
 
 				Expect(deh.Handle()).To(BeNil())
 
@@ -822,7 +823,7 @@ var _ = Describe("'Dependency' service", func() {
 					ServiceId: providerId2,
 				})
 				Expect(err).To(BeNil())
-				Expect(respGetC.Response.Code).To(Equal(pb.Response_SUCCESS))
+				Expect(respGetC.Response.GetCode()).To(Equal(proto.Response_SUCCESS))
 				Expect(len(respGetC.Providers)).To(Equal(1))
 				Expect(respGetC.Providers[0].ServiceId).To(Equal(finder1))
 
@@ -831,7 +832,7 @@ var _ = Describe("'Dependency' service", func() {
 					ServiceId: finder1, Force: true,
 				})
 				Expect(err).To(BeNil())
-				Expect(respDelP.Response.Code).To(Equal(pb.Response_SUCCESS))
+				Expect(respDelP.Response.GetCode()).To(Equal(proto.Response_SUCCESS))
 
 				Expect(deh.Handle()).To(BeNil())
 
@@ -839,7 +840,7 @@ var _ = Describe("'Dependency' service", func() {
 					ServiceId: providerId2,
 				})
 				Expect(err).To(BeNil())
-				Expect(respGetC.Response.Code).To(Equal(pb.Response_SUCCESS))
+				Expect(respGetC.Response.GetCode()).To(Equal(proto.Response_SUCCESS))
 				Expect(len(respGetC.Providers)).To(Equal(0))
 
 				respCreateF, err = serviceResource.Create(getContext(), &pb.CreateServiceRequest{
@@ -853,7 +854,7 @@ var _ = Describe("'Dependency' service", func() {
 					},
 				})
 				Expect(err).To(BeNil())
-				Expect(respCreateF.Response.Code).To(Equal(pb.Response_SUCCESS))
+				Expect(respCreateF.Response.GetCode()).To(Equal(proto.Response_SUCCESS))
 
 				resp, err = instanceResource.Find(getContext(), &pb.FindInstancesRequest{
 					ConsumerServiceId: providerId2,
@@ -862,7 +863,7 @@ var _ = Describe("'Dependency' service", func() {
 					VersionRule:       "1.0.0+",
 				})
 				Expect(err).To(BeNil())
-				Expect(resp.Response.Code).To(Equal(pb.Response_SUCCESS))
+				Expect(resp.Response.GetCode()).To(Equal(proto.Response_SUCCESS))
 
 				Expect(deh.Handle()).To(BeNil())
 
@@ -870,7 +871,7 @@ var _ = Describe("'Dependency' service", func() {
 					ServiceId: providerId2,
 				})
 				Expect(err).To(BeNil())
-				Expect(respGetC.Response.Code).To(Equal(pb.Response_SUCCESS))
+				Expect(respGetC.Response.GetCode()).To(Equal(proto.Response_SUCCESS))
 				Expect(len(respGetC.Providers)).To(Equal(1))
 				Expect(respGetC.Providers[0].ServiceId).To(Equal(finder1))
 			})
diff --git a/server/service/event/dependency_event_handler.go b/server/service/event/dependency_event_handler.go
index feb5e25..ec5847d 100644
--- a/server/service/event/dependency_event_handler.go
+++ b/server/service/event/dependency_event_handler.go
@@ -23,10 +23,11 @@ import (
 	"github.com/apache/servicecomb-service-center/pkg/gopool"
 	"github.com/apache/servicecomb-service-center/pkg/log"
 	"github.com/apache/servicecomb-service-center/pkg/queue"
+	pb "github.com/apache/servicecomb-service-center/pkg/registry"
 	"github.com/apache/servicecomb-service-center/pkg/util"
 	"github.com/apache/servicecomb-service-center/server/core"
 	"github.com/apache/servicecomb-service-center/server/core/backend"
-	pb "github.com/apache/servicecomb-service-center/server/core/proto"
+	"github.com/apache/servicecomb-service-center/server/core/proto"
 	"github.com/apache/servicecomb-service-center/server/mux"
 	"github.com/apache/servicecomb-service-center/server/plugin/discovery"
 	"github.com/apache/servicecomb-service-center/server/plugin/registry"
@@ -184,8 +185,8 @@ func (h *DependencyEventHandler) dependencyRuleHandle(res interface{}) error {
 	consumerFlag := util.StringJoin([]string{r.Consumer.Environment, r.Consumer.AppId, r.Consumer.ServiceName, r.Consumer.Version}, "/")
 
 	domainProject := dependencyEventHandlerRes.domainProject
-	consumerInfo := pb.DependenciesToKeys([]*pb.MicroServiceKey{r.Consumer}, domainProject)[0]
-	providersInfo := pb.DependenciesToKeys(r.Providers, domainProject)
+	consumerInfo := proto.DependenciesToKeys([]*pb.MicroServiceKey{r.Consumer}, domainProject)[0]
+	providersInfo := proto.DependenciesToKeys(r.Providers, domainProject)
 
 	var dep serviceUtil.Dependency
 	var err error
diff --git a/server/service/event/dependency_rule_event_handler.go b/server/service/event/dependency_rule_event_handler.go
index 063d6db..3b66609 100644
--- a/server/service/event/dependency_rule_event_handler.go
+++ b/server/service/event/dependency_rule_event_handler.go
@@ -18,9 +18,9 @@ package event
 
 import (
 	"github.com/apache/servicecomb-service-center/pkg/log"
+	pb "github.com/apache/servicecomb-service-center/pkg/registry"
 	"github.com/apache/servicecomb-service-center/server/core"
 	"github.com/apache/servicecomb-service-center/server/core/backend"
-	pb "github.com/apache/servicecomb-service-center/server/core/proto"
 	"github.com/apache/servicecomb-service-center/server/plugin/discovery"
 	"github.com/apache/servicecomb-service-center/server/service/cache"
 )
diff --git a/server/service/event/dependency_rule_event_handler_test.go b/server/service/event/dependency_rule_event_handler_test.go
index 0ac317e..cb4e839 100644
--- a/server/service/event/dependency_rule_event_handler_test.go
+++ b/server/service/event/dependency_rule_event_handler_test.go
@@ -18,8 +18,8 @@ package event
 
 import (
 	"context"
+	pb "github.com/apache/servicecomb-service-center/pkg/registry"
 	"github.com/apache/servicecomb-service-center/server/core"
-	pb "github.com/apache/servicecomb-service-center/server/core/proto"
 	"github.com/apache/servicecomb-service-center/server/plugin/discovery"
 	"github.com/apache/servicecomb-service-center/server/service/cache"
 	"testing"
diff --git a/server/service/event/domain_event_handler.go b/server/service/event/domain_event_handler.go
index 9b5a29c..60fcf9b 100644
--- a/server/service/event/domain_event_handler.go
+++ b/server/service/event/domain_event_handler.go
@@ -17,8 +17,8 @@
 package event
 
 import (
+	"github.com/apache/servicecomb-service-center/pkg/registry"
 	"github.com/apache/servicecomb-service-center/server/core/backend"
-	pb "github.com/apache/servicecomb-service-center/server/core/proto"
 	"github.com/apache/servicecomb-service-center/server/plugin/discovery"
 	"github.com/apache/servicecomb-service-center/server/service/metrics"
 )
@@ -34,9 +34,9 @@ func (h *DomainEventHandler) Type() discovery.Type {
 func (h *DomainEventHandler) OnEvent(evt discovery.KvEvent) {
 	action := evt.Type
 	switch action {
-	case pb.EVT_INIT, pb.EVT_CREATE:
+	case registry.EVT_INIT, registry.EVT_CREATE:
 		metrics.ReportDomains(1)
-	case pb.EVT_DELETE:
+	case registry.EVT_DELETE:
 		metrics.ReportDomains(-1)
 	}
 }
diff --git a/server/service/event/instance_event_handler.go b/server/service/event/instance_event_handler.go
index 0991a6c..c355760 100644
--- a/server/service/event/instance_event_handler.go
+++ b/server/service/event/instance_event_handler.go
@@ -19,10 +19,11 @@ package event
 import (
 	"context"
 	"github.com/apache/servicecomb-service-center/pkg/log"
+	pb "github.com/apache/servicecomb-service-center/pkg/registry"
 	"github.com/apache/servicecomb-service-center/pkg/util"
 	apt "github.com/apache/servicecomb-service-center/server/core"
 	"github.com/apache/servicecomb-service-center/server/core/backend"
-	pb "github.com/apache/servicecomb-service-center/server/core/proto"
+	"github.com/apache/servicecomb-service-center/server/core/proto"
 	"github.com/apache/servicecomb-service-center/server/notify"
 	"github.com/apache/servicecomb-service-center/server/plugin/discovery"
 	"github.com/apache/servicecomb-service-center/server/service/cache"
@@ -113,7 +114,7 @@ func (h *InstanceEventHandler) OnEvent(evt discovery.KvEvent) {
 		return
 	}
 
-	PublishInstanceEvent(evt, domainProject, pb.MicroServiceToKey(domainProject, ms), consumerIDs)
+	PublishInstanceEvent(evt, domainProject, proto.MicroServiceToKey(domainProject, ms), consumerIDs)
 }
 
 func NewInstanceEventHandler() *InstanceEventHandler {
@@ -128,7 +129,7 @@ func PublishInstanceEvent(evt discovery.KvEvent, domainProject string, serviceKe
 	}
 
 	response := &pb.WatchInstanceResponse{
-		Response: pb.CreateResponse(pb.Response_SUCCESS, "Watch instance successfully."),
+		Response: proto.CreateResponse(proto.Response_SUCCESS, "Watch instance successfully."),
 		Action:   string(evt.Type),
 		Key:      serviceKey,
 		Instance: evt.KV.Value.(*pb.MicroServiceInstance),
diff --git a/server/service/event/rule_event_handler.go b/server/service/event/rule_event_handler.go
index aa4170d..dedf31e 100644
--- a/server/service/event/rule_event_handler.go
+++ b/server/service/event/rule_event_handler.go
@@ -20,11 +20,12 @@ import (
 	"context"
 	"fmt"
 	"github.com/apache/servicecomb-service-center/pkg/log"
+	pb "github.com/apache/servicecomb-service-center/pkg/registry"
 	"github.com/apache/servicecomb-service-center/pkg/task"
 	"github.com/apache/servicecomb-service-center/pkg/util"
 	"github.com/apache/servicecomb-service-center/server/core"
 	"github.com/apache/servicecomb-service-center/server/core/backend"
-	pb "github.com/apache/servicecomb-service-center/server/core/proto"
+	"github.com/apache/servicecomb-service-center/server/core/proto"
 	"github.com/apache/servicecomb-service-center/server/notify"
 	"github.com/apache/servicecomb-service-center/server/plugin/discovery"
 	serviceUtil "github.com/apache/servicecomb-service-center/server/service/util"
@@ -74,7 +75,7 @@ func (apt *RulesChangedTask) publish(ctx context.Context, domainProject, provide
 			providerID, provider.Environment, provider.AppId, provider.ServiceName, provider.Version)
 		return err
 	}
-	providerKey := pb.MicroServiceToKey(domainProject, provider)
+	providerKey := proto.MicroServiceToKey(domainProject, provider)
 
 	PublishInstanceEvent(apt.KvEvent, domainProject, providerKey, consumerIds)
 	return nil
diff --git a/server/service/event/schema_summary_event_handler.go b/server/service/event/schema_summary_event_handler.go
index a93075f..d526eaf 100644
--- a/server/service/event/schema_summary_event_handler.go
+++ b/server/service/event/schema_summary_event_handler.go
@@ -17,9 +17,9 @@
 package event
 
 import (
+	pb "github.com/apache/servicecomb-service-center/pkg/registry"
 	"github.com/apache/servicecomb-service-center/server/core"
 	"github.com/apache/servicecomb-service-center/server/core/backend"
-	pb "github.com/apache/servicecomb-service-center/server/core/proto"
 	"github.com/apache/servicecomb-service-center/server/plugin/discovery"
 	"github.com/apache/servicecomb-service-center/server/service/metrics"
 	"strings"
diff --git a/server/service/event/service_event_handler.go b/server/service/event/service_event_handler.go
index 6995f95..54aa54e 100644
--- a/server/service/event/service_event_handler.go
+++ b/server/service/event/service_event_handler.go
@@ -19,9 +19,10 @@ package event
 import (
 	"context"
 	"github.com/apache/servicecomb-service-center/pkg/log"
+	pb "github.com/apache/servicecomb-service-center/pkg/registry"
 	"github.com/apache/servicecomb-service-center/server/core"
 	"github.com/apache/servicecomb-service-center/server/core/backend"
-	pb "github.com/apache/servicecomb-service-center/server/core/proto"
+	"github.com/apache/servicecomb-service-center/server/core/proto"
 	"github.com/apache/servicecomb-service-center/server/plugin/discovery"
 	"github.com/apache/servicecomb-service-center/server/service/cache"
 	"github.com/apache/servicecomb-service-center/server/service/metrics"
@@ -69,7 +70,7 @@ func (h *ServiceEventHandler) OnEvent(evt discovery.KvEvent) {
 		evt.Type, ms.ServiceId, ms.Environment, ms.AppId, ms.ServiceName, ms.Version)
 
 	// cache
-	providerKey := pb.MicroServiceToKey(domainProject, ms)
+	providerKey := proto.MicroServiceToKey(domainProject, ms)
 	cache.FindInstances.Remove(providerKey)
 }
 
diff --git a/server/service/event/tag_event_handler.go b/server/service/event/tag_event_handler.go
index 6a1ed37..b66fed9 100644
--- a/server/service/event/tag_event_handler.go
+++ b/server/service/event/tag_event_handler.go
@@ -20,11 +20,12 @@ import (
 	"context"
 	"fmt"
 	"github.com/apache/servicecomb-service-center/pkg/log"
+	pb "github.com/apache/servicecomb-service-center/pkg/registry"
 	"github.com/apache/servicecomb-service-center/pkg/task"
 	"github.com/apache/servicecomb-service-center/pkg/util"
 	"github.com/apache/servicecomb-service-center/server/core"
 	"github.com/apache/servicecomb-service-center/server/core/backend"
-	pb "github.com/apache/servicecomb-service-center/server/core/proto"
+	"github.com/apache/servicecomb-service-center/server/core/proto"
 	"github.com/apache/servicecomb-service-center/server/notify"
 	"github.com/apache/servicecomb-service-center/server/plugin/discovery"
 	"github.com/apache/servicecomb-service-center/server/service/cache"
@@ -69,7 +70,7 @@ func (apt *TagsChangedTask) publish(ctx context.Context, domainProject, consumer
 		return fmt.Errorf("consumer[%s] does not exist", consumerID)
 	}
 
-	serviceKey := pb.MicroServiceToKey(domainProject, consumer)
+	serviceKey := proto.MicroServiceToKey(domainProject, consumer)
 	cache.FindInstances.Remove(serviceKey)
 
 	providerIDs, err := serviceUtil.GetProviderIds(ctx, domainProject, consumer)
@@ -87,7 +88,7 @@ func (apt *TagsChangedTask) publish(ctx context.Context, domainProject, consumer
 			continue
 		}
 
-		providerKey := pb.MicroServiceToKey(domainProject, provider)
+		providerKey := proto.MicroServiceToKey(domainProject, provider)
 		PublishInstanceEvent(apt.KvEvent, domainProject, providerKey, []string{consumerID})
 	}
 	return nil
diff --git a/server/service/instance.go b/server/service/instance.go
index 22d376b..a4f17c0 100644
--- a/server/service/instance.go
+++ b/server/service/instance.go
@@ -25,10 +25,11 @@ import (
 	errorsEx "github.com/apache/servicecomb-service-center/pkg/errors"
 	"github.com/apache/servicecomb-service-center/pkg/gopool"
 	"github.com/apache/servicecomb-service-center/pkg/log"
+	pb "github.com/apache/servicecomb-service-center/pkg/registry"
 	"github.com/apache/servicecomb-service-center/pkg/util"
 	apt "github.com/apache/servicecomb-service-center/server/core"
 	"github.com/apache/servicecomb-service-center/server/core/backend"
-	pb "github.com/apache/servicecomb-service-center/server/core/proto"
+	"github.com/apache/servicecomb-service-center/server/core/proto"
 	"github.com/apache/servicecomb-service-center/server/health"
 	"github.com/apache/servicecomb-service-center/server/plugin"
 	"github.com/apache/servicecomb-service-center/server/plugin/quota"
@@ -99,7 +100,7 @@ func (s *InstanceService) Register(ctx context.Context, in *pb.RegisterInstanceR
 	if err := Validate(in); err != nil {
 		log.Errorf(err, "register instance failed, invalid parameters, operator %s", remoteIP)
 		return &pb.RegisterInstanceResponse{
-			Response: pb.CreateResponse(scerr.ErrInvalidParams, err.Error()),
+			Response: proto.CreateResponse(scerr.ErrInvalidParams, err.Error()),
 		}, nil
 	}
 
@@ -114,8 +115,8 @@ func (s *InstanceService) Register(ctx context.Context, in *pb.RegisterInstanceR
 		// 2. in the self-protection scenario, the instance is unhealthy
 		//    and needs to be re-registered.
 		resp, err := s.Heartbeat(ctx, &pb.HeartbeatRequest{ServiceId: instance.ServiceId, InstanceId: instance.InstanceId})
-		switch resp.Response.Code {
-		case pb.Response_SUCCESS:
+		switch resp.Response.GetCode() {
+		case proto.Response_SUCCESS:
 			log.Infof("register instance successful, reuse instance[%s/%s], operator %s",
 				instance.ServiceId, instance.InstanceId, remoteIP)
 			return &pb.RegisterInstanceResponse{
@@ -137,7 +138,7 @@ func (s *InstanceService) Register(ctx context.Context, in *pb.RegisterInstanceR
 		log.Errorf(err, "register service[%s]'s instance failed, endpoints %v, host '%s', operator %s",
 			instance.ServiceId, instance.Endpoints, instance.HostName, remoteIP)
 		return &pb.RegisterInstanceResponse{
-			Response: pb.CreateResponseWithSCErr(err),
+			Response: proto.CreateResponseWithSCErr(err),
 		}, nil
 	}
 
@@ -162,7 +163,7 @@ func (s *InstanceService) Register(ctx context.Context, in *pb.RegisterInstanceR
 			log.Errorf(reporter.Err, "register instance failed, %s, operator %s",
 				instanceFlag, remoteIP)
 			response := &pb.RegisterInstanceResponse{
-				Response: pb.CreateResponseWithSCErr(reporter.Err),
+				Response: proto.CreateResponseWithSCErr(reporter.Err),
 			}
 			if reporter.Err.InternalError() {
 				return response, reporter.Err
@@ -178,7 +179,7 @@ func (s *InstanceService) Register(ctx context.Context, in *pb.RegisterInstanceR
 			"register instance failed, %s, instanceID %s, operator %s",
 			instanceFlag, instanceID, remoteIP)
 		return &pb.RegisterInstanceResponse{
-			Response: pb.CreateResponse(scerr.ErrInternal, err.Error()),
+			Response: proto.CreateResponse(scerr.ErrInternal, err.Error()),
 		}, err
 	}
 
@@ -186,7 +187,7 @@ func (s *InstanceService) Register(ctx context.Context, in *pb.RegisterInstanceR
 	if err != nil {
 		log.Errorf(err, "grant lease failed, %s, operator: %s", instanceFlag, remoteIP)
 		return &pb.RegisterInstanceResponse{
-			Response: pb.CreateResponse(scerr.ErrUnavailableBackend, err.Error()),
+			Response: proto.CreateResponse(scerr.ErrUnavailableBackend, err.Error()),
 		}, err
 	}
 
@@ -211,7 +212,7 @@ func (s *InstanceService) Register(ctx context.Context, in *pb.RegisterInstanceR
 			"register instance failed, %s, instanceID %s, operator %s",
 			instanceFlag, instanceID, remoteIP)
 		return &pb.RegisterInstanceResponse{
-			Response: pb.CreateResponse(scerr.ErrUnavailableBackend, err.Error()),
+			Response: proto.CreateResponse(scerr.ErrUnavailableBackend, err.Error()),
 		}, err
 	}
 	if !resp.Succeeded {
@@ -219,7 +220,7 @@ func (s *InstanceService) Register(ctx context.Context, in *pb.RegisterInstanceR
 			"register instance failed, %s, instanceID %s, operator %s: service does not exist",
 			instanceFlag, instanceID, remoteIP)
 		return &pb.RegisterInstanceResponse{
-			Response: pb.CreateResponse(scerr.ErrServiceNotExists, "Service does not exist."),
+			Response: proto.CreateResponse(scerr.ErrServiceNotExists, "Service does not exist."),
 		}, nil
 	}
 
@@ -232,7 +233,7 @@ func (s *InstanceService) Register(ctx context.Context, in *pb.RegisterInstanceR
 	log.Infof("register instance %s, instanceID %s, operator %s",
 		instanceFlag, instanceID, remoteIP)
 	return &pb.RegisterInstanceResponse{
-		Response:   pb.CreateResponse(pb.Response_SUCCESS, "Register service instance successfully."),
+		Response:   proto.CreateResponse(proto.Response_SUCCESS, "Register service instance successfully."),
 		InstanceId: instanceID,
 	}, nil
 }
@@ -243,7 +244,7 @@ func (s *InstanceService) Unregister(ctx context.Context, in *pb.UnregisterInsta
 	if err := Validate(in); err != nil {
 		log.Errorf(err, "unregister instance failed, invalid parameters, operator %s", remoteIP)
 		return &pb.UnregisterInstanceResponse{
-			Response: pb.CreateResponse(scerr.ErrInvalidParams, err.Error()),
+			Response: proto.CreateResponse(scerr.ErrInvalidParams, err.Error()),
 		}, nil
 	}
 
@@ -257,7 +258,7 @@ func (s *InstanceService) Unregister(ctx context.Context, in *pb.UnregisterInsta
 	if err != nil {
 		log.Errorf(err, "unregister instance failed, instance[%s], operator %s: revoke instance failed", instanceFlag, remoteIP)
 		resp := &pb.UnregisterInstanceResponse{
-			Response: pb.CreateResponseWithSCErr(err),
+			Response: proto.CreateResponseWithSCErr(err),
 		}
 		if err.InternalError() {
 			return resp, err
@@ -267,7 +268,7 @@ func (s *InstanceService) Unregister(ctx context.Context, in *pb.UnregisterInsta
 
 	log.Infof("unregister instance[%s], operator %s", instanceFlag, remoteIP)
 	return &pb.UnregisterInstanceResponse{
-		Response: pb.CreateResponse(pb.Response_SUCCESS, "Unregister service instance successfully."),
+		Response: proto.CreateResponse(proto.Response_SUCCESS, "Unregister service instance successfully."),
 	}, nil
 }
 
@@ -296,7 +297,7 @@ func (s *InstanceService) Heartbeat(ctx context.Context, in *pb.HeartbeatRequest
 	if err := Validate(in); err != nil {
 		log.Errorf(err, "heartbeat failed, invalid parameters, operator %s", remoteIP)
 		return &pb.HeartbeatResponse{
-			Response: pb.CreateResponse(scerr.ErrInvalidParams, err.Error()),
+			Response: proto.CreateResponse(scerr.ErrInvalidParams, err.Error()),
 		}, nil
 	}
 
@@ -308,7 +309,7 @@ func (s *InstanceService) Heartbeat(ctx context.Context, in *pb.HeartbeatRequest
 		log.Errorf(err, "heartbeat failed, instance[%s]. operator %s",
 			instanceFlag, remoteIP)
 		resp := &pb.HeartbeatResponse{
-			Response: pb.CreateResponseWithSCErr(err),
+			Response: proto.CreateResponseWithSCErr(err),
 		}
 		if err.InternalError() {
 			return resp, err
@@ -323,7 +324,7 @@ func (s *InstanceService) Heartbeat(ctx context.Context, in *pb.HeartbeatRequest
 		log.Infof("heartbeat successful, renew instance[%s] ttl to %d. operator %s", instanceFlag, ttl, remoteIP)
 	}
 	return &pb.HeartbeatResponse{
-		Response: pb.CreateResponse(pb.Response_SUCCESS, "Update service instance heartbeat successfully."),
+		Response: proto.CreateResponse(proto.Response_SUCCESS, "Update service instance heartbeat successfully."),
 	}, nil
 }
 
@@ -331,7 +332,7 @@ func (s *InstanceService) HeartbeatSet(ctx context.Context, in *pb.HeartbeatSetR
 	if len(in.Instances) == 0 {
 		log.Errorf(nil, "heartbeats failed, invalid request. Body not contain Instances or is empty")
 		return &pb.HeartbeatSetResponse{
-			Response: pb.CreateResponse(scerr.ErrInvalidParams, "Request format invalid."),
+			Response: proto.CreateResponse(scerr.ErrInvalidParams, "Request format invalid."),
 		}, nil
 	}
 	domainProject := util.ParseDomainProject(ctx)
@@ -369,13 +370,13 @@ func (s *InstanceService) HeartbeatSet(ctx context.Context, in *pb.HeartbeatSetR
 	if !failFlag && successFlag {
 		log.Infof("batch update heartbeats[%s] successfully", count)
 		return &pb.HeartbeatSetResponse{
-			Response:  pb.CreateResponse(pb.Response_SUCCESS, "Heartbeat set successfully."),
+			Response:  proto.CreateResponse(proto.Response_SUCCESS, "Heartbeat set successfully."),
 			Instances: instanceHbRstArr,
 		}, nil
 	}
 	log.Errorf(nil, "batch update heartbeats failed, %v", in.Instances)
 	return &pb.HeartbeatSetResponse{
-		Response:  pb.CreateResponse(scerr.ErrInstanceNotExists, "Heartbeat set failed."),
+		Response:  proto.CreateResponse(scerr.ErrInstanceNotExists, "Heartbeat set failed."),
 		Instances: instanceHbRstArr,
 	}, nil
 }
@@ -401,7 +402,7 @@ func (s *InstanceService) GetOneInstance(ctx context.Context, in *pb.GetOneInsta
 	if err != nil {
 		log.Errorf(err, "get instance failed: invalid parameters")
 		return &pb.GetOneInstanceResponse{
-			Response: pb.CreateResponse(scerr.ErrInvalidParams, err.Error()),
+			Response: proto.CreateResponse(scerr.ErrInvalidParams, err.Error()),
 		}, nil
 	}
 
@@ -414,14 +415,14 @@ func (s *InstanceService) GetOneInstance(ctx context.Context, in *pb.GetOneInsta
 			log.Errorf(err, "get consumer failed, consumer[%s] find provider instance[%s/%s]",
 				in.ConsumerServiceId, in.ProviderServiceId, in.ProviderInstanceId)
 			return &pb.GetOneInstanceResponse{
-				Response: pb.CreateResponse(scerr.ErrInternal, err.Error()),
+				Response: proto.CreateResponse(scerr.ErrInternal, err.Error()),
 			}, err
 		}
 		if service == nil {
 			log.Errorf(nil, "consumer does not exist, consumer[%s] find provider instance[%s/%s]",
 				in.ConsumerServiceId, in.ProviderServiceId, in.ProviderInstanceId)
 			return &pb.GetOneInstanceResponse{
-				Response: pb.CreateResponse(scerr.ErrServiceNotExists,
+				Response: proto.CreateResponse(scerr.ErrServiceNotExists,
 					fmt.Sprintf("Consumer[%s] does not exist.", in.ConsumerServiceId)),
 			}, nil
 		}
@@ -432,14 +433,14 @@ func (s *InstanceService) GetOneInstance(ctx context.Context, in *pb.GetOneInsta
 		log.Errorf(err, "get provider failed, consumer[%s] find provider instance[%s/%s]",
 			in.ConsumerServiceId, in.ProviderServiceId, in.ProviderInstanceId)
 		return &pb.GetOneInstanceResponse{
-			Response: pb.CreateResponse(scerr.ErrInternal, err.Error()),
+			Response: proto.CreateResponse(scerr.ErrInternal, err.Error()),
 		}, err
 	}
 	if provider == nil {
 		log.Errorf(nil, "provider does not exist, consumer[%s] find provider instance[%s/%s]",
 			in.ConsumerServiceId, in.ProviderServiceId, in.ProviderInstanceId)
 		return &pb.GetOneInstanceResponse{
-			Response: pb.CreateResponse(scerr.ErrServiceNotExists,
+			Response: proto.CreateResponse(scerr.ErrServiceNotExists,
 				fmt.Sprintf("Provider[%s] does not exist.", in.ProviderServiceId)),
 		}, nil
 	}
@@ -453,21 +454,21 @@ func (s *InstanceService) GetOneInstance(ctx context.Context, in *pb.GetOneInsta
 
 	var item *cache.VersionRuleCacheItem
 	rev, _ := ctx.Value(util.CtxRequestRevision).(string)
-	item, err = cache.FindInstances.GetWithProviderID(ctx, service, pb.MicroServiceToKey(domainProject, provider),
+	item, err = cache.FindInstances.GetWithProviderID(ctx, service, proto.MicroServiceToKey(domainProject, provider),
 		&pb.HeartbeatSetElement{
 			ServiceId: in.ProviderServiceId, InstanceId: in.ProviderInstanceId,
 		}, in.Tags, rev)
 	if err != nil {
 		log.Errorf(err, "FindInstances.GetWithProviderID failed, %s failed", findFlag())
 		return &pb.GetOneInstanceResponse{
-			Response: pb.CreateResponse(scerr.ErrInternal, err.Error()),
+			Response: proto.CreateResponse(scerr.ErrInternal, err.Error()),
 		}, err
 	}
 	if item == nil || len(item.Instances) == 0 {
 		mes := fmt.Errorf("%s failed, provider instance does not exist", findFlag())
 		log.Errorf(mes, "FindInstances.GetWithProviderID failed")
 		return &pb.GetOneInstanceResponse{
-			Response: pb.CreateResponse(scerr.ErrInstanceNotExists, mes.Error()),
+			Response: proto.CreateResponse(scerr.ErrInstanceNotExists, mes.Error()),
 		}, nil
 	}
 
@@ -478,7 +479,7 @@ func (s *InstanceService) GetOneInstance(ctx context.Context, in *pb.GetOneInsta
 	_ = util.SetContext(ctx, util.CtxResponseRevision, item.Rev)
 
 	return &pb.GetOneInstanceResponse{
-		Response: pb.CreateResponse(pb.Response_SUCCESS, "Get instance successfully."),
+		Response: proto.CreateResponse(proto.Response_SUCCESS, "Get instance successfully."),
 		Instance: instance,
 	}, nil
 }
@@ -488,7 +489,7 @@ func (s *InstanceService) GetInstances(ctx context.Context, in *pb.GetInstancesR
 	if err != nil {
 		log.Errorf(err, "get instances failed: invalid parameters")
 		return &pb.GetInstancesResponse{
-			Response: pb.CreateResponse(scerr.ErrInvalidParams, err.Error()),
+			Response: proto.CreateResponse(scerr.ErrInvalidParams, err.Error()),
 		}, nil
 	}
 
@@ -501,14 +502,14 @@ func (s *InstanceService) GetInstances(ctx context.Context, in *pb.GetInstancesR
 			log.Errorf(err, "get consumer failed, consumer[%s] find provider instances",
 				in.ConsumerServiceId, in.ProviderServiceId)
 			return &pb.GetInstancesResponse{
-				Response: pb.CreateResponse(scerr.ErrInternal, err.Error()),
+				Response: proto.CreateResponse(scerr.ErrInternal, err.Error()),
 			}, err
 		}
 		if service == nil {
 			log.Errorf(nil, "consumer does not exist, consumer[%s] find provider instances",
 				in.ConsumerServiceId, in.ProviderServiceId)
 			return &pb.GetInstancesResponse{
-				Response: pb.CreateResponse(scerr.ErrServiceNotExists,
+				Response: proto.CreateResponse(scerr.ErrServiceNotExists,
 					fmt.Sprintf("Consumer[%s] does not exist.", in.ConsumerServiceId)),
 			}, nil
 		}
@@ -519,14 +520,14 @@ func (s *InstanceService) GetInstances(ctx context.Context, in *pb.GetInstancesR
 		log.Errorf(err, "get provider failed, consumer[%s] find provider instances",
 			in.ConsumerServiceId, in.ProviderServiceId)
 		return &pb.GetInstancesResponse{
-			Response: pb.CreateResponse(scerr.ErrInternal, err.Error()),
+			Response: proto.CreateResponse(scerr.ErrInternal, err.Error()),
 		}, err
 	}
 	if provider == nil {
 		log.Errorf(nil, "provider does not exist, consumer[%s] find provider instances",
 			in.ConsumerServiceId, in.ProviderServiceId)
 		return &pb.GetInstancesResponse{
-			Response: pb.CreateResponse(scerr.ErrServiceNotExists,
+			Response: proto.CreateResponse(scerr.ErrServiceNotExists,
 				fmt.Sprintf("Provider[%s] does not exist.", in.ProviderServiceId)),
 		}, nil
 	}
@@ -539,21 +540,21 @@ func (s *InstanceService) GetInstances(ctx context.Context, in *pb.GetInstancesR
 
 	var item *cache.VersionRuleCacheItem
 	rev, _ := ctx.Value(util.CtxRequestRevision).(string)
-	item, err = cache.FindInstances.GetWithProviderID(ctx, service, pb.MicroServiceToKey(domainProject, provider),
+	item, err = cache.FindInstances.GetWithProviderID(ctx, service, proto.MicroServiceToKey(domainProject, provider),
 		&pb.HeartbeatSetElement{
 			ServiceId: in.ProviderServiceId,
 		}, in.Tags, rev)
 	if err != nil {
 		log.Errorf(err, "FindInstances.GetWithProviderID failed, %s failed", findFlag())
 		return &pb.GetInstancesResponse{
-			Response: pb.CreateResponse(scerr.ErrInternal, err.Error()),
+			Response: proto.CreateResponse(scerr.ErrInternal, err.Error()),
 		}, err
 	}
 	if item == nil || len(item.ServiceIds) == 0 {
 		mes := fmt.Errorf("%s failed, provider instance does not exist", findFlag())
 		log.Errorf(mes, "FindInstances.GetWithProviderID failed")
 		return &pb.GetInstancesResponse{
-			Response: pb.CreateResponse(scerr.ErrServiceNotExists, mes.Error()),
+			Response: proto.CreateResponse(scerr.ErrServiceNotExists, mes.Error()),
 		}, nil
 	}
 
@@ -564,7 +565,7 @@ func (s *InstanceService) GetInstances(ctx context.Context, in *pb.GetInstancesR
 	_ = util.SetContext(ctx, util.CtxResponseRevision, item.Rev)
 
 	return &pb.GetInstancesResponse{
-		Response:  pb.CreateResponse(pb.Response_SUCCESS, "Query service instances successfully."),
+		Response:  proto.CreateResponse(proto.Response_SUCCESS, "Query service instances successfully."),
 		Instances: instances,
 	}, nil
 }
@@ -574,7 +575,7 @@ func (s *InstanceService) Find(ctx context.Context, in *pb.FindInstancesRequest)
 	if err != nil {
 		log.Errorf(err, "find instance failed: invalid parameters")
 		return &pb.FindInstancesResponse{
-			Response: pb.CreateResponse(scerr.ErrInvalidParams, err.Error()),
+			Response: proto.CreateResponse(scerr.ErrInvalidParams, err.Error()),
 		}, nil
 	}
 
@@ -587,14 +588,14 @@ func (s *InstanceService) Find(ctx context.Context, in *pb.FindInstancesRequest)
 			log.Errorf(err, "get consumer failed, consumer[%s] find provider[%s/%s/%s/%s]",
 				in.ConsumerServiceId, in.Environment, in.AppId, in.ServiceName, in.VersionRule)
 			return &pb.FindInstancesResponse{
-				Response: pb.CreateResponse(scerr.ErrInternal, err.Error()),
+				Response: proto.CreateResponse(scerr.ErrInternal, err.Error()),
 			}, err
 		}
 		if service == nil {
 			log.Errorf(nil, "consumer does not exist, consumer[%s] find provider[%s/%s/%s/%s]",
 				in.ConsumerServiceId, in.Environment, in.AppId, in.ServiceName, in.VersionRule)
 			return &pb.FindInstancesResponse{
-				Response: pb.CreateResponse(scerr.ErrServiceNotExists,
+				Response: proto.CreateResponse(scerr.ErrServiceNotExists,
 					fmt.Sprintf("Consumer[%s] does not exist.", in.ConsumerServiceId)),
 			}, nil
 		}
@@ -638,14 +639,14 @@ func (s *InstanceService) Find(ctx context.Context, in *pb.FindInstancesRequest)
 	if err != nil {
 		log.Errorf(err, "FindInstancesCache.Get failed, %s failed", findFlag())
 		return &pb.FindInstancesResponse{
-			Response: pb.CreateResponse(scerr.ErrInternal, err.Error()),
+			Response: proto.CreateResponse(scerr.ErrInternal, err.Error()),
 		}, err
 	}
 	if item == nil {
 		mes := fmt.Errorf("%s failed, provider does not exist", findFlag())
 		log.Errorf(mes, "FindInstancesCache.Get failed")
 		return &pb.FindInstancesResponse{
-			Response: pb.CreateResponse(scerr.ErrServiceNotExists, mes.Error()),
+			Response: proto.CreateResponse(scerr.ErrServiceNotExists, mes.Error()),
 		}, nil
 	}
 
@@ -663,13 +664,13 @@ func (s *InstanceService) Find(ctx context.Context, in *pb.FindInstancesRequest)
 			mes := fmt.Errorf("%s failed, provider does not exist", findFlag())
 			log.Errorf(mes, "AddServiceVersionRule failed")
 			return &pb.FindInstancesResponse{
-				Response: pb.CreateResponse(scerr.ErrServiceNotExists, mes.Error()),
+				Response: proto.CreateResponse(scerr.ErrServiceNotExists, mes.Error()),
 			}, nil
 		}
 		if err != nil {
 			log.Errorf(err, "AddServiceVersionRule failed, %s failed", findFlag())
 			return &pb.FindInstancesResponse{
-				Response: pb.CreateResponse(scerr.ErrInternal, err.Error()),
+				Response: proto.CreateResponse(scerr.ErrInternal, err.Error()),
 			}, err
 		}
 	}
@@ -681,7 +682,7 @@ func (s *InstanceService) Find(ctx context.Context, in *pb.FindInstancesRequest)
 	// TODO support gRPC output context
 	_ = util.SetContext(ctx, util.CtxResponseRevision, item.Rev)
 	return &pb.FindInstancesResponse{
-		Response:  pb.CreateResponse(pb.Response_SUCCESS, "Query service instances successfully."),
+		Response:  proto.CreateResponse(proto.Response_SUCCESS, "Query service instances successfully."),
 		Instances: instances,
 	}, nil
 }
@@ -691,7 +692,7 @@ func (s *InstanceService) BatchFind(ctx context.Context, in *pb.BatchFindInstanc
 		err := errors.New("Required services or instances")
 		log.Errorf(err, "batch find instance failed: invalid parameters")
 		return &pb.BatchFindInstancesResponse{
-			Response: pb.CreateResponse(scerr.ErrInvalidParams, err.Error()),
+			Response: proto.CreateResponse(scerr.ErrInvalidParams, err.Error()),
 		}, nil
 	}
 
@@ -699,19 +700,19 @@ func (s *InstanceService) BatchFind(ctx context.Context, in *pb.BatchFindInstanc
 	if err != nil {
 		log.Errorf(err, "batch find instance failed: invalid parameters")
 		return &pb.BatchFindInstancesResponse{
-			Response: pb.CreateResponse(scerr.ErrInvalidParams, err.Error()),
+			Response: proto.CreateResponse(scerr.ErrInvalidParams, err.Error()),
 		}, nil
 	}
 
 	response := &pb.BatchFindInstancesResponse{
-		Response: pb.CreateResponse(pb.Response_SUCCESS, "Batch query service instances successfully."),
+		Response: proto.CreateResponse(proto.Response_SUCCESS, "Batch query service instances successfully."),
 	}
 
 	// find services
 	response.Services, err = s.batchFindServices(ctx, in)
 	if err != nil {
 		return &pb.BatchFindInstancesResponse{
-			Response: pb.CreateResponse(scerr.ErrInternal, err.Error()),
+			Response: proto.CreateResponse(scerr.ErrInternal, err.Error()),
 		}, err
 	}
 
@@ -719,7 +720,7 @@ func (s *InstanceService) BatchFind(ctx context.Context, in *pb.BatchFindInstanc
 	response.Instances, err = s.batchFindInstances(ctx, in)
 	if err != nil {
 		return &pb.BatchFindInstancesResponse{
-			Response: pb.CreateResponse(scerr.ErrInternal, err.Error()),
+			Response: proto.CreateResponse(scerr.ErrInternal, err.Error()),
 		}, err
 	}
 
@@ -800,7 +801,7 @@ func (s *InstanceService) reshapeProviderKey(ctx context.Context, provider *pb.M
 	}
 
 	versionRule := provider.Version
-	provider = pb.MicroServiceToKey(provider.Tenant, providerService)
+	provider = proto.MicroServiceToKey(provider.Tenant, providerService)
 	provider.Version = versionRule
 	return provider, nil
 }
@@ -811,7 +812,7 @@ func (s *InstanceService) UpdateStatus(ctx context.Context, in *pb.UpdateInstanc
 	if err := Validate(in); err != nil {
 		log.Errorf(nil, "update instance[%s] status failed", updateStatusFlag)
 		return &pb.UpdateInstanceStatusResponse{
-			Response: pb.CreateResponse(scerr.ErrInvalidParams, err.Error()),
+			Response: proto.CreateResponse(scerr.ErrInvalidParams, err.Error()),
 		}, nil
 	}
 
@@ -819,13 +820,13 @@ func (s *InstanceService) UpdateStatus(ctx context.Context, in *pb.UpdateInstanc
 	if err != nil {
 		log.Errorf(err, "update instance[%s] status failed", updateStatusFlag)
 		return &pb.UpdateInstanceStatusResponse{
-			Response: pb.CreateResponse(scerr.ErrInternal, err.Error()),
+			Response: proto.CreateResponse(scerr.ErrInternal, err.Error()),
 		}, err
 	}
 	if instance == nil {
 		log.Errorf(nil, "update instance[%s] status failed, instance does not exist", updateStatusFlag)
 		return &pb.UpdateInstanceStatusResponse{
-			Response: pb.CreateResponse(scerr.ErrInstanceNotExists, "Service instance does not exist."),
+			Response: proto.CreateResponse(scerr.ErrInstanceNotExists, "Service instance does not exist."),
 		}, nil
 	}
 
@@ -835,7 +836,7 @@ func (s *InstanceService) UpdateStatus(ctx context.Context, in *pb.UpdateInstanc
 	if err := serviceUtil.UpdateInstance(ctx, domainProject, &copyInstanceRef); err != nil {
 		log.Errorf(err, "update instance[%s] status failed", updateStatusFlag)
 		resp := &pb.UpdateInstanceStatusResponse{
-			Response: pb.CreateResponseWithSCErr(err),
+			Response: proto.CreateResponseWithSCErr(err),
 		}
 		if err.InternalError() {
 			return resp, err
@@ -845,7 +846,7 @@ func (s *InstanceService) UpdateStatus(ctx context.Context, in *pb.UpdateInstanc
 
 	log.Infof("update instance[%s] status successfully", updateStatusFlag)
 	return &pb.UpdateInstanceStatusResponse{
-		Response: pb.CreateResponse(pb.Response_SUCCESS, "Update service instance status successfully."),
+		Response: proto.CreateResponse(proto.Response_SUCCESS, "Update service instance status successfully."),
 	}, nil
 }
 
@@ -855,7 +856,7 @@ func (s *InstanceService) UpdateInstanceProperties(ctx context.Context, in *pb.U
 	if err := Validate(in); err != nil {
 		log.Errorf(nil, "update instance[%s] properties failed", instanceFlag)
 		return &pb.UpdateInstancePropsResponse{
-			Response: pb.CreateResponse(scerr.ErrInvalidParams, err.Error()),
+			Response: proto.CreateResponse(scerr.ErrInvalidParams, err.Error()),
 		}, nil
 	}
 
@@ -863,13 +864,13 @@ func (s *InstanceService) UpdateInstanceProperties(ctx context.Context, in *pb.U
 	if err != nil {
 		log.Errorf(err, "update instance[%s] properties failed", instanceFlag)
 		return &pb.UpdateInstancePropsResponse{
-			Response: pb.CreateResponse(scerr.ErrInternal, err.Error()),
+			Response: proto.CreateResponse(scerr.ErrInternal, err.Error()),
 		}, err
 	}
 	if instance == nil {
 		log.Errorf(nil, "update instance[%s] properties failed, instance does not exist", instanceFlag)
 		return &pb.UpdateInstancePropsResponse{
-			Response: pb.CreateResponse(scerr.ErrInstanceNotExists, "Service instance does not exist."),
+			Response: proto.CreateResponse(scerr.ErrInstanceNotExists, "Service instance does not exist."),
 		}, nil
 	}
 
@@ -879,7 +880,7 @@ func (s *InstanceService) UpdateInstanceProperties(ctx context.Context, in *pb.U
 	if err := serviceUtil.UpdateInstance(ctx, domainProject, &copyInstanceRef); err != nil {
 		log.Errorf(err, "update instance[%s] properties failed", instanceFlag)
 		resp := &pb.UpdateInstancePropsResponse{
-			Response: pb.CreateResponseWithSCErr(err),
+			Response: proto.CreateResponseWithSCErr(err),
 		}
 		if err.InternalError() {
 			return resp, err
@@ -889,14 +890,14 @@ func (s *InstanceService) UpdateInstanceProperties(ctx context.Context, in *pb.U
 
 	log.Infof("update instance[%s] properties successfully", instanceFlag)
 	return &pb.UpdateInstancePropsResponse{
-		Response: pb.CreateResponse(pb.Response_SUCCESS, "Update service instance properties successfully."),
+		Response: proto.CreateResponse(proto.Response_SUCCESS, "Update service instance properties successfully."),
 	}, nil
 }
 
 func (s *InstanceService) ClusterHealth(ctx context.Context) (*pb.GetInstancesResponse, error) {
 	if err := health.GlobalHealthChecker().Healthy(); err != nil {
 		return &pb.GetInstancesResponse{
-			Response: pb.CreateResponse(scerr.ErrUnhealthy, err.Error()),
+			Response: proto.CreateResponse(scerr.ErrUnhealthy, err.Error()),
 		}, nil
 	}
 
@@ -913,14 +914,14 @@ func (s *InstanceService) ClusterHealth(ctx context.Context) (*pb.GetInstancesRe
 		log.Errorf(err, "health check failed: get service center[%s/%s/%s/%s]'s serviceID failed",
 			apt.Service.Environment, apt.Service.AppId, apt.Service.ServiceName, apt.Service.Version)
 		return &pb.GetInstancesResponse{
-			Response: pb.CreateResponse(scerr.ErrInternal, err.Error()),
+			Response: proto.CreateResponse(scerr.ErrInternal, err.Error()),
 		}, err
 	}
 	if len(serviceID) == 0 {
 		log.Errorf(nil, "health check failed: service center[%s/%s/%s/%s]'s serviceID does not exist",
 			apt.Service.Environment, apt.Service.AppId, apt.Service.ServiceName, apt.Service.Version)
 		return &pb.GetInstancesResponse{
-			Response: pb.CreateResponse(scerr.ErrServiceNotExists, "ServiceCenter's serviceID not exist."),
+			Response: proto.CreateResponse(scerr.ErrServiceNotExists, "ServiceCenter's serviceID not exist."),
 		}, nil
 	}
 
@@ -929,11 +930,11 @@ func (s *InstanceService) ClusterHealth(ctx context.Context) (*pb.GetInstancesRe
 		log.Errorf(err, "health check failed: get service center[%s][%s/%s/%s/%s]'s instances failed",
 			serviceID, apt.Service.Environment, apt.Service.AppId, apt.Service.ServiceName, apt.Service.Version)
 		return &pb.GetInstancesResponse{
-			Response: pb.CreateResponse(scerr.ErrInternal, err.Error()),
+			Response: proto.CreateResponse(scerr.ErrInternal, err.Error()),
 		}, err
 	}
 	return &pb.GetInstancesResponse{
-		Response:  pb.CreateResponse(pb.Response_SUCCESS, "Health check successfully."),
+		Response:  proto.CreateResponse(proto.Response_SUCCESS, "Health check successfully."),
 		Instances: instances,
 	}, nil
 }
diff --git a/server/service/instance_test.go b/server/service/instance_test.go
index fd94fed..52df22f 100644
--- a/server/service/instance_test.go
+++ b/server/service/instance_test.go
@@ -17,9 +17,10 @@
 package service_test
 
 import (
+	pb "github.com/apache/servicecomb-service-center/pkg/registry"
 	"github.com/apache/servicecomb-service-center/pkg/util"
 	"github.com/apache/servicecomb-service-center/server/core"
-	pb "github.com/apache/servicecomb-service-center/server/core/proto"
+	"github.com/apache/servicecomb-service-center/server/core/proto"
 	scerr "github.com/apache/servicecomb-service-center/server/scerror"
 	. "github.com/onsi/ginkgo"
 	. "github.com/onsi/gomega"
@@ -51,7 +52,7 @@ var _ = Describe("'Instance' service", func() {
 				},
 			})
 			Expect(err).To(BeNil())
-			Expect(respCreate.Response.Code).To(Equal(pb.Response_SUCCESS))
+			Expect(respCreate.Response.GetCode()).To(Equal(proto.Response_SUCCESS))
 			serviceId1 = respCreate.ServiceId
 		})
 
@@ -68,7 +69,7 @@ var _ = Describe("'Instance' service", func() {
 					},
 				})
 				Expect(err).To(BeNil())
-				Expect(resp.Response.Code).To(Equal(pb.Response_SUCCESS))
+				Expect(resp.Response.GetCode()).To(Equal(proto.Response_SUCCESS))
 				Expect(resp.InstanceId).To(Not(Equal("")))
 
 				resp, err = instanceResource.Register(getContext(), &pb.RegisterInstanceRequest{
@@ -83,7 +84,7 @@ var _ = Describe("'Instance' service", func() {
 					},
 				})
 				Expect(err).To(BeNil())
-				Expect(resp.Response.Code).To(Equal(pb.Response_SUCCESS))
+				Expect(resp.Response.GetCode()).To(Equal(proto.Response_SUCCESS))
 				Expect(resp.InstanceId).To(Equal("customId"))
 
 				By("status is nil")
@@ -97,7 +98,7 @@ var _ = Describe("'Instance' service", func() {
 					},
 				})
 				Expect(err).To(BeNil())
-				Expect(resp.Response.Code).To(Equal(pb.Response_SUCCESS))
+				Expect(resp.Response.GetCode()).To(Equal(proto.Response_SUCCESS))
 				Expect(resp.InstanceId).To(Not(Equal("")))
 
 				By("all max")
@@ -130,7 +131,7 @@ var _ = Describe("'Instance' service", func() {
 					},
 				})
 				Expect(err).To(BeNil())
-				Expect(resp.Response.Code).To(Equal(pb.Response_SUCCESS))
+				Expect(resp.Response.GetCode()).To(Equal(proto.Response_SUCCESS))
 				Expect(resp.InstanceId).To(Not(Equal("")))
 			})
 		})
@@ -149,13 +150,13 @@ var _ = Describe("'Instance' service", func() {
 					Instance: instance,
 				})
 				Expect(err).To(BeNil())
-				Expect(resp.Response.Code).To(Equal(pb.Response_SUCCESS))
+				Expect(resp.Response.GetCode()).To(Equal(proto.Response_SUCCESS))
 
 				resp, err = instanceResource.Register(getContext(), &pb.RegisterInstanceRequest{
 					Instance: instance,
 				})
 				Expect(err).To(BeNil())
-				Expect(resp.Response.Code).To(Equal(pb.Response_SUCCESS))
+				Expect(resp.Response.GetCode()).To(Equal(proto.Response_SUCCESS))
 				Expect(resp.InstanceId).To(Equal(instance.InstanceId))
 			})
 		})
@@ -172,7 +173,7 @@ var _ = Describe("'Instance' service", func() {
 					},
 				})
 				Expect(err).To(BeNil())
-				Expect(resp.Response.Code).To(Equal(scerr.ErrInvalidParams))
+				Expect(resp.Response.GetCode()).To(Equal(scerr.ErrInvalidParams))
 
 				By("serviceId is empty")
 				resp, err = instanceResource.Register(getContext(), &pb.RegisterInstanceRequest{
@@ -185,7 +186,7 @@ var _ = Describe("'Instance' service", func() {
 					},
 				})
 				Expect(err).To(BeNil())
-				Expect(resp.Response.Code).ToNot(Equal(pb.Response_SUCCESS))
+				Expect(resp.Response.GetCode()).ToNot(Equal(proto.Response_SUCCESS))
 
 				By("service does not exist")
 				resp, err = instanceResource.Register(getContext(), &pb.RegisterInstanceRequest{
@@ -199,7 +200,7 @@ var _ = Describe("'Instance' service", func() {
 					},
 				})
 				Expect(err).To(BeNil())
-				Expect(resp.Response.Code).ToNot(Equal(pb.Response_SUCCESS))
+				Expect(resp.Response.GetCode()).ToNot(Equal(proto.Response_SUCCESS))
 
 				By("hostName is empty")
 				resp, err = instanceResource.Register(getContext(), &pb.RegisterInstanceRequest{
@@ -212,7 +213,7 @@ var _ = Describe("'Instance' service", func() {
 					},
 				})
 				Expect(err).To(BeNil())
-				Expect(resp.Response.Code).ToNot(Equal(pb.Response_SUCCESS))
+				Expect(resp.Response.GetCode()).ToNot(Equal(proto.Response_SUCCESS))
 				resp, err = instanceResource.Register(getContext(), &pb.RegisterInstanceRequest{
 					Instance: &pb.MicroServiceInstance{
 						ServiceId: serviceId1,
@@ -224,7 +225,7 @@ var _ = Describe("'Instance' service", func() {
 					},
 				})
 				Expect(err).To(BeNil())
-				Expect(resp.Response.Code).ToNot(Equal(pb.Response_SUCCESS))
+				Expect(resp.Response.GetCode()).ToNot(Equal(proto.Response_SUCCESS))
 				resp, err = instanceResource.Register(getContext(), &pb.RegisterInstanceRequest{
 					Instance: &pb.MicroServiceInstance{
 						ServiceId: serviceId1,
@@ -236,14 +237,14 @@ var _ = Describe("'Instance' service", func() {
 					},
 				})
 				Expect(err).To(BeNil())
-				Expect(resp.Response.Code).ToNot(Equal(pb.Response_SUCCESS))
+				Expect(resp.Response.GetCode()).ToNot(Equal(proto.Response_SUCCESS))
 
 				By("instance is nil")
 				resp, err = instanceResource.Register(getContext(), &pb.RegisterInstanceRequest{
 					Instance: nil,
 				})
 				Expect(err).To(BeNil())
-				Expect(resp.Response.Code).ToNot(Equal(pb.Response_SUCCESS))
+				Expect(resp.Response.GetCode()).ToNot(Equal(proto.Response_SUCCESS))
 
 				By("check normal push healthChceck")
 				resp, err = instanceResource.Register(getContext(), &pb.RegisterInstanceRequest{
@@ -262,7 +263,7 @@ var _ = Describe("'Instance' service", func() {
 					},
 				})
 				Expect(err).To(BeNil())
-				Expect(resp.Response.Code).To(Equal(pb.Response_SUCCESS))
+				Expect(resp.Response.GetCode()).To(Equal(proto.Response_SUCCESS))
 
 				resp, err = instanceResource.Register(getContext(), &pb.RegisterInstanceRequest{
 					Instance: &pb.MicroServiceInstance{
@@ -280,7 +281,7 @@ var _ = Describe("'Instance' service", func() {
 					},
 				})
 				Expect(err).To(BeNil())
-				Expect(resp.Response.Code).To(Equal(pb.Response_SUCCESS))
+				Expect(resp.Response.GetCode()).To(Equal(proto.Response_SUCCESS))
 
 				By("check normal pull healthChceck")
 				resp, err = instanceResource.Register(getContext(), &pb.RegisterInstanceRequest{
@@ -300,7 +301,7 @@ var _ = Describe("'Instance' service", func() {
 					},
 				})
 				Expect(err).To(BeNil())
-				Expect(resp.Response.Code).To(Equal(pb.Response_SUCCESS))
+				Expect(resp.Response.GetCode()).To(Equal(proto.Response_SUCCESS))
 
 				By("check invalid push healthChceck")
 				resp, err = instanceResource.Register(getContext(), &pb.RegisterInstanceRequest{
@@ -319,7 +320,7 @@ var _ = Describe("'Instance' service", func() {
 					},
 				})
 				Expect(err).To(BeNil())
-				Expect(resp.Response.Code).To(Equal(scerr.ErrInvalidParams))
+				Expect(resp.Response.GetCode()).To(Equal(scerr.ErrInvalidParams))
 
 				By("check invalid pull healthChceck")
 				resp, err = instanceResource.Register(getContext(), &pb.RegisterInstanceRequest{
@@ -339,7 +340,7 @@ var _ = Describe("'Instance' service", func() {
 					},
 				})
 				Expect(err).To(BeNil())
-				Expect(resp.Response.Code).To(Equal(scerr.ErrInvalidParams))
+				Expect(resp.Response.GetCode()).To(Equal(scerr.ErrInvalidParams))
 				resp, err = instanceResource.Register(getContext(), &pb.RegisterInstanceRequest{
 					Instance: &pb.MicroServiceInstance{
 						ServiceId: serviceId1,
@@ -356,7 +357,7 @@ var _ = Describe("'Instance' service", func() {
 					},
 				})
 				Expect(err).To(BeNil())
-				Expect(resp.Response.Code).To(Equal(scerr.ErrInvalidParams))
+				Expect(resp.Response.GetCode()).To(Equal(scerr.ErrInvalidParams))
 				resp, err = instanceResource.Register(getContext(), &pb.RegisterInstanceRequest{
 					Instance: &pb.MicroServiceInstance{
 						ServiceId: serviceId1,
@@ -374,7 +375,7 @@ var _ = Describe("'Instance' service", func() {
 					},
 				})
 				Expect(err).To(BeNil())
-				Expect(resp.Response.Code).To(Equal(scerr.ErrInvalidParams))
+				Expect(resp.Response.GetCode()).To(Equal(scerr.ErrInvalidParams))
 
 				By("invalid status")
 				resp, err = instanceResource.Register(getContext(), &pb.RegisterInstanceRequest{
@@ -388,7 +389,7 @@ var _ = Describe("'Instance' service", func() {
 					},
 				})
 				Expect(err).To(BeNil())
-				Expect(resp.Response.Code).ToNot(Equal(pb.Response_SUCCESS))
+				Expect(resp.Response.GetCode()).ToNot(Equal(proto.Response_SUCCESS))
 			})
 		})
 	})
@@ -411,7 +412,7 @@ var _ = Describe("'Instance' service", func() {
 				},
 			})
 			Expect(err).To(BeNil())
-			Expect(respCreate.Response.Code).To(Equal(pb.Response_SUCCESS))
+			Expect(respCreate.Response.GetCode()).To(Equal(proto.Response_SUCCESS))
 			serviceId = respCreate.ServiceId
 
 			resp, err := instanceResource.Register(getContext(), &pb.RegisterInstanceRequest{
@@ -425,7 +426,7 @@ var _ = Describe("'Instance' service", func() {
 				},
 			})
 			Expect(err).To(BeNil())
-			Expect(resp.Response.Code).To(Equal(pb.Response_SUCCESS))
+			Expect(resp.Response.GetCode()).To(Equal(proto.Response_SUCCESS))
 			instanceId1 = resp.InstanceId
 
 			resp, err = instanceResource.Register(getContext(), &pb.RegisterInstanceRequest{
@@ -439,7 +440,7 @@ var _ = Describe("'Instance' service", func() {
 				},
 			})
 			Expect(err).To(BeNil())
-			Expect(resp.Response.Code).To(Equal(pb.Response_SUCCESS))
+			Expect(resp.Response.GetCode()).To(Equal(proto.Response_SUCCESS))
 			instanceId2 = resp.InstanceId
 		})
 
@@ -451,7 +452,7 @@ var _ = Describe("'Instance' service", func() {
 					InstanceId: instanceId1,
 				})
 				Expect(err).To(BeNil())
-				Expect(resp.Response.Code).To(Equal(pb.Response_SUCCESS))
+				Expect(resp.Response.GetCode()).To(Equal(proto.Response_SUCCESS))
 
 				By("serviceId/instanceId is invalid")
 				resp, err = instanceResource.Heartbeat(getContext(), &pb.HeartbeatRequest{
@@ -459,45 +460,45 @@ var _ = Describe("'Instance' service", func() {
 					InstanceId: instanceId1,
 				})
 				Expect(err).To(BeNil())
-				Expect(resp.Response.Code).To(Equal(scerr.ErrInvalidParams))
+				Expect(resp.Response.GetCode()).To(Equal(scerr.ErrInvalidParams))
 				resp, err = instanceResource.Heartbeat(getContext(), &pb.HeartbeatRequest{
 					ServiceId:  TOO_LONG_SERVICEID,
 					InstanceId: instanceId1,
 				})
 				Expect(err).To(BeNil())
-				Expect(resp.Response.Code).To(Equal(scerr.ErrInvalidParams))
+				Expect(resp.Response.GetCode()).To(Equal(scerr.ErrInvalidParams))
 				resp, err = instanceResource.Heartbeat(getContext(), &pb.HeartbeatRequest{
 					ServiceId:  serviceId,
 					InstanceId: "",
 				})
 				Expect(err).To(BeNil())
-				Expect(resp.Response.Code).To(Equal(scerr.ErrInvalidParams))
+				Expect(resp.Response.GetCode()).To(Equal(scerr.ErrInvalidParams))
 				resp, err = instanceResource.Heartbeat(getContext(), &pb.HeartbeatRequest{
 					ServiceId:  serviceId,
 					InstanceId: "@",
 				})
 				Expect(err).To(BeNil())
-				Expect(resp.Response.Code).To(Equal(scerr.ErrInvalidParams))
+				Expect(resp.Response.GetCode()).To(Equal(scerr.ErrInvalidParams))
 				resp, err = instanceResource.Heartbeat(getContext(), &pb.HeartbeatRequest{
 					ServiceId:  serviceId,
 					InstanceId: TOO_LONG_SERVICEID,
 				})
 				Expect(err).To(BeNil())
-				Expect(resp.Response.Code).To(Equal(scerr.ErrInvalidParams))
+				Expect(resp.Response.GetCode()).To(Equal(scerr.ErrInvalidParams))
 
 				By("serviceId does not exist")
 				resp, err = instanceResource.Heartbeat(getContext(), &pb.HeartbeatRequest{
 					ServiceId:  "100000000000",
 					InstanceId: instanceId1,
 				})
-				Expect(resp.Response.Code).ToNot(Equal(pb.Response_SUCCESS))
+				Expect(resp.Response.GetCode()).ToNot(Equal(proto.Response_SUCCESS))
 
 				By("instance does not exist")
 				resp, err = instanceResource.Heartbeat(getContext(), &pb.HeartbeatRequest{
 					ServiceId:  serviceId,
 					InstanceId: "not-exist-ins",
 				})
-				Expect(resp.Response.Code).ToNot(Equal(pb.Response_SUCCESS))
+				Expect(resp.Response.GetCode()).ToNot(Equal(proto.Response_SUCCESS))
 			})
 		})
 
@@ -508,12 +509,12 @@ var _ = Describe("'Instance' service", func() {
 					Instances: []*pb.HeartbeatSetElement{},
 				})
 				Expect(err).To(BeNil())
-				Expect(resp.Response.Code).ToNot(Equal(pb.Response_SUCCESS))
+				Expect(resp.Response.GetCode()).ToNot(Equal(proto.Response_SUCCESS))
 
 				By("instances are nil")
 				resp, err = instanceResource.HeartbeatSet(getContext(), &pb.HeartbeatSetRequest{})
 				Expect(err).To(BeNil())
-				Expect(resp.Response.Code).ToNot(Equal(pb.Response_SUCCESS))
+				Expect(resp.Response.GetCode()).ToNot(Equal(proto.Response_SUCCESS))
 
 				By("request contains > 1 instances")
 				resp, err = instanceResource.HeartbeatSet(getContext(), &pb.HeartbeatSetRequest{
@@ -528,7 +529,7 @@ var _ = Describe("'Instance' service", func() {
 						},
 					},
 				})
-				Expect(resp.Response.Code).To(Equal(pb.Response_SUCCESS))
+				Expect(resp.Response.GetCode()).To(Equal(proto.Response_SUCCESS))
 
 				By("request contains invalid instance")
 				resp, err = instanceResource.HeartbeatSet(getContext(), &pb.HeartbeatSetRequest{
@@ -543,7 +544,7 @@ var _ = Describe("'Instance' service", func() {
 						},
 					},
 				})
-				Expect(resp.Response.Code).ToNot(Equal(pb.Response_SUCCESS))
+				Expect(resp.Response.GetCode()).ToNot(Equal(proto.Response_SUCCESS))
 			})
 		})
 	})
@@ -553,7 +554,7 @@ var _ = Describe("'Instance' service", func() {
 		It("should be passed", func() {
 			resp, err := serviceResource.Create(getContext(), core.CreateServiceRequest())
 			Expect(err).To(BeNil())
-			Expect(resp.Response.Code).To(Equal(pb.Response_SUCCESS))
+			Expect(resp.Response.GetCode()).To(Equal(proto.Response_SUCCESS))
 		})
 
 		Context("when SC does not exist", func() {
@@ -562,7 +563,7 @@ var _ = Describe("'Instance' service", func() {
 				core.Service.ServiceName = "x"
 				respCluterhealth, err := instanceResource.ClusterHealth(getContext())
 				Expect(err).To(BeNil())
-				Expect(respCluterhealth.Response.Code).ToNot(Equal(pb.Response_SUCCESS))
+				Expect(respCluterhealth.Response.GetCode()).ToNot(Equal(proto.Response_SUCCESS))
 				core.Service.ServiceName = old
 			})
 		})
@@ -571,7 +572,7 @@ var _ = Describe("'Instance' service", func() {
 			It("should be passed", func() {
 				respCluterhealth, err := instanceResource.ClusterHealth(getContext())
 				Expect(err).To(BeNil())
-				Expect(respCluterhealth.Response.Code).To(Equal(pb.Response_SUCCESS))
+				Expect(respCluterhealth.Response.GetCode()).To(Equal(proto.Response_SUCCESS))
 			})
 		})
 	})
@@ -593,7 +594,7 @@ var _ = Describe("'Instance' service", func() {
 				},
 			})
 			Expect(err).To(BeNil())
-			Expect(respCreate.Response.Code).To(Equal(pb.Response_SUCCESS))
+			Expect(respCreate.Response.GetCode()).To(Equal(proto.Response_SUCCESS))
 			serviceId = respCreate.ServiceId
 
 			resp, err := instanceResource.Register(getContext(), &pb.RegisterInstanceRequest{
@@ -608,7 +609,7 @@ var _ = Describe("'Instance' service", func() {
 				},
 			})
 			Expect(err).To(BeNil())
-			Expect(resp.Response.Code).To(Equal(pb.Response_SUCCESS))
+			Expect(resp.Response.GetCode()).To(Equal(proto.Response_SUCCESS))
 			instanceId = resp.InstanceId
 		})
 
@@ -621,7 +622,7 @@ var _ = Describe("'Instance' service", func() {
 					Status:     pb.MSI_DOWN,
 				})
 				Expect(err).To(BeNil())
-				Expect(respUpdateStatus.Response.Code).To(Equal(pb.Response_SUCCESS))
+				Expect(respUpdateStatus.Response.GetCode()).To(Equal(proto.Response_SUCCESS))
 
 				respUpdateStatus, err = instanceResource.UpdateStatus(getContext(), &pb.UpdateInstanceStatusRequest{
 					ServiceId:  serviceId,
@@ -629,7 +630,7 @@ var _ = Describe("'Instance' service", func() {
 					Status:     pb.MSI_OUTOFSERVICE,
 				})
 				Expect(err).To(BeNil())
-				Expect(respUpdateStatus.Response.Code).To(Equal(pb.Response_SUCCESS))
+				Expect(respUpdateStatus.Response.GetCode()).To(Equal(proto.Response_SUCCESS))
 
 				respUpdateStatus, err = instanceResource.UpdateStatus(getContext(), &pb.UpdateInstanceStatusRequest{
 					ServiceId:  serviceId,
@@ -637,7 +638,7 @@ var _ = Describe("'Instance' service", func() {
 					Status:     pb.MSI_STARTING,
 				})
 				Expect(err).To(BeNil())
-				Expect(respUpdateStatus.Response.Code).To(Equal(pb.Response_SUCCESS))
+				Expect(respUpdateStatus.Response.GetCode()).To(Equal(proto.Response_SUCCESS))
 
 				respUpdateStatus, err = instanceResource.UpdateStatus(getContext(), &pb.UpdateInstanceStatusRequest{
 					ServiceId:  serviceId,
@@ -646,7 +647,7 @@ var _ = Describe("'Instance' service", func() {
 				})
 
 				Expect(err).To(BeNil())
-				Expect(respUpdateStatus.Response.Code).To(Equal(pb.Response_SUCCESS))
+				Expect(respUpdateStatus.Response.GetCode()).To(Equal(proto.Response_SUCCESS))
 
 				respUpdateStatus, err = instanceResource.UpdateStatus(getContext(), &pb.UpdateInstanceStatusRequest{
 					ServiceId:  serviceId,
@@ -654,7 +655,7 @@ var _ = Describe("'Instance' service", func() {
 					Status:     pb.MSI_UP,
 				})
 				Expect(err).To(BeNil())
-				Expect(respUpdateStatus.Response.Code).To(Equal(pb.Response_SUCCESS))
+				Expect(respUpdateStatus.Response.GetCode()).To(Equal(proto.Response_SUCCESS))
 
 				By("update status with a empty serviceId")
 				respUpdateStatus, err = instanceResource.UpdateStatus(getContext(), &pb.UpdateInstanceStatusRequest{
@@ -664,7 +665,7 @@ var _ = Describe("'Instance' service", func() {
 				})
 
 				Expect(err).To(BeNil())
-				Expect(respUpdateStatus.Response.Code).ToNot(Equal(pb.Response_SUCCESS))
+				Expect(respUpdateStatus.Response.GetCode()).ToNot(Equal(proto.Response_SUCCESS))
 
 				By("update status with a not exist service")
 				respUpdateStatus, err = instanceResource.UpdateStatus(getContext(), &pb.UpdateInstanceStatusRequest{
@@ -674,7 +675,7 @@ var _ = Describe("'Instance' service", func() {
 				})
 
 				Expect(err).To(BeNil())
-				Expect(respUpdateStatus.Response.Code).ToNot(Equal(pb.Response_SUCCESS))
+				Expect(respUpdateStatus.Response.GetCode()).ToNot(Equal(proto.Response_SUCCESS))
 
 				By("update status with a not exist instance")
 				respUpdateStatus, err = instanceResource.UpdateStatus(getContext(), &pb.UpdateInstanceStatusRequest{
@@ -684,7 +685,7 @@ var _ = Describe("'Instance' service", func() {
 				})
 
 				Expect(err).To(BeNil())
-				Expect(respUpdateStatus.Response.Code).ToNot(Equal(pb.Response_SUCCESS))
+				Expect(respUpdateStatus.Response.GetCode()).ToNot(Equal(proto.Response_SUCCESS))
 
 				By("update invalid status")
 				respUpdateStatus, err = instanceResource.UpdateStatus(getContext(), &pb.UpdateInstanceStatusRequest{
@@ -694,7 +695,7 @@ var _ = Describe("'Instance' service", func() {
 				})
 
 				Expect(err).To(BeNil())
-				Expect(respUpdateStatus.Response.Code).ToNot(Equal(pb.Response_SUCCESS))
+				Expect(respUpdateStatus.Response.GetCode()).ToNot(Equal(proto.Response_SUCCESS))
 			})
 		})
 
@@ -710,7 +711,7 @@ var _ = Describe("'Instance' service", func() {
 				})
 
 				Expect(err).To(BeNil())
-				Expect(respUpdateProperties.Response.Code).To(Equal(pb.Response_SUCCESS))
+				Expect(respUpdateProperties.Response.GetCode()).To(Equal(proto.Response_SUCCESS))
 
 				By("all max")
 				size := 1000
@@ -726,7 +727,7 @@ var _ = Describe("'Instance' service", func() {
 				})
 
 				Expect(err).To(BeNil())
-				Expect(respUpdateProperties.Response.Code).To(Equal(pb.Response_SUCCESS))
+				Expect(respUpdateProperties.Response.GetCode()).To(Equal(proto.Response_SUCCESS))
 
 				By("instance does not exist")
 				respUpdateProperties, err = instanceResource.UpdateInstanceProperties(getContext(), &pb.UpdateInstancePropsRequest{
@@ -738,7 +739,7 @@ var _ = Describe("'Instance' service", func() {
 				})
 
 				Expect(err).To(BeNil())
-				Expect(respUpdateProperties.Response.Code).ToNot(Equal(pb.Response_SUCCESS))
+				Expect(respUpdateProperties.Response.GetCode()).ToNot(Equal(proto.Response_SUCCESS))
 
 				By("serviceId/instanceId/props is invalid")
 				respUpdateProperties, err = instanceResource.UpdateInstanceProperties(getContext(), &pb.UpdateInstancePropsRequest{
@@ -750,7 +751,7 @@ var _ = Describe("'Instance' service", func() {
 				})
 
 				Expect(err).To(BeNil())
-				Expect(respUpdateProperties.Response.Code).To(Equal(scerr.ErrInvalidParams))
+				Expect(respUpdateProperties.Response.GetCode()).To(Equal(scerr.ErrInvalidParams))
 				respUpdateProperties, err = instanceResource.UpdateInstanceProperties(getContext(), &pb.UpdateInstancePropsRequest{
 					ServiceId:  TOO_LONG_SERVICEID,
 					InstanceId: instanceId,
@@ -760,7 +761,7 @@ var _ = Describe("'Instance' service", func() {
 				})
 
 				Expect(err).To(BeNil())
-				Expect(respUpdateProperties.Response.Code).To(Equal(scerr.ErrInvalidParams))
+				Expect(respUpdateProperties.Response.GetCode()).To(Equal(scerr.ErrInvalidParams))
 				respUpdateProperties, err = instanceResource.UpdateInstanceProperties(getContext(), &pb.UpdateInstancePropsRequest{
 					ServiceId:  serviceId,
 					InstanceId: "",
@@ -770,7 +771,7 @@ var _ = Describe("'Instance' service", func() {
 				})
 
 				Expect(err).To(BeNil())
-				Expect(respUpdateProperties.Response.Code).To(Equal(scerr.ErrInvalidParams))
+				Expect(respUpdateProperties.Response.GetCode()).To(Equal(scerr.ErrInvalidParams))
 				respUpdateProperties, err = instanceResource.UpdateInstanceProperties(getContext(), &pb.UpdateInstancePropsRequest{
 					ServiceId:  serviceId,
 					InstanceId: "@",
@@ -780,7 +781,7 @@ var _ = Describe("'Instance' service", func() {
 				})
 
 				Expect(err).To(BeNil())
-				Expect(respUpdateProperties.Response.Code).To(Equal(scerr.ErrInvalidParams))
+				Expect(respUpdateProperties.Response.GetCode()).To(Equal(scerr.ErrInvalidParams))
 				respUpdateProperties, err = instanceResource.UpdateInstanceProperties(getContext(), &pb.UpdateInstancePropsRequest{
 					ServiceId:  serviceId,
 					InstanceId: TOO_LONG_SERVICEID,
@@ -790,7 +791,7 @@ var _ = Describe("'Instance' service", func() {
 				})
 
 				Expect(err).To(BeNil())
-				Expect(respUpdateProperties.Response.Code).To(Equal(scerr.ErrInvalidParams))
+				Expect(respUpdateProperties.Response.GetCode()).To(Equal(scerr.ErrInvalidParams))
 
 				By("remove the properties")
 				respUpdateProperties, err = instanceResource.UpdateInstanceProperties(getContext(), &pb.UpdateInstancePropsRequest{
@@ -798,7 +799,7 @@ var _ = Describe("'Instance' service", func() {
 					InstanceId: instanceId,
 				})
 				Expect(err).To(BeNil())
-				Expect(respUpdateProperties.Response.Code).To(Equal(pb.Response_SUCCESS))
+				Expect(respUpdateProperties.Response.GetCode()).To(Equal(proto.Response_SUCCESS))
 
 				By("service does not exist")
 				respUpdateProperties, err = instanceResource.UpdateInstanceProperties(getContext(), &pb.UpdateInstancePropsRequest{
@@ -810,7 +811,7 @@ var _ = Describe("'Instance' service", func() {
 				})
 
 				Expect(err).To(BeNil())
-				Expect(respUpdateProperties.Response.Code).ToNot(Equal(pb.Response_SUCCESS))
+				Expect(respUpdateProperties.Response.GetCode()).ToNot(Equal(proto.Response_SUCCESS))
 			})
 		})
 	})
@@ -845,7 +846,7 @@ var _ = Describe("'Instance' service", func() {
 				},
 			})
 			Expect(err).To(BeNil())
-			Expect(respCreate.Response.Code).To(Equal(pb.Response_SUCCESS))
+			Expect(respCreate.Response.GetCode()).To(Equal(proto.Response_SUCCESS))
 			serviceId1 = respCreate.ServiceId
 
 			respCreate, err = serviceResource.Create(getContext(), &pb.CreateServiceRequest{
@@ -858,7 +859,7 @@ var _ = Describe("'Instance' service", func() {
 				},
 			})
 			Expect(err).To(BeNil())
-			Expect(respCreate.Response.Code).To(Equal(pb.Response_SUCCESS))
+			Expect(respCreate.Response.GetCode()).To(Equal(proto.Response_SUCCESS))
 			serviceId2 = respCreate.ServiceId
 
 			respCreate, err = serviceResource.Create(getContext(), &pb.CreateServiceRequest{
@@ -871,7 +872,7 @@ var _ = Describe("'Instance' service", func() {
 				},
 			})
 			Expect(err).To(BeNil())
-			Expect(respCreate.Response.Code).To(Equal(pb.Response_SUCCESS))
+			Expect(respCreate.Response.GetCode()).To(Equal(proto.Response_SUCCESS))
 			serviceId3 = respCreate.ServiceId
 
 			respCreate, err = serviceResource.Create(getContext(), &pb.CreateServiceRequest{
@@ -885,7 +886,7 @@ var _ = Describe("'Instance' service", func() {
 				},
 			})
 			Expect(err).To(BeNil())
-			Expect(respCreate.Response.Code).To(Equal(pb.Response_SUCCESS))
+			Expect(respCreate.Response.GetCode()).To(Equal(proto.Response_SUCCESS))
 			serviceId4 = respCreate.ServiceId
 
 			respCreate, err = serviceResource.Create(getContext(), &pb.CreateServiceRequest{
@@ -897,12 +898,12 @@ var _ = Describe("'Instance' service", func() {
 					Level:       "FRONT",
 					Status:      pb.MS_UP,
 					Properties: map[string]string{
-						pb.PROP_ALLOW_CROSS_APP: "true",
+						proto.PROP_ALLOW_CROSS_APP: "true",
 					},
 				},
 			})
 			Expect(err).To(BeNil())
-			Expect(respCreate.Response.Code).To(Equal(pb.Response_SUCCESS))
+			Expect(respCreate.Response.GetCode()).To(Equal(proto.Response_SUCCESS))
 			serviceId5 = respCreate.ServiceId
 
 			respCreate, err = serviceResource.Create(
@@ -917,7 +918,7 @@ var _ = Describe("'Instance' service", func() {
 					},
 				})
 			Expect(err).To(BeNil())
-			Expect(respCreate.Response.Code).To(Equal(pb.Response_SUCCESS))
+			Expect(respCreate.Response.GetCode()).To(Equal(proto.Response_SUCCESS))
 			serviceId6 = respCreate.ServiceId
 
 			respCreate, err = serviceResource.Create(getContext(), &pb.CreateServiceRequest{
@@ -930,7 +931,7 @@ var _ = Describe("'Instance' service", func() {
 				},
 			})
 			Expect(err).To(BeNil())
-			Expect(respCreate.Response.Code).To(Equal(pb.Response_SUCCESS))
+			Expect(respCreate.Response.GetCode()).To(Equal(proto.Response_SUCCESS))
 			serviceId7 = respCreate.ServiceId
 
 			respCreate, err = serviceResource.Create(getContext(), &pb.CreateServiceRequest{
@@ -943,7 +944,7 @@ var _ = Describe("'Instance' service", func() {
 				},
 			})
 			Expect(err).To(BeNil())
-			Expect(respCreate.Response.Code).To(Equal(pb.Response_SUCCESS))
+			Expect(respCreate.Response.GetCode()).To(Equal(proto.Response_SUCCESS))
 			serviceId8 = respCreate.ServiceId
 
 			respCreate, err = serviceResource.Create(getContext(), &pb.CreateServiceRequest{
@@ -956,7 +957,7 @@ var _ = Describe("'Instance' service", func() {
 				},
 			})
 			Expect(err).To(BeNil())
-			Expect(respCreate.Response.Code).To(Equal(pb.Response_SUCCESS))
+			Expect(respCreate.Response.GetCode()).To(Equal(proto.Response_SUCCESS))
 			serviceId9 = respCreate.ServiceId
 
 			resp, err := instanceResource.Register(getContext(), &pb.RegisterInstanceRequest{
@@ -970,7 +971,7 @@ var _ = Describe("'Instance' service", func() {
 				},
 			})
 			Expect(err).To(BeNil())
-			Expect(resp.Response.Code).To(Equal(pb.Response_SUCCESS))
+			Expect(resp.Response.GetCode()).To(Equal(proto.Response_SUCCESS))
 			instanceId1 = resp.InstanceId
 
 			resp, err = instanceResource.Register(getContext(), &pb.RegisterInstanceRequest{
@@ -984,7 +985,7 @@ var _ = Describe("'Instance' service", func() {
 				},
 			})
 			Expect(err).To(BeNil())
-			Expect(resp.Response.Code).To(Equal(pb.Response_SUCCESS))
+			Expect(resp.Response.GetCode()).To(Equal(proto.Response_SUCCESS))
 			instanceId2 = resp.InstanceId
 
 			resp, err = instanceResource.Register(getContext(), &pb.RegisterInstanceRequest{
@@ -998,7 +999,7 @@ var _ = Describe("'Instance' service", func() {
 				},
 			})
 			Expect(err).To(BeNil())
-			Expect(resp.Response.Code).To(Equal(pb.Response_SUCCESS))
+			Expect(resp.Response.GetCode()).To(Equal(proto.Response_SUCCESS))
 			instanceId4 = resp.InstanceId
 
 			resp, err = instanceResource.Register(getContext(), &pb.RegisterInstanceRequest{
@@ -1012,7 +1013,7 @@ var _ = Describe("'Instance' service", func() {
 				},
 			})
 			Expect(err).To(BeNil())
-			Expect(resp.Response.Code).To(Equal(pb.Response_SUCCESS))
+			Expect(resp.Response.GetCode()).To(Equal(proto.Response_SUCCESS))
 			instanceId5 = resp.InstanceId
 
 			resp, err = instanceResource.Register(getContext(), &pb.RegisterInstanceRequest{
@@ -1026,7 +1027,7 @@ var _ = Describe("'Instance' service", func() {
 				},
 			})
 			Expect(err).To(BeNil())
-			Expect(resp.Response.Code).To(Equal(pb.Response_SUCCESS))
+			Expect(resp.Response.GetCode()).To(Equal(proto.Response_SUCCESS))
 			instanceId8 = resp.InstanceId
 
 			resp, err = instanceResource.Register(getContext(), &pb.RegisterInstanceRequest{
@@ -1040,7 +1041,7 @@ var _ = Describe("'Instance' service", func() {
 				},
 			})
 			Expect(err).To(BeNil())
-			Expect(resp.Response.Code).To(Equal(pb.Response_SUCCESS))
+			Expect(resp.Response.GetCode()).To(Equal(proto.Response_SUCCESS))
 			instanceId9 = resp.InstanceId
 		})
 
@@ -1054,7 +1055,7 @@ var _ = Describe("'Instance' service", func() {
 					VersionRule:       "1.0.0",
 				})
 				Expect(err).To(BeNil())
-				Expect(respFind.Response.Code).To(Equal(scerr.ErrInvalidParams))
+				Expect(respFind.Response.GetCode()).To(Equal(scerr.ErrInvalidParams))
 				respFind, err = instanceResource.Find(getContext(), &pb.FindInstancesRequest{
 					ConsumerServiceId: serviceId1,
 					AppId:             "",
@@ -1062,7 +1063,7 @@ var _ = Describe("'Instance' service", func() {
 					VersionRule:       "1.0.0",
 				})
 				Expect(err).To(BeNil())
-				Expect(respFind.Response.Code).To(Equal(scerr.ErrInvalidParams))
+				Expect(respFind.Response.GetCode()).To(Equal(scerr.ErrInvalidParams))
 				respFind, err = instanceResource.Find(getContext(), &pb.FindInstancesRequest{
 					ConsumerServiceId: serviceId1,
 					AppId:             " ",
@@ -1070,7 +1071,7 @@ var _ = Describe("'Instance' service", func() {
 					VersionRule:       "1.0.0",
 				})
 				Expect(err).To(BeNil())
-				Expect(respFind.Response.Code).To(Equal(scerr.ErrInvalidParams))
+				Expect(respFind.Response.GetCode()).To(Equal(scerr.ErrInvalidParams))
 
 				By("invalid serviceName")
 				respFind, err = instanceResource.Find(getContext(), &pb.FindInstancesRequest{
@@ -1080,7 +1081,7 @@ var _ = Describe("'Instance' service", func() {
 					VersionRule:       "1.0.0",
 				})
 				Expect(err).To(BeNil())
-				Expect(respFind.Response.Code).To(Equal(scerr.ErrInvalidParams))
+				Expect(respFind.Response.GetCode()).To(Equal(scerr.ErrInvalidParams))
 				respFind, err = instanceResource.Find(getContext(), &pb.FindInstancesRequest{
 					ConsumerServiceId: serviceId1,
 					AppId:             "query_instance",
@@ -1088,7 +1089,7 @@ var _ = Describe("'Instance' service", func() {
 					VersionRule:       "1.0.0",
 				})
 				Expect(err).To(BeNil())
-				Expect(respFind.Response.Code).To(Equal(scerr.ErrInvalidParams))
+				Expect(respFind.Response.GetCode()).To(Equal(scerr.ErrInvalidParams))
 				respFind, err = instanceResource.Find(getContext(), &pb.FindInstancesRequest{
 					ConsumerServiceId: serviceId1,
 					AppId:             "query_instance",
@@ -1096,7 +1097,7 @@ var _ = Describe("'Instance' service", func() {
 					VersionRule:       "1.0.0",
 				})
 				Expect(err).To(BeNil())
-				Expect(respFind.Response.Code).To(Equal(scerr.ErrInvalidParams))
+				Expect(respFind.Response.GetCode()).To(Equal(scerr.ErrInvalidParams))
 
 				By("invalid version")
 				respFind, err = instanceResource.Find(getContext(), &pb.FindInstancesRequest{
@@ -1106,7 +1107,7 @@ var _ = Describe("'Instance' service", func() {
 					VersionRule:       "1.32768.0",
... 5990 lines suppressed ...