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

littlecui 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 2b4b698  decouple package, provide unified API for resource layer 
(#1048)
2b4b698 is described below

commit 2b4b698925347adf4a811b347519bb97eadfed8c
Author: Shawn <xiaoliang.t...@gmail.com>
AuthorDate: Fri Jun 11 17:28:47 2021 +0800

    decouple package, provide unified API for resource layer (#1048)
---
 datasource/etcd/engine.go                          |  10 +-
 datasource/mongo/engine.go                         |   4 +-
 datasource/ms.go                                   |   5 +
 datasource/schema_test.go                          |   9 +-
 datasource/service_test.go                         |  25 +-
 pkg/proto/service_ex.go                            |  19 --
 server/api.go                                      |   5 +-
 server/core/microservice.go                        |   1 -
 server/plugin/auth/buildin/parser_test.go          |   6 +-
 server/plugin/quota/buildin/buildin_test.go        |   6 +-
 server/plugin/tracing/pzipkin/common_test.go       |   3 +-
 server/rest/controller/v4/instance_controller.go   |  23 +-
 server/rest/controller/v4/instance_watcher.go      |   8 +-
 server/rest/controller/v4/main_controller.go       |   5 +-
 server/rest/govern/service_test.go                 |   4 +-
 server/service/{ => disco}/dependency.go           |   2 +-
 server/service/{ => disco}/dependency_test.go      |  16 +-
 server/service/{ => disco}/instance.go             |  27 +-
 server/service/{ => disco}/instance_test.go        | 302 +++++++++++----------
 server/service/disco/metadata_dao.go               |  12 +
 server/service/{ => disco}/microservice.go         |  17 +-
 server/service/{ => disco}/microservice_test.go    |   8 +-
 server/service/{ => disco}/rule.go                 |   2 +-
 server/service/{ => disco}/rule_test.go            |  20 +-
 server/service/{ => disco}/schema.go               |   2 +-
 server/service/{ => disco}/schema_test.go          |  15 +-
 server/service/{ => disco}/service.go              |  18 +-
 server/service/{ => disco}/service_suite_test.go   |   8 +-
 server/service/{ => disco}/tag.go                  |   2 +-
 server/service/{ => disco}/tag_test.go             |  14 +-
 server/service/{ => disco}/watch.go                |  41 +--
 server/service/{ => disco}/watch_test.go           |  16 +-
 .../hbws => service/heartbeat}/websocket.go        |  34 ++-
 .../hbws => service/heartbeat}/websocket_test.go   |   7 +-
 .../rbac/{account_dao.go => account_service.go}    |   0
 ...account_dao_test.go => account_service_test.go} |   0
 server/service/rbac/{role.go => init.go}           |   0
 .../service/rbac/{role_dao.go => role_service.go}  |   0
 .../{role_dao_test.go => role_service_test.go}     |   0
 test/test.go                                       |   4 +-
 40 files changed, 355 insertions(+), 345 deletions(-)

diff --git a/datasource/etcd/engine.go b/datasource/etcd/engine.go
index 01f11be..c41b916 100644
--- a/datasource/etcd/engine.go
+++ b/datasource/etcd/engine.go
@@ -27,6 +27,8 @@ import (
        "strings"
        "time"
 
+       discosvc 
"github.com/apache/servicecomb-service-center/server/service/disco"
+
        "github.com/apache/servicecomb-service-center/datasource/etcd/client"
        "github.com/apache/servicecomb-service-center/datasource/etcd/mux"
        "github.com/apache/servicecomb-service-center/server/config"
@@ -100,7 +102,7 @@ func (sm *SCManager) registerService(ctx context.Context) 
error {
 func (sm *SCManager) registerInstance(ctx context.Context) error {
        core.Instance.InstanceId = ""
        core.Instance.ServiceId = core.Service.ServiceId
-       respI, err := core.InstanceAPI.Register(ctx, 
core.RegisterInstanceRequest())
+       respI, err := discosvc.RegisterInstance(ctx, 
core.RegisterInstanceRequest())
        if err != nil {
                log.Error("register failed", err)
                return err
@@ -118,7 +120,7 @@ func (sm *SCManager) registerInstance(ctx context.Context) 
error {
 
 func (sm *SCManager) selfHeartBeat(pCtx context.Context) error {
        ctx := core.AddDefaultContextValue(pCtx)
-       respI, err := core.InstanceAPI.Heartbeat(ctx, core.HeartbeatRequest())
+       respI, err := discosvc.Heartbeat(ctx, core.HeartbeatRequest())
        if err != nil {
                log.Error("send heartbeat failed", err)
                return err
@@ -161,7 +163,7 @@ func (sm *SCManager) SelfUnregister(pCtx context.Context) 
error {
                return nil
        }
        ctx := core.AddDefaultContextValue(pCtx)
-       respI, err := core.InstanceAPI.Unregister(ctx, 
core.UnregisterInstanceRequest())
+       respI, err := discosvc.UnregisterInstance(ctx, 
core.UnregisterInstanceRequest())
        if err != nil {
                log.Error("unregister failed", err)
                return err
@@ -255,7 +257,7 @@ func shouldClear(ctx context.Context, timeLimitStamp 
string, svc *pb.MicroServic
                ConsumerServiceId: svc.ServiceId,
                ProviderServiceId: svc.ServiceId,
        }
-       getInstsResp, err := core.InstanceAPI.GetInstances(ctx, getInstsReq)
+       getInstsResp, err := discosvc.GetInstances(ctx, getInstsReq)
        if err != nil {
                return false, err
        }
diff --git a/datasource/mongo/engine.go b/datasource/mongo/engine.go
index 8612229..4c48239 100644
--- a/datasource/mongo/engine.go
+++ b/datasource/mongo/engine.go
@@ -24,6 +24,8 @@ import (
        "strings"
        "time"
 
+       discosvc 
"github.com/apache/servicecomb-service-center/server/service/disco"
+
        pb "github.com/go-chassis/cari/discovery"
 
        "github.com/apache/servicecomb-service-center/datasource"
@@ -198,7 +200,7 @@ func (ds *SCManager) registryInstance(pCtx context.Context) 
error {
 
 func (ds *SCManager) selfHeartBeat(pCtx context.Context) error {
        ctx := core.AddDefaultContextValue(pCtx)
-       respI, err := core.InstanceAPI.Heartbeat(ctx, core.HeartbeatRequest())
+       respI, err := discosvc.Heartbeat(ctx, core.HeartbeatRequest())
        if err != nil {
                log.Error("send heartbeat failed", err)
                return err
diff --git a/datasource/ms.go b/datasource/ms.go
index 7e63ee3..184a2e2 100644
--- a/datasource/ms.go
+++ b/datasource/ms.go
@@ -27,6 +27,11 @@ import (
 var ErrServiceNotExists = errors.New("service does not exist")
 var ErrInstanceNotExists = errors.New("instance does not exist")
 
+const (
+       ExistTypeMicroservice = "microservice"
+       ExistTypeSchema       = "schema"
+)
+
 // Attention: request validation must be finished before the following 
interface being invoked!!!
 // MetadataManager contains the CRUD of cache metadata
 type MetadataManager interface {
diff --git a/datasource/schema_test.go b/datasource/schema_test.go
index b61df0f..8d3cc3a 100644
--- a/datasource/schema_test.go
+++ b/datasource/schema_test.go
@@ -26,7 +26,6 @@ import (
        "github.com/apache/servicecomb-service-center/datasource/mongo"
        "github.com/apache/servicecomb-service-center/pkg/log"
        "github.com/apache/servicecomb-service-center/server/plugin/quota"
-       "github.com/apache/servicecomb-service-center/server/service"
        pb "github.com/go-chassis/cari/discovery"
        "github.com/go-chassis/go-archaius"
        "github.com/stretchr/testify/assert"
@@ -343,7 +342,7 @@ func TestSchema_Create(t *testing.T) {
                assert.NoError(t, err)
                assert.Equal(t, pb.ResponseSuccess, 
respModifySchemas.Response.GetCode())
                respExist, err := 
datasource.GetMetadataManager().ExistSchema(getContext(), 
&pb.GetExistenceRequest{
-                       Type:      service.ExistTypeSchema,
+                       Type:      datasource.ExistTypeSchema,
                        ServiceId: serviceIdPro2,
                        SchemaId:  "first_schemaId_service_ms",
                })
@@ -793,7 +792,7 @@ func TestSchema_Exist(t *testing.T) {
        t.Run("check exists", func(t *testing.T) {
                log.Info("check schema exist, should pass")
                resp, err := 
datasource.GetMetadataManager().ExistSchema(getContext(), 
&pb.GetExistenceRequest{
-                       Type:      service.ExistTypeSchema,
+                       Type:      datasource.ExistTypeSchema,
                        ServiceId: serviceId,
                        SchemaId:  "com.huawei.test.ms",
                })
@@ -802,7 +801,7 @@ func TestSchema_Exist(t *testing.T) {
                assert.Equal(t, "summary_ms", resp.Summary)
 
                resp, err = 
datasource.GetMetadataManager().ExistSchema(getContext(), 
&pb.GetExistenceRequest{
-                       Type:        service.ExistTypeSchema,
+                       Type:        datasource.ExistTypeSchema,
                        ServiceId:   serviceId,
                        SchemaId:    "com.huawei.test.ms",
                        AppId:       "()",
@@ -813,7 +812,7 @@ func TestSchema_Exist(t *testing.T) {
                assert.Equal(t, pb.ResponseSuccess, resp.Response.GetCode())
 
                resp, err = 
datasource.GetMetadataManager().ExistSchema(getContext(), 
&pb.GetExistenceRequest{
-                       Type:      service.ExistTypeSchema,
+                       Type:      datasource.ExistTypeSchema,
                        ServiceId: serviceId,
                        SchemaId:  "com.huawei.test.no.summary.ms",
                })
diff --git a/datasource/service_test.go b/datasource/service_test.go
index 34c94f5..5586471 100644
--- a/datasource/service_test.go
+++ b/datasource/service_test.go
@@ -28,7 +28,6 @@ import (
        "github.com/apache/servicecomb-service-center/pkg/log"
        "github.com/apache/servicecomb-service-center/pkg/util"
        "github.com/apache/servicecomb-service-center/server/plugin/quota"
-       "github.com/apache/servicecomb-service-center/server/service"
        pb "github.com/go-chassis/cari/discovery"
        "github.com/stretchr/testify/assert"
 )
@@ -332,7 +331,7 @@ func TestService_Exist(t *testing.T) {
        t.Run("check exist when service does not exist", func(t *testing.T) {
                log.Info("check by querying a not exist serviceName")
                resp, err := 
datasource.GetMetadataManager().ExistService(getContext(), 
&pb.GetExistenceRequest{
-                       Type:        service.ExistTypeMicroservice,
+                       Type:        datasource.ExistTypeMicroservice,
                        AppId:       "exist_appId",
                        ServiceName: "notExistService_service_ms",
                        Version:     "1.0.0",
@@ -342,7 +341,7 @@ func TestService_Exist(t *testing.T) {
 
                log.Info("check by querying a not exist env")
                resp, err = 
datasource.GetMetadataManager().ExistService(getContext(), 
&pb.GetExistenceRequest{
-                       Type:        service.ExistTypeMicroservice,
+                       Type:        datasource.ExistTypeMicroservice,
                        Environment: pb.ENV_TEST,
                        AppId:       "exist_appId_service_ms",
                        ServiceName: "exist_service_service_ms",
@@ -353,7 +352,7 @@ func TestService_Exist(t *testing.T) {
 
                log.Info("check by querying a not exist env with alias")
                resp, err = 
datasource.GetMetadataManager().ExistService(getContext(), 
&pb.GetExistenceRequest{
-                       Type:        service.ExistTypeMicroservice,
+                       Type:        datasource.ExistTypeMicroservice,
                        Environment: pb.ENV_TEST,
                        AppId:       "exist_appId_service_ms",
                        ServiceName: "es_service_ms",
@@ -364,7 +363,7 @@ func TestService_Exist(t *testing.T) {
 
                log.Info("check by querying with a mismatching version")
                resp, err = 
datasource.GetMetadataManager().ExistService(getContext(), 
&pb.GetExistenceRequest{
-                       Type:        service.ExistTypeMicroservice,
+                       Type:        datasource.ExistTypeMicroservice,
                        AppId:       "exist_appId_service_ms",
                        ServiceName: "exist_service_service_ms",
                        Version:     "2.0.0",
@@ -372,7 +371,7 @@ func TestService_Exist(t *testing.T) {
                assert.NoError(t, err)
                assert.Equal(t, pb.ErrServiceNotExists, resp.Response.GetCode())
                resp, err = 
datasource.GetMetadataManager().ExistService(getContext(), 
&pb.GetExistenceRequest{
-                       Type:        service.ExistTypeMicroservice,
+                       Type:        datasource.ExistTypeMicroservice,
                        AppId:       "exist_appId_service_ms",
                        ServiceName: "exist_service_service_ms",
                        Version:     "0.0.0-1.0.0",
@@ -384,7 +383,7 @@ func TestService_Exist(t *testing.T) {
        t.Run("check exist when service exists", func(t *testing.T) {
                log.Info("search with serviceName")
                resp, err := 
datasource.GetMetadataManager().ExistService(getContext(), 
&pb.GetExistenceRequest{
-                       Type:        service.ExistTypeMicroservice,
+                       Type:        datasource.ExistTypeMicroservice,
                        AppId:       "exist_appId_service_ms",
                        ServiceName: "exist_service_service_ms",
                        Version:     "1.0.0",
@@ -394,7 +393,7 @@ func TestService_Exist(t *testing.T) {
 
                log.Info("check with serviceName and env")
                resp, err = 
datasource.GetMetadataManager().ExistService(getContext(), 
&pb.GetExistenceRequest{
-                       Type:        service.ExistTypeMicroservice,
+                       Type:        datasource.ExistTypeMicroservice,
                        Environment: pb.ENV_PROD,
                        AppId:       "exist_appId_service_ms",
                        ServiceName: "exist_service_service_ms",
@@ -405,7 +404,7 @@ func TestService_Exist(t *testing.T) {
 
                log.Info("check with alias")
                resp, err = 
datasource.GetMetadataManager().ExistService(getContext(), 
&pb.GetExistenceRequest{
-                       Type:        service.ExistTypeMicroservice,
+                       Type:        datasource.ExistTypeMicroservice,
                        AppId:       "exist_appId_service_ms",
                        ServiceName: "es_service_ms",
                        Version:     "1.0.0",
@@ -415,7 +414,7 @@ func TestService_Exist(t *testing.T) {
 
                log.Info("check with alias and env")
                resp, err = 
datasource.GetMetadataManager().ExistService(getContext(), 
&pb.GetExistenceRequest{
-                       Type:        service.ExistTypeMicroservice,
+                       Type:        datasource.ExistTypeMicroservice,
                        Environment: pb.ENV_PROD,
                        AppId:       "exist_appId_service_ms",
                        ServiceName: "es_service_ms",
@@ -426,7 +425,7 @@ func TestService_Exist(t *testing.T) {
 
                log.Info("check with latest versionRule")
                resp, err = 
datasource.GetMetadataManager().ExistService(getContext(), 
&pb.GetExistenceRequest{
-                       Type:        service.ExistTypeMicroservice,
+                       Type:        datasource.ExistTypeMicroservice,
                        AppId:       "exist_appId_service_ms",
                        ServiceName: "es_service_ms",
                        Version:     "latest",
@@ -436,7 +435,7 @@ func TestService_Exist(t *testing.T) {
 
                log.Info("check with 1.0.0+ versionRule")
                resp, err = 
datasource.GetMetadataManager().ExistService(getContext(), 
&pb.GetExistenceRequest{
-                       Type:        service.ExistTypeMicroservice,
+                       Type:        datasource.ExistTypeMicroservice,
                        AppId:       "exist_appId_service_ms",
                        ServiceName: "es_service_ms",
                        Version:     "1.0.0+",
@@ -446,7 +445,7 @@ func TestService_Exist(t *testing.T) {
 
                log.Info("check with range versionRule")
                resp, err = 
datasource.GetMetadataManager().ExistService(getContext(), 
&pb.GetExistenceRequest{
-                       Type:        service.ExistTypeMicroservice,
+                       Type:        datasource.ExistTypeMicroservice,
                        AppId:       "exist_appId_service_ms",
                        ServiceName: "es_service_ms",
                        Version:     "0.9.1-1.0.1",
diff --git a/pkg/proto/service_ex.go b/pkg/proto/service_ex.go
index 1d49227..09d291b 100644
--- a/pkg/proto/service_ex.go
+++ b/pkg/proto/service_ex.go
@@ -16,22 +16,3 @@
  */
 
 package proto
-
-import (
-       "context"
-
-       "github.com/go-chassis/cari/discovery"
-       "github.com/gorilla/websocket"
-)
-
-type ServiceInstanceCtrlServerEx interface {
-       ServiceInstanceCtrlServer
-
-       BatchFind(ctx context.Context, in *discovery.BatchFindInstancesRequest) 
(*discovery.BatchFindInstancesResponse, error)
-
-       WebSocketWatch(ctx context.Context, in *discovery.WatchInstanceRequest, 
conn *websocket.Conn)
-
-       WatchHeartbeat(ctx context.Context, in *discovery.HeartbeatRequest, 
conn *websocket.Conn)
-
-       ClusterHealth(ctx context.Context) (*discovery.GetInstancesResponse, 
error)
-}
diff --git a/server/api.go b/server/api.go
index 659dd44..eb75d7a 100644
--- a/server/api.go
+++ b/server/api.go
@@ -24,6 +24,8 @@ import (
        "strconv"
        "time"
 
+       "github.com/apache/servicecomb-service-center/server/service/disco"
+
        "github.com/apache/servicecomb-service-center/datasource"
        "github.com/apache/servicecomb-service-center/pkg/gopool"
        "github.com/apache/servicecomb-service-center/pkg/grace"
@@ -33,7 +35,6 @@ import (
        "github.com/apache/servicecomb-service-center/server/core"
        "github.com/apache/servicecomb-service-center/server/metrics"
        rs "github.com/apache/servicecomb-service-center/server/rest"
-       "github.com/apache/servicecomb-service-center/server/service"
 )
 
 var apiServer *APIServer
@@ -49,7 +50,7 @@ func init() {
 }
 
 func InitAPI() {
-       core.ServiceAPI, core.InstanceAPI = service.AssembleResources()
+       core.ServiceAPI = disco.AssembleResources()
 }
 
 type APIType int64
diff --git a/server/core/microservice.go b/server/core/microservice.go
index f4dc273..10e936c 100644
--- a/server/core/microservice.go
+++ b/server/core/microservice.go
@@ -30,7 +30,6 @@ import (
 
 var (
        ServiceAPI         proto.ServiceCtrlServer
-       InstanceAPI        proto.ServiceInstanceCtrlServerEx
        Service            *discovery.MicroService
        Instance           *discovery.MicroServiceInstance
        globalServiceNames map[string]struct{}
diff --git a/server/plugin/auth/buildin/parser_test.go 
b/server/plugin/auth/buildin/parser_test.go
index 2651667..61a2f6a 100644
--- a/server/plugin/auth/buildin/parser_test.go
+++ b/server/plugin/auth/buildin/parser_test.go
@@ -18,6 +18,7 @@
 package buildin_test
 
 import (
+       discosvc 
"github.com/apache/servicecomb-service-center/server/service/disco"
        _ "github.com/apache/servicecomb-service-center/test"
 
        "context"
@@ -25,7 +26,6 @@ import (
        "strings"
        "testing"
 
-       "github.com/apache/servicecomb-service-center/datasource"
        "github.com/apache/servicecomb-service-center/pkg/rest"
        "github.com/apache/servicecomb-service-center/pkg/util"
        "github.com/apache/servicecomb-service-center/server/plugin/auth"
@@ -40,14 +40,14 @@ func TestGetAPIParseFunc(t *testing.T) {
 
        var serviceIDA, serviceIDB string
 
-       response, _ := 
datasource.GetMetadataManager().RegisterService(context.Background(), 
&discovery.CreateServiceRequest{
+       response, _ := discosvc.RegisterService(context.Background(), 
&discovery.CreateServiceRequest{
                Service: &discovery.MicroService{
                        AppId:       "TestGetAPIParseFunc",
                        ServiceName: "A",
                },
        })
        serviceIDA = response.ServiceId
-       response, _ = 
datasource.GetMetadataManager().RegisterService(context.Background(), 
&discovery.CreateServiceRequest{
+       response, _ = discosvc.RegisterService(context.Background(), 
&discovery.CreateServiceRequest{
                Service: &discovery.MicroService{
                        AppId:       "TestGetAPIParseFunc",
                        ServiceName: "B",
diff --git a/server/plugin/quota/buildin/buildin_test.go 
b/server/plugin/quota/buildin/buildin_test.go
index 8a4b1f1..0235642 100644
--- a/server/plugin/quota/buildin/buildin_test.go
+++ b/server/plugin/quota/buildin/buildin_test.go
@@ -18,6 +18,8 @@ package buildin_test
 import (
        "context"
 
+       discosvc 
"github.com/apache/servicecomb-service-center/server/service/disco"
+
        "github.com/apache/servicecomb-service-center/pkg/util"
 
        "github.com/apache/servicecomb-service-center/datasource"
@@ -51,7 +53,7 @@ func TestGetResourceLimit(t *testing.T) {
                assert.Nil(t, err)
        })
        t.Run("create 1 instance,should success", func(t *testing.T) {
-               resp, err := 
datasource.GetMetadataManager().RegisterService(ctx, &pb.CreateServiceRequest{
+               resp, err := discosvc.RegisterService(ctx, 
&pb.CreateServiceRequest{
                        Service: &pb.MicroService{
                                ServiceName: "quota",
                        },
@@ -68,7 +70,7 @@ func TestGetResourceLimit(t *testing.T) {
                assert.NotNil(t, err)
        })
        t.Run("create 150001 instance,should failed", func(t *testing.T) {
-               resp, err := 
datasource.GetMetadataManager().RegisterService(ctx, &pb.CreateServiceRequest{
+               resp, err := discosvc.RegisterService(ctx, 
&pb.CreateServiceRequest{
                        Service: &pb.MicroService{
                                ServiceName: "quota2",
                        },
diff --git a/server/plugin/tracing/pzipkin/common_test.go 
b/server/plugin/tracing/pzipkin/common_test.go
index a08045b..1361d95 100644
--- a/server/plugin/tracing/pzipkin/common_test.go
+++ b/server/plugin/tracing/pzipkin/common_test.go
@@ -16,11 +16,12 @@
 package pzipkin
 
 import (
-       zipkintracer "github.com/openzipkin/zipkin-go-opentracing"
        "os"
        "path/filepath"
        "testing"
 
+       zipkintracer "github.com/openzipkin/zipkin-go-opentracing"
+
        "github.com/go-chassis/go-archaius"
 )
 
diff --git a/server/rest/controller/v4/instance_controller.go 
b/server/rest/controller/v4/instance_controller.go
index 8fb92fa..91aa894 100644
--- a/server/rest/controller/v4/instance_controller.go
+++ b/server/rest/controller/v4/instance_controller.go
@@ -24,10 +24,11 @@ import (
        "net/http"
        "strings"
 
+       discosvc 
"github.com/apache/servicecomb-service-center/server/service/disco"
+
        "github.com/apache/servicecomb-service-center/pkg/log"
        "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/go-chassis/cari/discovery"
 )
 
@@ -68,7 +69,7 @@ func (s *MicroServiceInstanceService) RegisterInstance(w 
http.ResponseWriter, r
                request.Instance.ServiceId = r.URL.Query().Get(":serviceId")
        }
 
-       resp, err := core.InstanceAPI.Register(r.Context(), request)
+       resp, err := discosvc.RegisterInstance(r.Context(), request)
        if err != nil {
                log.Errorf(err, "register instance failed")
                rest.WriteError(w, pb.ErrInternal, "register instance failed")
@@ -84,7 +85,7 @@ func (s *MicroServiceInstanceService) Heartbeat(w 
http.ResponseWriter, r *http.R
                ServiceId:  query.Get(":serviceId"),
                InstanceId: query.Get(":instanceId"),
        }
-       resp, _ := core.InstanceAPI.Heartbeat(r.Context(), request)
+       resp, _ := discosvc.Heartbeat(r.Context(), request)
        rest.WriteResponse(w, r, resp.Response, nil)
 }
 
@@ -103,7 +104,7 @@ func (s *MicroServiceInstanceService) HeartbeatSet(w 
http.ResponseWriter, r *htt
                rest.WriteError(w, pb.ErrInvalidParams, "Unmarshal error")
                return
        }
-       resp, _ := core.InstanceAPI.HeartbeatSet(r.Context(), request)
+       resp, _ := discosvc.HeartbeatSet(r.Context(), request)
        rest.WriteResponse(w, r, resp.Response, nil)
 }
 
@@ -113,7 +114,7 @@ func (s *MicroServiceInstanceService) UnregisterInstance(w 
http.ResponseWriter,
                ServiceId:  query.Get(":serviceId"),
                InstanceId: query.Get(":instanceId"),
        }
-       resp, _ := core.InstanceAPI.Unregister(r.Context(), request)
+       resp, _ := discosvc.UnregisterInstance(r.Context(), request)
        rest.WriteResponse(w, r, resp.Response, nil)
 }
 
@@ -135,7 +136,7 @@ func (s *MicroServiceInstanceService) FindInstances(w 
http.ResponseWriter, r *ht
 
        ctx := util.SetTargetDomainProject(r.Context(), 
r.Header.Get("X-Domain-Name"), query.Get(":project"))
 
-       resp, _ := core.InstanceAPI.Find(ctx, request)
+       resp, _ := discosvc.FindInstances(ctx, request)
        respInternal := resp.Response
        resp.Response = nil
 
@@ -169,7 +170,7 @@ func (s *MicroServiceInstanceService) InstancesAction(w 
http.ResponseWriter, r *
                }
                request.ConsumerServiceId = r.Header.Get("X-ConsumerId")
                ctx := util.SetTargetDomainProject(r.Context(), 
r.Header.Get("X-Domain-Name"), r.URL.Query().Get(":project"))
-               resp, _ := core.InstanceAPI.BatchFind(ctx, request)
+               resp, _ := discosvc.BatchFindInstances(ctx, request)
                rest.WriteResponse(w, r, resp.Response, resp)
        default:
                err = fmt.Errorf("Invalid action: %s", action)
@@ -192,7 +193,7 @@ func (s *MicroServiceInstanceService) GetOneInstance(w 
http.ResponseWriter, r *h
                Tags:               ids,
        }
 
-       resp, _ := core.InstanceAPI.GetOneInstance(r.Context(), request)
+       resp, _ := discosvc.GetOneInstance(r.Context(), request)
        respInternal := resp.Response
        resp.Response = nil
 
@@ -218,7 +219,7 @@ func (s *MicroServiceInstanceService) GetInstances(w 
http.ResponseWriter, r *htt
                ProviderServiceId: query.Get(":serviceId"),
                Tags:              ids,
        }
-       resp, _ := core.InstanceAPI.GetInstances(r.Context(), request)
+       resp, _ := discosvc.GetInstances(r.Context(), request)
        respInternal := resp.Response
        resp.Response = nil
 
@@ -240,7 +241,7 @@ func (s *MicroServiceInstanceService) UpdateStatus(w 
http.ResponseWriter, r *htt
                InstanceId: query.Get(":instanceId"),
                Status:     status,
        }
-       resp, _ := core.InstanceAPI.UpdateStatus(r.Context(), request)
+       resp, _ := discosvc.UpdateInstanceStatus(r.Context(), request)
        rest.WriteResponse(w, r, resp.Response, nil)
 }
 
@@ -262,7 +263,7 @@ func (s *MicroServiceInstanceService) UpdateMetadata(w 
http.ResponseWriter, r *h
                rest.WriteError(w, pb.ErrInvalidParams, "Unmarshal error")
                return
        }
-       resp, err := core.InstanceAPI.UpdateInstanceProperties(r.Context(), 
request)
+       resp, err := discosvc.UpdateInstanceProperties(r.Context(), request)
        if err != nil {
                log.Errorf(err, "can not update instance")
                rest.WriteError(w, pb.ErrInternal, "can not update instance")
diff --git a/server/rest/controller/v4/instance_watcher.go 
b/server/rest/controller/v4/instance_watcher.go
index 7e273be..b9f9bf8 100644
--- a/server/rest/controller/v4/instance_watcher.go
+++ b/server/rest/controller/v4/instance_watcher.go
@@ -20,9 +20,11 @@ package v4
 import (
        "net/http"
 
+       discosvc 
"github.com/apache/servicecomb-service-center/server/service/disco"
+       "github.com/apache/servicecomb-service-center/server/service/heartbeat"
+
        "github.com/apache/servicecomb-service-center/pkg/log"
        "github.com/apache/servicecomb-service-center/pkg/rest"
-       "github.com/apache/servicecomb-service-center/server/core"
        "github.com/apache/servicecomb-service-center/server/handler/exception"
        pb "github.com/go-chassis/cari/discovery"
        "github.com/gorilla/websocket"
@@ -70,7 +72,7 @@ func (s *WatchService) Watch(w http.ResponseWriter, r 
*http.Request) {
        defer conn.Close()
 
        r.Method = "WATCH"
-       core.InstanceAPI.WebSocketWatch(r.Context(), &pb.WatchInstanceRequest{
+       discosvc.WebSocketWatch(r.Context(), &pb.WatchInstanceRequest{
                SelfServiceId: r.URL.Query().Get(":serviceId"),
        }, conn)
 }
@@ -82,7 +84,7 @@ func (s *WatchService) Heartbeat(w http.ResponseWriter, r 
*http.Request) {
                return
        }
        defer conn.Close()
-       core.InstanceAPI.WatchHeartbeat(r.Context(), &pb.HeartbeatRequest{
+       heartbeat.WatchHeartbeat(r.Context(), &pb.HeartbeatRequest{
                ServiceId:  r.URL.Query().Get(":serviceId"),
                InstanceId: r.URL.Query().Get(":instanceId"),
        }, conn)
diff --git a/server/rest/controller/v4/main_controller.go 
b/server/rest/controller/v4/main_controller.go
index f27d79c..4aa8147 100644
--- a/server/rest/controller/v4/main_controller.go
+++ b/server/rest/controller/v4/main_controller.go
@@ -22,8 +22,9 @@ import (
        "net/http"
        "sync"
 
+       discosvc 
"github.com/apache/servicecomb-service-center/server/service/disco"
+
        "github.com/apache/servicecomb-service-center/pkg/rest"
-       "github.com/apache/servicecomb-service-center/server/core"
        "github.com/apache/servicecomb-service-center/version"
        pb "github.com/go-chassis/cari/discovery"
 )
@@ -53,7 +54,7 @@ func (s *MainService) URLPatterns() []rest.Route {
 }
 
 func (s *MainService) ClusterHealth(w http.ResponseWriter, r *http.Request) {
-       resp, _ := core.InstanceAPI.ClusterHealth(r.Context())
+       resp, _ := discosvc.ClusterHealth(r.Context())
        rest.WriteResponse(w, r, resp.Response, resp)
 }
 
diff --git a/server/rest/govern/service_test.go 
b/server/rest/govern/service_test.go
index 3073418..f9bb011 100644
--- a/server/rest/govern/service_test.go
+++ b/server/rest/govern/service_test.go
@@ -22,6 +22,8 @@ import (
        "net/http"
        "net/http/httptest"
 
+       "github.com/apache/servicecomb-service-center/server/service/disco"
+
        "github.com/apache/servicecomb-service-center/server/core"
        "github.com/apache/servicecomb-service-center/server/rest/govern"
        pb "github.com/go-chassis/cari/discovery"
@@ -139,7 +141,7 @@ var _ = Describe("'Govern' service", func() {
                        Expect(err).To(BeNil())
                        
Expect(resp.Response.GetCode()).To(Equal(pb.ResponseSuccess))
 
-                       core.InstanceAPI.Register(getContext(), 
&pb.RegisterInstanceRequest{
+                       disco.RegisterInstance(getContext(), 
&pb.RegisterInstanceRequest{
                                Instance: &pb.MicroServiceInstance{
                                        ServiceId: serviceId,
                                        Endpoints: []string{
diff --git a/server/service/dependency.go b/server/service/disco/dependency.go
similarity index 99%
rename from server/service/dependency.go
rename to server/service/disco/dependency.go
index d7bb026..88f43f6 100644
--- a/server/service/dependency.go
+++ b/server/service/disco/dependency.go
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package service
+package disco
 
 import (
        "context"
diff --git a/server/service/dependency_test.go 
b/server/service/disco/dependency_test.go
similarity index 98%
rename from server/service/dependency_test.go
rename to server/service/disco/dependency_test.go
index 5f5dbb5..5597711 100644
--- a/server/service/dependency_test.go
+++ b/server/service/disco/dependency_test.go
@@ -14,11 +14,13 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package service_test
+package disco_test
 
 import (
        "strconv"
 
+       "github.com/apache/servicecomb-service-center/server/service/disco"
+
        pb "github.com/go-chassis/cari/discovery"
        "github.com/go-chassis/go-archaius"
        . "github.com/onsi/ginkgo"
@@ -713,7 +715,7 @@ var _ = Describe("'Dependency' service", func() {
                Context("when after finding instance", func() {
                        It("should created dependencies between C and P", 
func() {
                                By("find provider")
-                               resp, err := 
instanceResource.Find(getContext(), &pb.FindInstancesRequest{
+                               resp, err := disco.FindInstances(getContext(), 
&pb.FindInstancesRequest{
                                        ConsumerServiceId: consumerId1,
                                        AppId:             "get_dep_group",
                                        ServiceName:       "get_dep_provider",
@@ -742,7 +744,7 @@ var _ = Describe("'Dependency' service", func() {
                                Expect(len(respGetC.Providers)).To(Equal(2))
 
                                //重复find
-                               resp, err = instanceResource.Find(getContext(), 
&pb.FindInstancesRequest{
+                               resp, err = disco.FindInstances(getContext(), 
&pb.FindInstancesRequest{
                                        ConsumerServiceId: consumerId1,
                                        AppId:             "get_dep_group",
                                        ServiceName:       "get_dep_provider",
@@ -771,7 +773,7 @@ var _ = Describe("'Dependency' service", func() {
                                
Expect(respGetC.Providers[0].ServiceId).To(Equal(providerId2))
 
                                By("get self deps")
-                               resp, err = instanceResource.Find(getContext(), 
&pb.FindInstancesRequest{
+                               resp, err = disco.FindInstances(getContext(), 
&pb.FindInstancesRequest{
                                        ConsumerServiceId: consumerId1,
                                        AppId:             "get_dep_group",
                                        ServiceName:       "get_dep_consumer",
@@ -791,7 +793,7 @@ var _ = Describe("'Dependency' service", func() {
                                Expect(len(respGetC.Providers)).To(Equal(1))
 
                                By("find before provider register")
-                               resp, err = instanceResource.Find(getContext(), 
&pb.FindInstancesRequest{
+                               resp, err = disco.FindInstances(getContext(), 
&pb.FindInstancesRequest{
                                        ConsumerServiceId: providerId2,
                                        AppId:             "get_dep_group",
                                        ServiceName:       "get_dep_finder",
@@ -813,7 +815,7 @@ var _ = Describe("'Dependency' service", func() {
                                
Expect(respCreateF.Response.GetCode()).To(Equal(pb.ResponseSuccess))
                                finder1 := respCreateF.ServiceId
 
-                               resp, err = instanceResource.Find(getContext(), 
&pb.FindInstancesRequest{
+                               resp, err = disco.FindInstances(getContext(), 
&pb.FindInstancesRequest{
                                        ConsumerServiceId: providerId2,
                                        AppId:             "get_dep_group",
                                        ServiceName:       "get_dep_finder",
@@ -861,7 +863,7 @@ var _ = Describe("'Dependency' service", func() {
                                Expect(err).To(BeNil())
                                
Expect(respCreateF.Response.GetCode()).To(Equal(pb.ResponseSuccess))
 
-                               resp, err = instanceResource.Find(getContext(), 
&pb.FindInstancesRequest{
+                               resp, err = disco.FindInstances(getContext(), 
&pb.FindInstancesRequest{
                                        ConsumerServiceId: providerId2,
                                        AppId:             "get_dep_group",
                                        ServiceName:       "get_dep_finder",
diff --git a/server/service/instance.go b/server/service/disco/instance.go
similarity index 86%
rename from server/service/instance.go
rename to server/service/disco/instance.go
index fc03473..201ecd4 100644
--- a/server/service/instance.go
+++ b/server/service/disco/instance.go
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package service
+package disco
 
 import (
        "context"
@@ -34,10 +34,7 @@ import (
        "github.com/apache/servicecomb-service-center/server/service/validator"
 )
 
-type InstanceService struct {
-}
-
-func (s *InstanceService) Register(ctx context.Context, in 
*pb.RegisterInstanceRequest) (*pb.RegisterInstanceResponse, error) {
+func RegisterInstance(ctx context.Context, in *pb.RegisterInstanceRequest) 
(*pb.RegisterInstanceResponse, error) {
        if err := validator.Validate(in); err != nil {
                remoteIP := util.GetIPFromContext(ctx)
                log.Errorf(err, "register instance failed, invalid parameters, 
operator %s", remoteIP)
@@ -65,7 +62,7 @@ func (s *InstanceService) Register(ctx context.Context, in 
*pb.RegisterInstanceR
        return datasource.GetMetadataManager().RegisterInstance(ctx, in)
 }
 
-func (s *InstanceService) Unregister(ctx context.Context,
+func UnregisterInstance(ctx context.Context,
        in *pb.UnregisterInstanceRequest) (*pb.UnregisterInstanceResponse, 
error) {
        if err := validator.Validate(in); err != nil {
                remoteIP := util.GetIPFromContext(ctx)
@@ -78,7 +75,7 @@ func (s *InstanceService) Unregister(ctx context.Context,
        return datasource.GetMetadataManager().UnregisterInstance(ctx, in)
 }
 
-func (s *InstanceService) Heartbeat(ctx context.Context, in 
*pb.HeartbeatRequest) (*pb.HeartbeatResponse, error) {
+func Heartbeat(ctx context.Context, in *pb.HeartbeatRequest) 
(*pb.HeartbeatResponse, error) {
        if err := validator.Validate(in); err != nil {
                remoteIP := util.GetIPFromContext(ctx)
                log.Errorf(err, "heartbeat failed, invalid parameters, operator 
%s", remoteIP)
@@ -90,7 +87,7 @@ func (s *InstanceService) Heartbeat(ctx context.Context, in 
*pb.HeartbeatRequest
        return datasource.GetMetadataManager().Heartbeat(ctx, in)
 }
 
-func (s *InstanceService) HeartbeatSet(ctx context.Context,
+func HeartbeatSet(ctx context.Context,
        in *pb.HeartbeatSetRequest) (*pb.HeartbeatSetResponse, error) {
        if len(in.Instances) == 0 {
                log.Errorf(nil, "heartbeats failed, invalid request. Body not 
contain Instances or is empty")
@@ -101,7 +98,7 @@ func (s *InstanceService) HeartbeatSet(ctx context.Context,
        return datasource.GetMetadataManager().HeartbeatSet(ctx, in)
 }
 
-func (s *InstanceService) GetOneInstance(ctx context.Context,
+func GetOneInstance(ctx context.Context,
        in *pb.GetOneInstanceRequest) (*pb.GetOneInstanceResponse, error) {
        err := validator.Validate(in)
        if err != nil {
@@ -114,7 +111,7 @@ func (s *InstanceService) GetOneInstance(ctx 
context.Context,
        return datasource.GetMetadataManager().GetInstance(ctx, in)
 }
 
-func (s *InstanceService) GetInstances(ctx context.Context, in 
*pb.GetInstancesRequest) (*pb.GetInstancesResponse, error) {
+func GetInstances(ctx context.Context, in *pb.GetInstancesRequest) 
(*pb.GetInstancesResponse, error) {
        err := validator.Validate(in)
        if err != nil {
                log.Errorf(err, "get instances failed: invalid parameters")
@@ -126,7 +123,7 @@ func (s *InstanceService) GetInstances(ctx context.Context, 
in *pb.GetInstancesR
        return datasource.GetMetadataManager().GetInstances(ctx, in)
 }
 
-func (s *InstanceService) Find(ctx context.Context, in 
*pb.FindInstancesRequest) (*pb.FindInstancesResponse, error) {
+func FindInstances(ctx context.Context, in *pb.FindInstancesRequest) 
(*pb.FindInstancesResponse, error) {
        err := validator.Validate(in)
        if err != nil {
                log.Errorf(err, "find instance failed: invalid parameters")
@@ -138,7 +135,7 @@ func (s *InstanceService) Find(ctx context.Context, in 
*pb.FindInstancesRequest)
        return datasource.GetMetadataManager().FindInstances(ctx, in)
 }
 
-func (s *InstanceService) BatchFind(ctx context.Context, in 
*pb.BatchFindInstancesRequest) (*pb.BatchFindInstancesResponse, error) {
+func BatchFindInstances(ctx context.Context, in *pb.BatchFindInstancesRequest) 
(*pb.BatchFindInstancesResponse, error) {
        if len(in.Services) == 0 && len(in.Instances) == 0 {
                err := errors.New("Required services or instances")
                log.Errorf(err, "batch find instance failed: invalid 
parameters")
@@ -158,7 +155,7 @@ func (s *InstanceService) BatchFind(ctx context.Context, in 
*pb.BatchFindInstanc
        return datasource.GetMetadataManager().BatchFind(ctx, in)
 }
 
-func (s *InstanceService) UpdateStatus(ctx context.Context, in 
*pb.UpdateInstanceStatusRequest) (*pb.UpdateInstanceStatusResponse, error) {
+func UpdateInstanceStatus(ctx context.Context, in 
*pb.UpdateInstanceStatusRequest) (*pb.UpdateInstanceStatusResponse, error) {
        if err := validator.Validate(in); err != nil {
                updateStatusFlag := util.StringJoin([]string{in.ServiceId, 
in.InstanceId, in.Status}, "/")
                log.Errorf(nil, "update instance[%s] status failed", 
updateStatusFlag)
@@ -170,7 +167,7 @@ func (s *InstanceService) UpdateStatus(ctx context.Context, 
in *pb.UpdateInstanc
        return datasource.GetMetadataManager().UpdateInstanceStatus(ctx, in)
 }
 
-func (s *InstanceService) UpdateInstanceProperties(ctx context.Context, in 
*pb.UpdateInstancePropsRequest) (*pb.UpdateInstancePropsResponse, error) {
+func UpdateInstanceProperties(ctx context.Context, in 
*pb.UpdateInstancePropsRequest) (*pb.UpdateInstancePropsResponse, error) {
        if err := validator.Validate(in); err != nil {
                instanceFlag := util.StringJoin([]string{in.ServiceId, 
in.InstanceId}, "/")
                log.Errorf(nil, "update instance[%s] properties failed", 
instanceFlag)
@@ -182,7 +179,7 @@ func (s *InstanceService) UpdateInstanceProperties(ctx 
context.Context, in *pb.U
        return datasource.GetMetadataManager().UpdateInstanceProperties(ctx, in)
 }
 
-func (s *InstanceService) ClusterHealth(ctx context.Context) 
(*pb.GetInstancesResponse, error) {
+func ClusterHealth(ctx context.Context) (*pb.GetInstancesResponse, error) {
        if err := health.GlobalHealthChecker().Healthy(); err != nil {
                return &pb.GetInstancesResponse{
                        Response: pb.CreateResponse(pb.ErrUnhealthy, 
err.Error()),
diff --git a/server/service/instance_test.go 
b/server/service/disco/instance_test.go
similarity index 84%
rename from server/service/instance_test.go
rename to server/service/disco/instance_test.go
index 2a6ea16..d5a787a 100644
--- a/server/service/instance_test.go
+++ b/server/service/disco/instance_test.go
@@ -14,13 +14,15 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package service_test
+package disco_test
 
 import (
        "math"
        "strconv"
        "strings"
 
+       discosvc 
"github.com/apache/servicecomb-service-center/server/service/disco"
+
        "github.com/apache/servicecomb-service-center/pkg/util"
        "github.com/apache/servicecomb-service-center/server/config"
        "github.com/apache/servicecomb-service-center/server/core"
@@ -57,7 +59,7 @@ var _ = Describe("'Instance' service", func() {
 
                Context("when register a instance", func() {
                        It("should be passed", func() {
-                               resp, err := 
instanceResource.Register(getContext(), &pb.RegisterInstanceRequest{
+                               resp, err := 
discosvc.RegisterInstance(getContext(), &pb.RegisterInstanceRequest{
                                        Instance: &pb.MicroServiceInstance{
                                                ServiceId: serviceId1,
                                                Endpoints: []string{
@@ -71,7 +73,7 @@ var _ = Describe("'Instance' service", func() {
                                
Expect(resp.Response.GetCode()).To(Equal(pb.ResponseSuccess))
                                Expect(resp.InstanceId).To(Not(Equal("")))
 
-                               resp, err = 
instanceResource.Register(getContext(), &pb.RegisterInstanceRequest{
+                               resp, err = 
discosvc.RegisterInstance(getContext(), &pb.RegisterInstanceRequest{
                                        Instance: &pb.MicroServiceInstance{
                                                InstanceId: "customId",
                                                ServiceId:  serviceId1,
@@ -87,7 +89,7 @@ var _ = Describe("'Instance' service", func() {
                                Expect(resp.InstanceId).To(Equal("customId"))
 
                                By("status is nil")
-                               resp, err = 
instanceResource.Register(getContext(), &pb.RegisterInstanceRequest{
+                               resp, err = 
discosvc.RegisterInstance(getContext(), &pb.RegisterInstanceRequest{
                                        Instance: &pb.MicroServiceInstance{
                                                ServiceId: serviceId1,
                                                Endpoints: []string{
@@ -109,7 +111,7 @@ var _ = Describe("'Instance' service", func() {
                                        eps = append(eps, s)
                                        properties[s] = s
                                }
-                               resp, err = 
instanceResource.Register(getContext(), &pb.RegisterInstanceRequest{
+                               resp, err = 
discosvc.RegisterInstance(getContext(), &pb.RegisterInstanceRequest{
                                        Instance: &pb.MicroServiceInstance{
                                                ServiceId:  serviceId1,
                                                Endpoints:  eps,
@@ -145,13 +147,13 @@ var _ = Describe("'Instance' service", func() {
                                        HostName: "UT-HOST",
                                        Status:   pb.MSI_UP,
                                }
-                               resp, err := 
instanceResource.Register(getContext(), &pb.RegisterInstanceRequest{
+                               resp, err := 
discosvc.RegisterInstance(getContext(), &pb.RegisterInstanceRequest{
                                        Instance: instance,
                                })
                                Expect(err).To(BeNil())
                                
Expect(resp.Response.GetCode()).To(Equal(pb.ResponseSuccess))
 
-                               resp, err = 
instanceResource.Register(getContext(), &pb.RegisterInstanceRequest{
+                               resp, err = 
discosvc.RegisterInstance(getContext(), &pb.RegisterInstanceRequest{
                                        Instance: instance,
                                })
                                Expect(err).To(BeNil())
@@ -163,7 +165,7 @@ var _ = Describe("'Instance' service", func() {
                Context("when register invalid instance", func() {
                        It("should be failed", func() {
                                By("endpoints are empty")
-                               resp, err := 
instanceResource.Register(getContext(), &pb.RegisterInstanceRequest{
+                               resp, err := 
discosvc.RegisterInstance(getContext(), &pb.RegisterInstanceRequest{
                                        Instance: &pb.MicroServiceInstance{
                                                ServiceId: serviceId1,
                                                Endpoints: []string{""},
@@ -175,7 +177,7 @@ var _ = Describe("'Instance' service", func() {
                                
Expect(resp.Response.GetCode()).To(Equal(pb.ErrInvalidParams))
 
                                By("serviceId is empty")
-                               resp, err = 
instanceResource.Register(getContext(), &pb.RegisterInstanceRequest{
+                               resp, err = 
discosvc.RegisterInstance(getContext(), &pb.RegisterInstanceRequest{
                                        Instance: &pb.MicroServiceInstance{
                                                HostName: "UT-HOST",
                                                Endpoints: []string{
@@ -188,7 +190,7 @@ var _ = Describe("'Instance' service", func() {
                                
Expect(resp.Response.GetCode()).ToNot(Equal(pb.ResponseSuccess))
 
                                By("service does not exist")
-                               resp, err = 
instanceResource.Register(getContext(), &pb.RegisterInstanceRequest{
+                               resp, err = 
discosvc.RegisterInstance(getContext(), &pb.RegisterInstanceRequest{
                                        Instance: &pb.MicroServiceInstance{
                                                ServiceId: "1000000000000000",
                                                Endpoints: []string{
@@ -202,7 +204,7 @@ var _ = Describe("'Instance' service", func() {
                                
Expect(resp.Response.GetCode()).ToNot(Equal(pb.ResponseSuccess))
 
                                By("hostName is empty")
-                               resp, err = 
instanceResource.Register(getContext(), &pb.RegisterInstanceRequest{
+                               resp, err = 
discosvc.RegisterInstance(getContext(), &pb.RegisterInstanceRequest{
                                        Instance: &pb.MicroServiceInstance{
                                                ServiceId: serviceId1,
                                                Endpoints: []string{
@@ -213,7 +215,7 @@ var _ = Describe("'Instance' service", func() {
                                })
                                Expect(err).To(BeNil())
                                
Expect(resp.Response.GetCode()).ToNot(Equal(pb.ResponseSuccess))
-                               resp, err = 
instanceResource.Register(getContext(), &pb.RegisterInstanceRequest{
+                               resp, err = 
discosvc.RegisterInstance(getContext(), &pb.RegisterInstanceRequest{
                                        Instance: &pb.MicroServiceInstance{
                                                ServiceId: serviceId1,
                                                HostName:  " ",
@@ -225,7 +227,7 @@ var _ = Describe("'Instance' service", func() {
                                })
                                Expect(err).To(BeNil())
                                
Expect(resp.Response.GetCode()).ToNot(Equal(pb.ResponseSuccess))
-                               resp, err = 
instanceResource.Register(getContext(), &pb.RegisterInstanceRequest{
+                               resp, err = 
discosvc.RegisterInstance(getContext(), &pb.RegisterInstanceRequest{
                                        Instance: &pb.MicroServiceInstance{
                                                ServiceId: serviceId1,
                                                HostName:  TOO_LONG_HOSTNAME,
@@ -239,14 +241,14 @@ var _ = Describe("'Instance' service", func() {
                                
Expect(resp.Response.GetCode()).ToNot(Equal(pb.ResponseSuccess))
 
                                By("instance is nil")
-                               resp, err = 
instanceResource.Register(getContext(), &pb.RegisterInstanceRequest{
+                               resp, err = 
discosvc.RegisterInstance(getContext(), &pb.RegisterInstanceRequest{
                                        Instance: nil,
                                })
                                Expect(err).To(BeNil())
                                
Expect(resp.Response.GetCode()).ToNot(Equal(pb.ResponseSuccess))
 
                                By("check normal push healthChceck")
-                               resp, err = 
instanceResource.Register(getContext(), &pb.RegisterInstanceRequest{
+                               resp, err = 
discosvc.RegisterInstance(getContext(), &pb.RegisterInstanceRequest{
                                        Instance: &pb.MicroServiceInstance{
                                                ServiceId: serviceId1,
                                                Endpoints: []string{
@@ -264,7 +266,7 @@ var _ = Describe("'Instance' service", func() {
                                Expect(err).To(BeNil())
                                
Expect(resp.Response.GetCode()).To(Equal(pb.ResponseSuccess))
 
-                               resp, err = 
instanceResource.Register(getContext(), &pb.RegisterInstanceRequest{
+                               resp, err = 
discosvc.RegisterInstance(getContext(), &pb.RegisterInstanceRequest{
                                        Instance: &pb.MicroServiceInstance{
                                                ServiceId: serviceId1,
                                                Endpoints: []string{
@@ -283,7 +285,7 @@ var _ = Describe("'Instance' service", func() {
                                
Expect(resp.Response.GetCode()).To(Equal(pb.ResponseSuccess))
 
                                By("check normal pull healthChceck")
-                               resp, err = 
instanceResource.Register(getContext(), &pb.RegisterInstanceRequest{
+                               resp, err = 
discosvc.RegisterInstance(getContext(), &pb.RegisterInstanceRequest{
                                        Instance: &pb.MicroServiceInstance{
                                                ServiceId: serviceId1,
                                                Endpoints: []string{
@@ -303,7 +305,7 @@ var _ = Describe("'Instance' service", func() {
                                
Expect(resp.Response.GetCode()).To(Equal(pb.ResponseSuccess))
 
                                By("check invalid push healthChceck")
-                               resp, err = 
instanceResource.Register(getContext(), &pb.RegisterInstanceRequest{
+                               resp, err = 
discosvc.RegisterInstance(getContext(), &pb.RegisterInstanceRequest{
                                        Instance: &pb.MicroServiceInstance{
                                                ServiceId: serviceId1,
                                                Endpoints: []string{
@@ -322,7 +324,7 @@ var _ = Describe("'Instance' service", func() {
                                
Expect(resp.Response.GetCode()).To(Equal(pb.ErrInvalidParams))
 
                                By("check invalid pull healthChceck")
-                               resp, err = 
instanceResource.Register(getContext(), &pb.RegisterInstanceRequest{
+                               resp, err = 
discosvc.RegisterInstance(getContext(), &pb.RegisterInstanceRequest{
                                        Instance: &pb.MicroServiceInstance{
                                                ServiceId: serviceId1,
                                                Endpoints: []string{
@@ -340,7 +342,7 @@ var _ = Describe("'Instance' service", func() {
                                })
                                Expect(err).To(BeNil())
                                
Expect(resp.Response.GetCode()).To(Equal(pb.ErrInvalidParams))
-                               resp, err = 
instanceResource.Register(getContext(), &pb.RegisterInstanceRequest{
+                               resp, err = 
discosvc.RegisterInstance(getContext(), &pb.RegisterInstanceRequest{
                                        Instance: &pb.MicroServiceInstance{
                                                ServiceId: serviceId1,
                                                Endpoints: []string{
@@ -357,7 +359,7 @@ var _ = Describe("'Instance' service", func() {
                                })
                                Expect(err).To(BeNil())
                                
Expect(resp.Response.GetCode()).To(Equal(pb.ErrInvalidParams))
-                               resp, err = 
instanceResource.Register(getContext(), &pb.RegisterInstanceRequest{
+                               resp, err = 
discosvc.RegisterInstance(getContext(), &pb.RegisterInstanceRequest{
                                        Instance: &pb.MicroServiceInstance{
                                                ServiceId: serviceId1,
                                                Endpoints: []string{
@@ -377,7 +379,7 @@ var _ = Describe("'Instance' service", func() {
                                
Expect(resp.Response.GetCode()).To(Equal(pb.ErrInvalidParams))
 
                                By("invalid status")
-                               resp, err = 
instanceResource.Register(getContext(), &pb.RegisterInstanceRequest{
+                               resp, err = 
discosvc.RegisterInstance(getContext(), &pb.RegisterInstanceRequest{
                                        Instance: &pb.MicroServiceInstance{
                                                ServiceId: serviceId1,
                                                Endpoints: []string{
@@ -414,7 +416,7 @@ var _ = Describe("'Instance' service", func() {
                        
Expect(respCreate.Response.GetCode()).To(Equal(pb.ResponseSuccess))
                        serviceId = respCreate.ServiceId
 
-                       resp, err := instanceResource.Register(getContext(), 
&pb.RegisterInstanceRequest{
+                       resp, err := discosvc.RegisterInstance(getContext(), 
&pb.RegisterInstanceRequest{
                                Instance: &pb.MicroServiceInstance{
                                        ServiceId: serviceId,
                                        HostName:  "UT-HOST",
@@ -428,7 +430,7 @@ var _ = Describe("'Instance' service", func() {
                        
Expect(resp.Response.GetCode()).To(Equal(pb.ResponseSuccess))
                        instanceId1 = resp.InstanceId
 
-                       resp, err = instanceResource.Register(getContext(), 
&pb.RegisterInstanceRequest{
+                       resp, err = discosvc.RegisterInstance(getContext(), 
&pb.RegisterInstanceRequest{
                                Instance: &pb.MicroServiceInstance{
                                        ServiceId: serviceId,
                                        HostName:  "UT-HOST",
@@ -446,7 +448,7 @@ var _ = Describe("'Instance' service", func() {
                Context("when update a lease", func() {
                        It("should be passed", func() {
                                By("valid instance")
-                               resp, err := 
instanceResource.Heartbeat(getContext(), &pb.HeartbeatRequest{
+                               resp, err := discosvc.Heartbeat(getContext(), 
&pb.HeartbeatRequest{
                                        ServiceId:  serviceId,
                                        InstanceId: instanceId1,
                                })
@@ -454,31 +456,31 @@ var _ = Describe("'Instance' service", func() {
                                
Expect(resp.Response.GetCode()).To(Equal(pb.ResponseSuccess))
 
                                By("serviceId/instanceId is invalid")
-                               resp, err = 
instanceResource.Heartbeat(getContext(), &pb.HeartbeatRequest{
+                               resp, err = discosvc.Heartbeat(getContext(), 
&pb.HeartbeatRequest{
                                        ServiceId:  "",
                                        InstanceId: instanceId1,
                                })
                                Expect(err).To(BeNil())
                                
Expect(resp.Response.GetCode()).To(Equal(pb.ErrInvalidParams))
-                               resp, err = 
instanceResource.Heartbeat(getContext(), &pb.HeartbeatRequest{
+                               resp, err = discosvc.Heartbeat(getContext(), 
&pb.HeartbeatRequest{
                                        ServiceId:  TOO_LONG_SERVICEID,
                                        InstanceId: instanceId1,
                                })
                                Expect(err).To(BeNil())
                                
Expect(resp.Response.GetCode()).To(Equal(pb.ErrInvalidParams))
-                               resp, err = 
instanceResource.Heartbeat(getContext(), &pb.HeartbeatRequest{
+                               resp, err = discosvc.Heartbeat(getContext(), 
&pb.HeartbeatRequest{
                                        ServiceId:  serviceId,
                                        InstanceId: "",
                                })
                                Expect(err).To(BeNil())
                                
Expect(resp.Response.GetCode()).To(Equal(pb.ErrInvalidParams))
-                               resp, err = 
instanceResource.Heartbeat(getContext(), &pb.HeartbeatRequest{
+                               resp, err = discosvc.Heartbeat(getContext(), 
&pb.HeartbeatRequest{
                                        ServiceId:  serviceId,
                                        InstanceId: "@",
                                })
                                Expect(err).To(BeNil())
                                
Expect(resp.Response.GetCode()).To(Equal(pb.ErrInvalidParams))
-                               resp, err = 
instanceResource.Heartbeat(getContext(), &pb.HeartbeatRequest{
+                               resp, err = discosvc.Heartbeat(getContext(), 
&pb.HeartbeatRequest{
                                        ServiceId:  serviceId,
                                        InstanceId: TOO_LONG_SERVICEID,
                                })
@@ -486,14 +488,14 @@ var _ = Describe("'Instance' service", func() {
                                
Expect(resp.Response.GetCode()).To(Equal(pb.ErrInvalidParams))
 
                                By("serviceId does not exist")
-                               resp, err = 
instanceResource.Heartbeat(getContext(), &pb.HeartbeatRequest{
+                               resp, err = discosvc.Heartbeat(getContext(), 
&pb.HeartbeatRequest{
                                        ServiceId:  "100000000000",
                                        InstanceId: instanceId1,
                                })
                                
Expect(resp.Response.GetCode()).ToNot(Equal(pb.ResponseSuccess))
 
                                By("instance does not exist")
-                               resp, err = 
instanceResource.Heartbeat(getContext(), &pb.HeartbeatRequest{
+                               resp, err = discosvc.Heartbeat(getContext(), 
&pb.HeartbeatRequest{
                                        ServiceId:  serviceId,
                                        InstanceId: "not-exist-ins",
                                })
@@ -504,19 +506,19 @@ var _ = Describe("'Instance' service", func() {
                Context("when batch update lease", func() {
                        It("should be passed", func() {
                                By("instances are empty")
-                               resp, err := 
instanceResource.HeartbeatSet(getContext(), &pb.HeartbeatSetRequest{
+                               resp, err := 
discosvc.HeartbeatSet(getContext(), &pb.HeartbeatSetRequest{
                                        Instances: []*pb.HeartbeatSetElement{},
                                })
                                Expect(err).To(BeNil())
                                
Expect(resp.Response.GetCode()).ToNot(Equal(pb.ResponseSuccess))
 
                                By("instances are nil")
-                               resp, err = 
instanceResource.HeartbeatSet(getContext(), &pb.HeartbeatSetRequest{})
+                               resp, err = discosvc.HeartbeatSet(getContext(), 
&pb.HeartbeatSetRequest{})
                                Expect(err).To(BeNil())
                                
Expect(resp.Response.GetCode()).ToNot(Equal(pb.ResponseSuccess))
 
                                By("request contains > 1 instances")
-                               resp, err = 
instanceResource.HeartbeatSet(getContext(), &pb.HeartbeatSetRequest{
+                               resp, err = discosvc.HeartbeatSet(getContext(), 
&pb.HeartbeatSetRequest{
                                        Instances: []*pb.HeartbeatSetElement{
                                                {
                                                        ServiceId:  serviceId,
@@ -531,7 +533,7 @@ var _ = Describe("'Instance' service", func() {
                                
Expect(resp.Response.GetCode()).To(Equal(pb.ResponseSuccess))
 
                                By("request contains invalid instance")
-                               resp, err = 
instanceResource.HeartbeatSet(getContext(), &pb.HeartbeatSetRequest{
+                               resp, err = discosvc.HeartbeatSet(getContext(), 
&pb.HeartbeatSetRequest{
                                        Instances: []*pb.HeartbeatSetElement{
                                                {
                                                        ServiceId:  serviceId,
@@ -560,7 +562,7 @@ var _ = Describe("'Instance' service", func() {
                        It("should be failed", func() {
                                old := core.Service.ServiceName
                                core.Service.ServiceName = "x"
-                               respCluterhealth, err := 
instanceResource.ClusterHealth(getContext())
+                               respCluterhealth, err := 
discosvc.ClusterHealth(getContext())
                                Expect(err).To(BeNil())
                                
Expect(respCluterhealth.Response.GetCode()).ToNot(Equal(pb.ResponseSuccess))
                                core.Service.ServiceName = old
@@ -569,7 +571,7 @@ var _ = Describe("'Instance' service", func() {
 
                Context("when SC registered", func() {
                        It("should be passed", func() {
-                               respCluterhealth, err := 
instanceResource.ClusterHealth(getContext())
+                               respCluterhealth, err := 
discosvc.ClusterHealth(getContext())
                                Expect(err).To(BeNil())
                                
Expect(respCluterhealth.Response.GetCode()).To(Equal(pb.ResponseSuccess))
                        })
@@ -596,7 +598,7 @@ var _ = Describe("'Instance' service", func() {
                        
Expect(respCreate.Response.GetCode()).To(Equal(pb.ResponseSuccess))
                        serviceId = respCreate.ServiceId
 
-                       resp, err := instanceResource.Register(getContext(), 
&pb.RegisterInstanceRequest{
+                       resp, err := discosvc.RegisterInstance(getContext(), 
&pb.RegisterInstanceRequest{
                                Instance: &pb.MicroServiceInstance{
                                        ServiceId: serviceId,
                                        Endpoints: []string{
@@ -615,7 +617,7 @@ var _ = Describe("'Instance' service", func() {
                Context("when update instance status", func() {
                        It("should be passed", func() {
                                By("update instance status")
-                               respUpdateStatus, err := 
instanceResource.UpdateStatus(getContext(), &pb.UpdateInstanceStatusRequest{
+                               respUpdateStatus, err := 
discosvc.UpdateInstanceStatus(getContext(), &pb.UpdateInstanceStatusRequest{
                                        ServiceId:  serviceId,
                                        InstanceId: instanceId,
                                        Status:     pb.MSI_DOWN,
@@ -623,7 +625,7 @@ var _ = Describe("'Instance' service", func() {
                                Expect(err).To(BeNil())
                                
Expect(respUpdateStatus.Response.GetCode()).To(Equal(pb.ResponseSuccess))
 
-                               respUpdateStatus, err = 
instanceResource.UpdateStatus(getContext(), &pb.UpdateInstanceStatusRequest{
+                               respUpdateStatus, err = 
discosvc.UpdateInstanceStatus(getContext(), &pb.UpdateInstanceStatusRequest{
                                        ServiceId:  serviceId,
                                        InstanceId: instanceId,
                                        Status:     pb.MSI_OUTOFSERVICE,
@@ -631,7 +633,7 @@ var _ = Describe("'Instance' service", func() {
                                Expect(err).To(BeNil())
                                
Expect(respUpdateStatus.Response.GetCode()).To(Equal(pb.ResponseSuccess))
 
-                               respUpdateStatus, err = 
instanceResource.UpdateStatus(getContext(), &pb.UpdateInstanceStatusRequest{
+                               respUpdateStatus, err = 
discosvc.UpdateInstanceStatus(getContext(), &pb.UpdateInstanceStatusRequest{
                                        ServiceId:  serviceId,
                                        InstanceId: instanceId,
                                        Status:     pb.MSI_STARTING,
@@ -639,7 +641,7 @@ var _ = Describe("'Instance' service", func() {
                                Expect(err).To(BeNil())
                                
Expect(respUpdateStatus.Response.GetCode()).To(Equal(pb.ResponseSuccess))
 
-                               respUpdateStatus, err = 
instanceResource.UpdateStatus(getContext(), &pb.UpdateInstanceStatusRequest{
+                               respUpdateStatus, err = 
discosvc.UpdateInstanceStatus(getContext(), &pb.UpdateInstanceStatusRequest{
                                        ServiceId:  serviceId,
                                        InstanceId: instanceId,
                                        Status:     pb.MSI_TESTING,
@@ -648,7 +650,7 @@ var _ = Describe("'Instance' service", func() {
                                Expect(err).To(BeNil())
                                
Expect(respUpdateStatus.Response.GetCode()).To(Equal(pb.ResponseSuccess))
 
-                               respUpdateStatus, err = 
instanceResource.UpdateStatus(getContext(), &pb.UpdateInstanceStatusRequest{
+                               respUpdateStatus, err = 
discosvc.UpdateInstanceStatus(getContext(), &pb.UpdateInstanceStatusRequest{
                                        ServiceId:  serviceId,
                                        InstanceId: instanceId,
                                        Status:     pb.MSI_UP,
@@ -657,7 +659,7 @@ var _ = Describe("'Instance' service", func() {
                                
Expect(respUpdateStatus.Response.GetCode()).To(Equal(pb.ResponseSuccess))
 
                                By("update status with a empty serviceId")
-                               respUpdateStatus, err = 
instanceResource.UpdateStatus(getContext(), &pb.UpdateInstanceStatusRequest{
+                               respUpdateStatus, err = 
discosvc.UpdateInstanceStatus(getContext(), &pb.UpdateInstanceStatusRequest{
                                        ServiceId:  "",
                                        InstanceId: instanceId,
                                        Status:     pb.MSI_STARTING,
@@ -667,7 +669,7 @@ var _ = Describe("'Instance' service", func() {
                                
Expect(respUpdateStatus.Response.GetCode()).ToNot(Equal(pb.ResponseSuccess))
 
                                By("update status with a not exist service")
-                               respUpdateStatus, err = 
instanceResource.UpdateStatus(getContext(), &pb.UpdateInstanceStatusRequest{
+                               respUpdateStatus, err = 
discosvc.UpdateInstanceStatus(getContext(), &pb.UpdateInstanceStatusRequest{
                                        ServiceId:  "notexistservice",
                                        InstanceId: instanceId,
                                        Status:     pb.MSI_STARTING,
@@ -677,7 +679,7 @@ var _ = Describe("'Instance' service", func() {
                                
Expect(respUpdateStatus.Response.GetCode()).ToNot(Equal(pb.ResponseSuccess))
 
                                By("update status with a not exist instance")
-                               respUpdateStatus, err = 
instanceResource.UpdateStatus(getContext(), &pb.UpdateInstanceStatusRequest{
+                               respUpdateStatus, err = 
discosvc.UpdateInstanceStatus(getContext(), &pb.UpdateInstanceStatusRequest{
                                        ServiceId:  serviceId,
                                        InstanceId: "notexistins",
                                        Status:     pb.MSI_STARTING,
@@ -687,7 +689,7 @@ var _ = Describe("'Instance' service", func() {
                                
Expect(respUpdateStatus.Response.GetCode()).ToNot(Equal(pb.ResponseSuccess))
 
                                By("update invalid status")
-                               respUpdateStatus, err = 
instanceResource.UpdateStatus(getContext(), &pb.UpdateInstanceStatusRequest{
+                               respUpdateStatus, err = 
discosvc.UpdateInstanceStatus(getContext(), &pb.UpdateInstanceStatusRequest{
                                        ServiceId:  serviceId,
                                        InstanceId: instanceId,
                                        Status:     "nonestatus",
@@ -701,7 +703,7 @@ var _ = Describe("'Instance' service", func() {
                Context("when update instance properties", func() {
                        It("should be passed", func() {
                                By("update instance properties")
-                               respUpdateProperties, err := 
instanceResource.UpdateInstanceProperties(getContext(), 
&pb.UpdateInstancePropsRequest{
+                               respUpdateProperties, err := 
discosvc.UpdateInstanceProperties(getContext(), &pb.UpdateInstancePropsRequest{
                                        ServiceId:  serviceId,
                                        InstanceId: instanceId,
                                        Properties: map[string]string{
@@ -719,7 +721,7 @@ var _ = Describe("'Instance' service", func() {
                                        s := strconv.Itoa(i) + 
strings.Repeat("x", 253)
                                        properties[s] = s
                                }
-                               respUpdateProperties, err = 
instanceResource.UpdateInstanceProperties(getContext(), 
&pb.UpdateInstancePropsRequest{
+                               respUpdateProperties, err = 
discosvc.UpdateInstanceProperties(getContext(), &pb.UpdateInstancePropsRequest{
                                        ServiceId:  serviceId,
                                        InstanceId: instanceId,
                                        Properties: properties,
@@ -729,7 +731,7 @@ var _ = Describe("'Instance' service", func() {
                                
Expect(respUpdateProperties.Response.GetCode()).To(Equal(pb.ResponseSuccess))
 
                                By("instance does not exist")
-                               respUpdateProperties, err = 
instanceResource.UpdateInstanceProperties(getContext(), 
&pb.UpdateInstancePropsRequest{
+                               respUpdateProperties, err = 
discosvc.UpdateInstanceProperties(getContext(), &pb.UpdateInstancePropsRequest{
                                        ServiceId:  serviceId,
                                        InstanceId: "notexistins",
                                        Properties: map[string]string{
@@ -741,7 +743,7 @@ var _ = Describe("'Instance' service", func() {
                                
Expect(respUpdateProperties.Response.GetCode()).ToNot(Equal(pb.ResponseSuccess))
 
                                By("serviceId/instanceId/props is invalid")
-                               respUpdateProperties, err = 
instanceResource.UpdateInstanceProperties(getContext(), 
&pb.UpdateInstancePropsRequest{
+                               respUpdateProperties, err = 
discosvc.UpdateInstanceProperties(getContext(), &pb.UpdateInstancePropsRequest{
                                        ServiceId:  "",
                                        InstanceId: instanceId,
                                        Properties: map[string]string{
@@ -751,7 +753,7 @@ var _ = Describe("'Instance' service", func() {
 
                                Expect(err).To(BeNil())
                                
Expect(respUpdateProperties.Response.GetCode()).To(Equal(pb.ErrInvalidParams))
-                               respUpdateProperties, err = 
instanceResource.UpdateInstanceProperties(getContext(), 
&pb.UpdateInstancePropsRequest{
+                               respUpdateProperties, err = 
discosvc.UpdateInstanceProperties(getContext(), &pb.UpdateInstancePropsRequest{
                                        ServiceId:  TOO_LONG_SERVICEID,
                                        InstanceId: instanceId,
                                        Properties: map[string]string{
@@ -761,7 +763,7 @@ var _ = Describe("'Instance' service", func() {
 
                                Expect(err).To(BeNil())
                                
Expect(respUpdateProperties.Response.GetCode()).To(Equal(pb.ErrInvalidParams))
-                               respUpdateProperties, err = 
instanceResource.UpdateInstanceProperties(getContext(), 
&pb.UpdateInstancePropsRequest{
+                               respUpdateProperties, err = 
discosvc.UpdateInstanceProperties(getContext(), &pb.UpdateInstancePropsRequest{
                                        ServiceId:  serviceId,
                                        InstanceId: "",
                                        Properties: map[string]string{
@@ -771,7 +773,7 @@ var _ = Describe("'Instance' service", func() {
 
                                Expect(err).To(BeNil())
                                
Expect(respUpdateProperties.Response.GetCode()).To(Equal(pb.ErrInvalidParams))
-                               respUpdateProperties, err = 
instanceResource.UpdateInstanceProperties(getContext(), 
&pb.UpdateInstancePropsRequest{
+                               respUpdateProperties, err = 
discosvc.UpdateInstanceProperties(getContext(), &pb.UpdateInstancePropsRequest{
                                        ServiceId:  serviceId,
                                        InstanceId: "@",
                                        Properties: map[string]string{
@@ -781,7 +783,7 @@ var _ = Describe("'Instance' service", func() {
 
                                Expect(err).To(BeNil())
                                
Expect(respUpdateProperties.Response.GetCode()).To(Equal(pb.ErrInvalidParams))
-                               respUpdateProperties, err = 
instanceResource.UpdateInstanceProperties(getContext(), 
&pb.UpdateInstancePropsRequest{
+                               respUpdateProperties, err = 
discosvc.UpdateInstanceProperties(getContext(), &pb.UpdateInstancePropsRequest{
                                        ServiceId:  serviceId,
                                        InstanceId: TOO_LONG_SERVICEID,
                                        Properties: map[string]string{
@@ -793,7 +795,7 @@ var _ = Describe("'Instance' service", func() {
                                
Expect(respUpdateProperties.Response.GetCode()).To(Equal(pb.ErrInvalidParams))
 
                                By("remove the properties")
-                               respUpdateProperties, err = 
instanceResource.UpdateInstanceProperties(getContext(), 
&pb.UpdateInstancePropsRequest{
+                               respUpdateProperties, err = 
discosvc.UpdateInstanceProperties(getContext(), &pb.UpdateInstancePropsRequest{
                                        ServiceId:  serviceId,
                                        InstanceId: instanceId,
                                })
@@ -801,7 +803,7 @@ var _ = Describe("'Instance' service", func() {
                                
Expect(respUpdateProperties.Response.GetCode()).To(Equal(pb.ResponseSuccess))
 
                                By("service does not exist")
-                               respUpdateProperties, err = 
instanceResource.UpdateInstanceProperties(getContext(), 
&pb.UpdateInstancePropsRequest{
+                               respUpdateProperties, err = 
discosvc.UpdateInstanceProperties(getContext(), &pb.UpdateInstancePropsRequest{
                                        ServiceId:  "notexistservice",
                                        InstanceId: instanceId,
                                        Properties: map[string]string{
@@ -959,7 +961,7 @@ var _ = Describe("'Instance' service", func() {
                        
Expect(respCreate.Response.GetCode()).To(Equal(pb.ResponseSuccess))
                        serviceId9 = respCreate.ServiceId
 
-                       resp, err := instanceResource.Register(getContext(), 
&pb.RegisterInstanceRequest{
+                       resp, err := discosvc.RegisterInstance(getContext(), 
&pb.RegisterInstanceRequest{
                                Instance: &pb.MicroServiceInstance{
                                        ServiceId: serviceId1,
                                        HostName:  "UT-HOST",
@@ -973,7 +975,7 @@ var _ = Describe("'Instance' service", func() {
                        
Expect(resp.Response.GetCode()).To(Equal(pb.ResponseSuccess))
                        instanceId1 = resp.InstanceId
 
-                       resp, err = instanceResource.Register(getContext(), 
&pb.RegisterInstanceRequest{
+                       resp, err = discosvc.RegisterInstance(getContext(), 
&pb.RegisterInstanceRequest{
                                Instance: &pb.MicroServiceInstance{
                                        ServiceId: serviceId2,
                                        HostName:  "UT-HOST",
@@ -987,7 +989,7 @@ var _ = Describe("'Instance' service", func() {
                        
Expect(resp.Response.GetCode()).To(Equal(pb.ResponseSuccess))
                        instanceId2 = resp.InstanceId
 
-                       resp, err = instanceResource.Register(getContext(), 
&pb.RegisterInstanceRequest{
+                       resp, err = discosvc.RegisterInstance(getContext(), 
&pb.RegisterInstanceRequest{
                                Instance: &pb.MicroServiceInstance{
                                        ServiceId: serviceId4,
                                        HostName:  "UT-HOST",
@@ -1001,7 +1003,7 @@ var _ = Describe("'Instance' service", func() {
                        
Expect(resp.Response.GetCode()).To(Equal(pb.ResponseSuccess))
                        instanceId4 = resp.InstanceId
 
-                       resp, err = instanceResource.Register(getContext(), 
&pb.RegisterInstanceRequest{
+                       resp, err = discosvc.RegisterInstance(getContext(), 
&pb.RegisterInstanceRequest{
                                Instance: &pb.MicroServiceInstance{
                                        ServiceId: serviceId5,
                                        HostName:  "UT-HOST",
@@ -1015,7 +1017,7 @@ var _ = Describe("'Instance' service", func() {
                        
Expect(resp.Response.GetCode()).To(Equal(pb.ResponseSuccess))
                        instanceId5 = resp.InstanceId
 
-                       resp, err = instanceResource.Register(getContext(), 
&pb.RegisterInstanceRequest{
+                       resp, err = discosvc.RegisterInstance(getContext(), 
&pb.RegisterInstanceRequest{
                                Instance: &pb.MicroServiceInstance{
                                        ServiceId: serviceId8,
                                        HostName:  "UT-HOST",
@@ -1029,7 +1031,7 @@ var _ = Describe("'Instance' service", func() {
                        
Expect(resp.Response.GetCode()).To(Equal(pb.ResponseSuccess))
                        instanceId8 = resp.InstanceId
 
-                       resp, err = instanceResource.Register(getContext(), 
&pb.RegisterInstanceRequest{
+                       resp, err = discosvc.RegisterInstance(getContext(), 
&pb.RegisterInstanceRequest{
                                Instance: &pb.MicroServiceInstance{
                                        ServiceId: serviceId9,
                                        HostName:  "UT-HOST",
@@ -1047,7 +1049,7 @@ var _ = Describe("'Instance' service", func() {
                Context("when query invalid parameters", func() {
                        It("should be failed", func() {
                                By("invalid appId")
-                               respFind, err := 
instanceResource.Find(getContext(), &pb.FindInstancesRequest{
+                               respFind, err := 
discosvc.FindInstances(getContext(), &pb.FindInstancesRequest{
                                        ConsumerServiceId: serviceId1,
                                        AppId:             TOO_LONG_APPID,
                                        ServiceName:       
"query_instance_service",
@@ -1055,7 +1057,7 @@ var _ = Describe("'Instance' service", func() {
                                })
                                Expect(err).To(BeNil())
                                
Expect(respFind.Response.GetCode()).To(Equal(pb.ErrInvalidParams))
-                               respFind, err = 
instanceResource.Find(getContext(), &pb.FindInstancesRequest{
+                               respFind, err = 
discosvc.FindInstances(getContext(), &pb.FindInstancesRequest{
                                        ConsumerServiceId: serviceId1,
                                        AppId:             "",
                                        ServiceName:       
"query_instance_service",
@@ -1063,7 +1065,7 @@ var _ = Describe("'Instance' service", func() {
                                })
                                Expect(err).To(BeNil())
                                
Expect(respFind.Response.GetCode()).To(Equal(pb.ErrInvalidParams))
-                               respFind, err = 
instanceResource.Find(getContext(), &pb.FindInstancesRequest{
+                               respFind, err = 
discosvc.FindInstances(getContext(), &pb.FindInstancesRequest{
                                        ConsumerServiceId: serviceId1,
                                        AppId:             " ",
                                        ServiceName:       
"query_instance_service",
@@ -1073,7 +1075,7 @@ var _ = Describe("'Instance' service", func() {
                                
Expect(respFind.Response.GetCode()).To(Equal(pb.ErrInvalidParams))
 
                                By("invalid serviceName")
-                               respFind, err = 
instanceResource.Find(getContext(), &pb.FindInstancesRequest{
+                               respFind, err = 
discosvc.FindInstances(getContext(), &pb.FindInstancesRequest{
                                        ConsumerServiceId: serviceId1,
                                        AppId:             "query_instance",
                                        ServiceName:       TOO_LONG_EXISTENCE,
@@ -1081,7 +1083,7 @@ var _ = Describe("'Instance' service", func() {
                                })
                                Expect(err).To(BeNil())
                                
Expect(respFind.Response.GetCode()).To(Equal(pb.ErrInvalidParams))
-                               respFind, err = 
instanceResource.Find(getContext(), &pb.FindInstancesRequest{
+                               respFind, err = 
discosvc.FindInstances(getContext(), &pb.FindInstancesRequest{
                                        ConsumerServiceId: serviceId1,
                                        AppId:             "query_instance",
                                        ServiceName:       "",
@@ -1089,7 +1091,7 @@ var _ = Describe("'Instance' service", func() {
                                })
                                Expect(err).To(BeNil())
                                
Expect(respFind.Response.GetCode()).To(Equal(pb.ErrInvalidParams))
-                               respFind, err = 
instanceResource.Find(getContext(), &pb.FindInstancesRequest{
+                               respFind, err = 
discosvc.FindInstances(getContext(), &pb.FindInstancesRequest{
                                        ConsumerServiceId: serviceId1,
                                        AppId:             "query_instance",
                                        ServiceName:       " ",
@@ -1099,7 +1101,7 @@ var _ = Describe("'Instance' service", func() {
                                
Expect(respFind.Response.GetCode()).To(Equal(pb.ErrInvalidParams))
 
                                By("invalid version")
-                               respFind, err = 
instanceResource.Find(getContext(), &pb.FindInstancesRequest{
+                               respFind, err = 
discosvc.FindInstances(getContext(), &pb.FindInstancesRequest{
                                        ConsumerServiceId: serviceId1,
                                        AppId:             "query_instance",
                                        ServiceName:       
"query_instance_service",
@@ -1107,7 +1109,7 @@ var _ = Describe("'Instance' service", func() {
                                })
                                Expect(err).To(BeNil())
                                
Expect(respFind.Response.GetCode()).To(Equal(pb.ErrInvalidParams))
-                               respFind, err = 
instanceResource.Find(getContext(), &pb.FindInstancesRequest{
+                               respFind, err = 
discosvc.FindInstances(getContext(), &pb.FindInstancesRequest{
                                        ConsumerServiceId: serviceId1,
                                        AppId:             "query_instance",
                                        ServiceName:       
"query_instance_service",
@@ -1115,7 +1117,7 @@ var _ = Describe("'Instance' service", func() {
                                })
                                Expect(err).To(BeNil())
                                
Expect(respFind.Response.GetCode()).To(Equal(pb.ErrInvalidParams))
-                               respFind, err = 
instanceResource.Find(getContext(), &pb.FindInstancesRequest{
+                               respFind, err = 
discosvc.FindInstances(getContext(), &pb.FindInstancesRequest{
                                        ConsumerServiceId: serviceId1,
                                        AppId:             "query_instance",
                                        ServiceName:       
"query_instance_service",
@@ -1123,7 +1125,7 @@ var _ = Describe("'Instance' service", func() {
                                })
                                Expect(err).To(BeNil())
                                
Expect(respFind.Response.GetCode()).To(Equal(pb.ErrInvalidParams))
-                               respFind, err = 
instanceResource.Find(getContext(), &pb.FindInstancesRequest{
+                               respFind, err = 
discosvc.FindInstances(getContext(), &pb.FindInstancesRequest{
                                        ConsumerServiceId: serviceId1,
                                        AppId:             "query_instance",
                                        ServiceName:       
"query_instance_service",
@@ -1133,7 +1135,7 @@ var _ = Describe("'Instance' service", func() {
                                
Expect(respFind.Response.GetCode()).To(Equal(pb.ErrInvalidParams))
 
                                By("consumerId is empty")
-                               respFind, err = 
instanceResource.Find(getContext(), &pb.FindInstancesRequest{
+                               respFind, err = 
discosvc.FindInstances(getContext(), &pb.FindInstancesRequest{
                                        ConsumerServiceId: "",
                                        AppId:             "query_instance",
                                        ServiceName:       
"query_instance_service",
@@ -1143,7 +1145,7 @@ var _ = Describe("'Instance' service", func() {
                                
Expect(respFind.Response.GetCode()).To(Equal(pb.ResponseSuccess))
 
                                By("provider does not exist")
-                               respFind, err = 
instanceResource.Find(getContext(), &pb.FindInstancesRequest{
+                               respFind, err = 
discosvc.FindInstances(getContext(), &pb.FindInstancesRequest{
                                        ConsumerServiceId: serviceId1,
                                        AppId:             "query_instance",
                                        ServiceName:       "noneservice",
@@ -1153,7 +1155,7 @@ var _ = Describe("'Instance' service", func() {
                                
Expect(respFind.Response.GetCode()).To(Equal(pb.ErrServiceNotExists))
 
                                By("provider does not contain 3.0.0+ versions")
-                               respFind, err = 
instanceResource.Find(getContext(), &pb.FindInstancesRequest{
+                               respFind, err = 
discosvc.FindInstances(getContext(), &pb.FindInstancesRequest{
                                        ConsumerServiceId: serviceId1,
                                        AppId:             "query_instance",
                                        ServiceName:       
"query_instance_service",
@@ -1164,7 +1166,7 @@ var _ = Describe("'Instance' service", func() {
                                Expect(len(respFind.Instances)).To(Equal(0))
 
                                By("provider does not contain 2.0.0-2.0.1 
versions")
-                               respFind, err = 
instanceResource.Find(getContext(), &pb.FindInstancesRequest{
+                               respFind, err = 
discosvc.FindInstances(getContext(), &pb.FindInstancesRequest{
                                        ConsumerServiceId: serviceId1,
                                        AppId:             "query_instance",
                                        ServiceName:       
"query_instance_service",
@@ -1175,7 +1177,7 @@ var _ = Describe("'Instance' service", func() {
                                Expect(len(respFind.Instances)).To(Equal(0))
 
                                By("provider does not contain 2.0.0 version")
-                               respFind, err = 
instanceResource.Find(getContext(), &pb.FindInstancesRequest{
+                               respFind, err = 
discosvc.FindInstances(getContext(), &pb.FindInstancesRequest{
                                        ConsumerServiceId: serviceId1,
                                        AppId:             "query_instance",
                                        ServiceName:       
"query_instance_service",
@@ -1185,7 +1187,7 @@ var _ = Describe("'Instance' service", func() {
                                
Expect(respFind.Response.GetCode()).To(Equal(pb.ErrServiceNotExists))
 
                                By("consumer does not exist")
-                               respFind, err = 
instanceResource.Find(getContext(), &pb.FindInstancesRequest{
+                               respFind, err = 
discosvc.FindInstances(getContext(), &pb.FindInstancesRequest{
                                        ConsumerServiceId: "notExistServiceId",
                                        AppId:             "query_instance",
                                        ServiceName:       
"query_instance_service",
@@ -1199,27 +1201,27 @@ var _ = Describe("'Instance' service", func() {
                Context("when batch query invalid parameters", func() {
                        It("should be failed", func() {
                                By("invalid services")
-                               respFind, err := 
instanceResource.BatchFind(getContext(), &pb.BatchFindInstancesRequest{
+                               respFind, err := 
discosvc.BatchFindInstances(getContext(), &pb.BatchFindInstancesRequest{
                                        ConsumerServiceId: serviceId1,
                                        Services:          nil,
                                        Instances:         nil,
                                })
                                Expect(err).To(BeNil())
                                
Expect(respFind.Response.GetCode()).To(Equal(pb.ErrInvalidParams))
-                               respFind, err = 
instanceResource.BatchFind(getContext(), &pb.BatchFindInstancesRequest{
+                               respFind, err = 
discosvc.BatchFindInstances(getContext(), &pb.BatchFindInstancesRequest{
                                        ConsumerServiceId: serviceId1,
                                        Services:          []*pb.FindService{},
                                        Instances:         []*pb.FindInstance{},
                                })
                                Expect(err).To(BeNil())
                                
Expect(respFind.Response.GetCode()).To(Equal(pb.ErrInvalidParams))
-                               respFind, err = 
instanceResource.BatchFind(getContext(), &pb.BatchFindInstancesRequest{
+                               respFind, err = 
discosvc.BatchFindInstances(getContext(), &pb.BatchFindInstancesRequest{
                                        ConsumerServiceId: serviceId1,
                                        Services:          
[]*pb.FindService{{}},
                                })
                                Expect(err).To(BeNil())
                                
Expect(respFind.Response.GetCode()).To(Equal(pb.ErrInvalidParams))
-                               respFind, err = 
instanceResource.BatchFind(getContext(), &pb.BatchFindInstancesRequest{
+                               respFind, err = 
discosvc.BatchFindInstances(getContext(), &pb.BatchFindInstancesRequest{
                                        ConsumerServiceId: serviceId1,
                                        Instances:         
[]*pb.FindInstance{{}},
                                })
@@ -1227,7 +1229,7 @@ var _ = Describe("'Instance' service", func() {
                                
Expect(respFind.Response.GetCode()).To(Equal(pb.ErrInvalidParams))
 
                                By("invalid appId")
-                               respFind, err = 
instanceResource.BatchFind(getContext(), &pb.BatchFindInstancesRequest{
+                               respFind, err = 
discosvc.BatchFindInstances(getContext(), &pb.BatchFindInstancesRequest{
                                        ConsumerServiceId: serviceId1,
                                        Services: []*pb.FindService{
                                                {
@@ -1241,7 +1243,7 @@ var _ = Describe("'Instance' service", func() {
                                })
                                Expect(err).To(BeNil())
                                
Expect(respFind.Response.GetCode()).To(Equal(pb.ErrInvalidParams))
-                               respFind, err = 
instanceResource.BatchFind(getContext(), &pb.BatchFindInstancesRequest{
+                               respFind, err = 
discosvc.BatchFindInstances(getContext(), &pb.BatchFindInstancesRequest{
                                        ConsumerServiceId: serviceId1,
                                        Services: []*pb.FindService{
                                                {
@@ -1255,7 +1257,7 @@ var _ = Describe("'Instance' service", func() {
                                })
                                Expect(err).To(BeNil())
                                
Expect(respFind.Response.GetCode()).To(Equal(pb.ErrInvalidParams))
-                               respFind, err = 
instanceResource.BatchFind(getContext(), &pb.BatchFindInstancesRequest{
+                               respFind, err = 
discosvc.BatchFindInstances(getContext(), &pb.BatchFindInstancesRequest{
                                        ConsumerServiceId: serviceId1,
                                        Services: []*pb.FindService{
                                                {
@@ -1271,7 +1273,7 @@ var _ = Describe("'Instance' service", func() {
                                
Expect(respFind.Response.GetCode()).To(Equal(pb.ErrInvalidParams))
 
                                By("invalid serviceName")
-                               respFind, err = 
instanceResource.BatchFind(getContext(), &pb.BatchFindInstancesRequest{
+                               respFind, err = 
discosvc.BatchFindInstances(getContext(), &pb.BatchFindInstancesRequest{
                                        ConsumerServiceId: serviceId1,
                                        Services: []*pb.FindService{
                                                {
@@ -1285,7 +1287,7 @@ var _ = Describe("'Instance' service", func() {
                                })
                                Expect(err).To(BeNil())
                                
Expect(respFind.Response.GetCode()).To(Equal(pb.ErrInvalidParams))
-                               respFind, err = 
instanceResource.BatchFind(getContext(), &pb.BatchFindInstancesRequest{
+                               respFind, err = 
discosvc.BatchFindInstances(getContext(), &pb.BatchFindInstancesRequest{
                                        ConsumerServiceId: serviceId1,
                                        Services: []*pb.FindService{
                                                {
@@ -1299,7 +1301,7 @@ var _ = Describe("'Instance' service", func() {
                                })
                                Expect(err).To(BeNil())
                                
Expect(respFind.Response.GetCode()).To(Equal(pb.ErrInvalidParams))
-                               respFind, err = 
instanceResource.BatchFind(getContext(), &pb.BatchFindInstancesRequest{
+                               respFind, err = 
discosvc.BatchFindInstances(getContext(), &pb.BatchFindInstancesRequest{
                                        ConsumerServiceId: serviceId1,
                                        Services: []*pb.FindService{
                                                {
@@ -1315,7 +1317,7 @@ var _ = Describe("'Instance' service", func() {
                                
Expect(respFind.Response.GetCode()).To(Equal(pb.ErrInvalidParams))
 
                                By("invalid version")
-                               respFind, err = 
instanceResource.BatchFind(getContext(), &pb.BatchFindInstancesRequest{
+                               respFind, err = 
discosvc.BatchFindInstances(getContext(), &pb.BatchFindInstancesRequest{
                                        ConsumerServiceId: serviceId1,
                                        Services: []*pb.FindService{
                                                {
@@ -1329,7 +1331,7 @@ var _ = Describe("'Instance' service", func() {
                                })
                                Expect(err).To(BeNil())
                                
Expect(respFind.Response.GetCode()).To(Equal(pb.ErrInvalidParams))
-                               respFind, err = 
instanceResource.BatchFind(getContext(), &pb.BatchFindInstancesRequest{
+                               respFind, err = 
discosvc.BatchFindInstances(getContext(), &pb.BatchFindInstancesRequest{
                                        ConsumerServiceId: serviceId1,
                                        Services: []*pb.FindService{
                                                {
@@ -1343,7 +1345,7 @@ var _ = Describe("'Instance' service", func() {
                                })
                                Expect(err).To(BeNil())
                                
Expect(respFind.Response.GetCode()).To(Equal(pb.ErrInvalidParams))
-                               respFind, err = 
instanceResource.BatchFind(getContext(), &pb.BatchFindInstancesRequest{
+                               respFind, err = 
discosvc.BatchFindInstances(getContext(), &pb.BatchFindInstancesRequest{
                                        ConsumerServiceId: serviceId1,
                                        Services: []*pb.FindService{
                                                {
@@ -1357,7 +1359,7 @@ var _ = Describe("'Instance' service", func() {
                                })
                                Expect(err).To(BeNil())
                                
Expect(respFind.Response.GetCode()).To(Equal(pb.ErrInvalidParams))
-                               respFind, err = 
instanceResource.BatchFind(getContext(), &pb.BatchFindInstancesRequest{
+                               respFind, err = 
discosvc.BatchFindInstances(getContext(), &pb.BatchFindInstancesRequest{
                                        ConsumerServiceId: serviceId1,
                                        Services: []*pb.FindService{
                                                {
@@ -1373,7 +1375,7 @@ var _ = Describe("'Instance' service", func() {
                                
Expect(respFind.Response.GetCode()).To(Equal(pb.ErrInvalidParams))
 
                                By("invalid instance")
-                               respFind, err = 
instanceResource.BatchFind(getContext(), &pb.BatchFindInstancesRequest{
+                               respFind, err = 
discosvc.BatchFindInstances(getContext(), &pb.BatchFindInstancesRequest{
                                        ConsumerServiceId: serviceId1,
                                        Instances: []*pb.FindInstance{
                                                {
@@ -1385,7 +1387,7 @@ var _ = Describe("'Instance' service", func() {
                                })
                                Expect(err).To(BeNil())
                                
Expect(respFind.Response.GetCode()).To(Equal(pb.ErrInvalidParams))
-                               respFind, err = 
instanceResource.BatchFind(getContext(), &pb.BatchFindInstancesRequest{
+                               respFind, err = 
discosvc.BatchFindInstances(getContext(), &pb.BatchFindInstancesRequest{
                                        ConsumerServiceId: serviceId1,
                                        Instances: []*pb.FindInstance{
                                                {
@@ -1399,7 +1401,7 @@ var _ = Describe("'Instance' service", func() {
                                
Expect(respFind.Response.GetCode()).To(Equal(pb.ErrInvalidParams))
 
                                By("consumerId is empty")
-                               respFind, err = 
instanceResource.BatchFind(getContext(), &pb.BatchFindInstancesRequest{
+                               respFind, err = 
discosvc.BatchFindInstances(getContext(), &pb.BatchFindInstancesRequest{
                                        ConsumerServiceId: serviceId1,
                                        Services: []*pb.FindService{
                                                {
@@ -1415,7 +1417,7 @@ var _ = Describe("'Instance' service", func() {
                                
Expect(respFind.Response.GetCode()).To(Equal(pb.ResponseSuccess))
 
                                By("provider does not exist")
-                               respFind, err = 
instanceResource.BatchFind(getContext(), &pb.BatchFindInstancesRequest{
+                               respFind, err = 
discosvc.BatchFindInstances(getContext(), &pb.BatchFindInstancesRequest{
                                        ConsumerServiceId: serviceId1,
                                        Services: []*pb.FindService{
                                                {
@@ -1431,7 +1433,7 @@ var _ = Describe("'Instance' service", func() {
                                
Expect(respFind.Response.GetCode()).To(Equal(pb.ResponseSuccess))
                                
Expect(respFind.Services.Failed[0].Error.Code).To(Equal(pb.ErrServiceNotExists))
                                
Expect(respFind.Services.Failed[0].Indexes[0]).To(Equal(int64(0)))
-                               respFind, err = 
instanceResource.BatchFind(getContext(), &pb.BatchFindInstancesRequest{
+                               respFind, err = 
discosvc.BatchFindInstances(getContext(), &pb.BatchFindInstancesRequest{
                                        ConsumerServiceId: serviceId1,
                                        Instances: []*pb.FindInstance{
                                                {
@@ -1448,7 +1450,7 @@ var _ = Describe("'Instance' service", func() {
                                
Expect(respFind.Instances.Failed[0].Indexes[0]).To(Equal(int64(0)))
 
                                By("provider does not contain 3.0.0+ versions")
-                               respFind, err = 
instanceResource.BatchFind(getContext(), &pb.BatchFindInstancesRequest{
+                               respFind, err = 
discosvc.BatchFindInstances(getContext(), &pb.BatchFindInstancesRequest{
                                        ConsumerServiceId: serviceId1,
                                        Services: []*pb.FindService{
                                                {
@@ -1467,7 +1469,7 @@ var _ = Describe("'Instance' service", func() {
                                
Expect(respFind.Services.Updated[0].Rev).ToNot(Equal(""))
 
                                By("consumer does not exist")
-                               respFind, err = 
instanceResource.BatchFind(getContext(), &pb.BatchFindInstancesRequest{
+                               respFind, err = 
discosvc.BatchFindInstances(getContext(), &pb.BatchFindInstancesRequest{
                                        ConsumerServiceId: "notExistServiceId",
                                        Services: []*pb.FindService{
                                                {
@@ -1489,7 +1491,7 @@ var _ = Describe("'Instance' service", func() {
                Context("when query instances", func() {
                        It("should be passed", func() {
                                By("find with version rule")
-                               respFind, err := 
instanceResource.Find(getContext(), &pb.FindInstancesRequest{
+                               respFind, err := 
discosvc.FindInstances(getContext(), &pb.FindInstancesRequest{
                                        ConsumerServiceId: serviceId1,
                                        AppId:             "query_instance",
                                        ServiceName:       
"query_instance_service",
@@ -1499,7 +1501,7 @@ var _ = Describe("'Instance' service", func() {
                                
Expect(respFind.Response.GetCode()).To(Equal(pb.ResponseSuccess))
                                
Expect(respFind.Instances[0].InstanceId).To(Equal(instanceId2))
 
-                               respFind, err = 
instanceResource.Find(getContext(), &pb.FindInstancesRequest{
+                               respFind, err = 
discosvc.FindInstances(getContext(), &pb.FindInstancesRequest{
                                        ConsumerServiceId: serviceId1,
                                        AppId:             "query_instance",
                                        ServiceName:       
"query_instance_service",
@@ -1510,7 +1512,7 @@ var _ = Describe("'Instance' service", func() {
                                
Expect(respFind.Response.GetCode()).To(Equal(pb.ResponseSuccess))
                                
Expect(respFind.Instances[0].InstanceId).To(Equal(instanceId2))
 
-                               respFind, err = 
instanceResource.Find(getContext(), &pb.FindInstancesRequest{
+                               respFind, err = 
discosvc.FindInstances(getContext(), &pb.FindInstancesRequest{
                                        ConsumerServiceId: serviceId1,
                                        AppId:             "query_instance",
                                        ServiceName:       
"query_instance_service",
@@ -1520,7 +1522,7 @@ var _ = Describe("'Instance' service", func() {
                                
Expect(respFind.Response.GetCode()).To(Equal(pb.ResponseSuccess))
                                
Expect(respFind.Instances[0].InstanceId).To(Equal(instanceId1))
 
-                               respFind, err = 
instanceResource.Find(getContext(), &pb.FindInstancesRequest{
+                               respFind, err = 
discosvc.FindInstances(getContext(), &pb.FindInstancesRequest{
                                        ConsumerServiceId: serviceId1,
                                        AppId:             "query_instance",
                                        ServiceName:       
"query_instance_service",
@@ -1530,7 +1532,7 @@ var _ = Describe("'Instance' service", func() {
                                
Expect(respFind.Response.GetCode()).To(Equal(pb.ResponseSuccess))
                                
Expect(respFind.Instances[0].InstanceId).To(Equal(instanceId1))
 
-                               respFind, err = 
instanceResource.Find(getContext(), &pb.FindInstancesRequest{
+                               respFind, err = 
discosvc.FindInstances(getContext(), &pb.FindInstancesRequest{
                                        ConsumerServiceId: serviceId1,
                                        AppId:             "query_instance",
                                        ServiceName:       
"query_instance_service",
@@ -1540,7 +1542,7 @@ var _ = Describe("'Instance' service", func() {
                                
Expect(respFind.Response.GetCode()).To(Equal(pb.ErrServiceNotExists))
 
                                By("find with env")
-                               respFind, err = 
instanceResource.Find(getContext(), &pb.FindInstancesRequest{
+                               respFind, err = 
discosvc.FindInstances(getContext(), &pb.FindInstancesRequest{
                                        ConsumerServiceId: serviceId4,
                                        AppId:             "query_instance",
                                        ServiceName:       
"query_instance_diff_env_service",
@@ -1551,7 +1553,7 @@ var _ = Describe("'Instance' service", func() {
                                Expect(len(respFind.Instances)).To(Equal(1))
                                
Expect(respFind.Instances[0].InstanceId).To(Equal(instanceId4))
 
-                               respFind, err = 
instanceResource.Find(getContext(), &pb.FindInstancesRequest{
+                               respFind, err = 
discosvc.FindInstances(getContext(), &pb.FindInstancesRequest{
                                        Environment: pb.ENV_PROD,
                                        AppId:       "query_instance",
                                        ServiceName: 
"query_instance_diff_env_service",
@@ -1564,7 +1566,7 @@ var _ = Describe("'Instance' service", func() {
 
                                By("find with rev")
                                ctx := util.SetContext(getContext(), 
util.CtxNocache, "")
-                               respFind, err = instanceResource.Find(ctx, 
&pb.FindInstancesRequest{
+                               respFind, err = discosvc.FindInstances(ctx, 
&pb.FindInstancesRequest{
                                        ConsumerServiceId: serviceId8,
                                        AppId:             "query_instance",
                                        ServiceName:       
"query_instance_with_rev",
@@ -1577,7 +1579,7 @@ var _ = Describe("'Instance' service", func() {
                                Expect(len(rev)).NotTo(Equal(0))
 
                                util.WithRequestRev(ctx, "x")
-                               respFind, err = instanceResource.Find(ctx, 
&pb.FindInstancesRequest{
+                               respFind, err = discosvc.FindInstances(ctx, 
&pb.FindInstancesRequest{
                                        ConsumerServiceId: serviceId8,
                                        AppId:             "query_instance",
                                        ServiceName:       
"query_instance_with_rev",
@@ -1589,7 +1591,7 @@ var _ = Describe("'Instance' service", func() {
                                
Expect(ctx.Value(util.CtxResponseRevision)).To(Equal(rev))
 
                                util.WithRequestRev(ctx, rev)
-                               respFind, err = instanceResource.Find(ctx, 
&pb.FindInstancesRequest{
+                               respFind, err = discosvc.FindInstances(ctx, 
&pb.FindInstancesRequest{
                                        ConsumerServiceId: serviceId8,
                                        AppId:             "query_instance",
                                        ServiceName:       
"query_instance_with_rev",
@@ -1601,7 +1603,7 @@ var _ = Describe("'Instance' service", func() {
                                
Expect(ctx.Value(util.CtxResponseRevision)).To(Equal(rev))
 
                                By("find should return 200 even if consumer is 
diff apps")
-                               respFind, err = 
instanceResource.Find(getContext(), &pb.FindInstancesRequest{
+                               respFind, err = 
discosvc.FindInstances(getContext(), &pb.FindInstancesRequest{
                                        ConsumerServiceId: serviceId3,
                                        AppId:             "query_instance",
                                        ServiceName:       
"query_instance_service",
@@ -1612,7 +1614,7 @@ var _ = Describe("'Instance' service", func() {
                                Expect(len(respFind.Instances)).To(Equal(0))
 
                                By("provider tag does not exist")
-                               respFind, err = 
instanceResource.Find(getContext(), &pb.FindInstancesRequest{
+                               respFind, err = 
discosvc.FindInstances(getContext(), &pb.FindInstancesRequest{
                                        ConsumerServiceId: serviceId1,
                                        AppId:             "query_instance",
                                        ServiceName:       
"query_instance_service",
@@ -1628,7 +1630,7 @@ var _ = Describe("'Instance' service", func() {
                                core.RegisterGlobalServices()
                                core.Service.Environment = pb.ENV_PROD
 
-                               respFind, err = instanceResource.Find(
+                               respFind, err = discosvc.FindInstances(
                                        util.SetTargetDomainProject(
                                                
util.SetDomainProject(util.CloneContext(getContext()), "user", "user"),
                                                "default", "default"),
@@ -1643,7 +1645,7 @@ var _ = Describe("'Instance' service", func() {
                                Expect(len(respFind.Instances)).To(Equal(1))
                                
Expect(respFind.Instances[0].InstanceId).To(Equal(instanceId5))
 
-                               respFind, err = 
instanceResource.Find(getContext(), &pb.FindInstancesRequest{
+                               respFind, err = 
discosvc.FindInstances(getContext(), &pb.FindInstancesRequest{
                                        ConsumerServiceId: serviceId7,
                                        AppId:             "default",
                                        ServiceName:       
"query_instance_shared_provider",
@@ -1672,7 +1674,7 @@ var _ = Describe("'Instance' service", func() {
                Context("when batch query instances", func() {
                        It("should be passed", func() {
                                By("find with version rule")
-                               respFind, err := 
instanceResource.BatchFind(getContext(), &pb.BatchFindInstancesRequest{
+                               respFind, err := 
discosvc.BatchFindInstances(getContext(), &pb.BatchFindInstancesRequest{
                                        ConsumerServiceId: serviceId1,
                                        Services: []*pb.FindService{
                                                {
@@ -1708,7 +1710,7 @@ var _ = Describe("'Instance' service", func() {
                                
Expect(respFind.Services.Failed[0].Error.Code).To(Equal(pb.ErrServiceNotExists))
 
                                By("find with env")
-                               respFind, err = 
instanceResource.BatchFind(getContext(), &pb.BatchFindInstancesRequest{
+                               respFind, err = 
discosvc.BatchFindInstances(getContext(), &pb.BatchFindInstancesRequest{
                                        ConsumerServiceId: serviceId4,
                                        Services: []*pb.FindService{
                                                {
@@ -1725,7 +1727,7 @@ var _ = Describe("'Instance' service", func() {
                                
Expect(len(respFind.Services.Updated[0].Instances)).To(Equal(1))
                                
Expect(respFind.Services.Updated[0].Instances[0].InstanceId).To(Equal(instanceId4))
 
-                               respFind, err = 
instanceResource.BatchFind(getContext(), &pb.BatchFindInstancesRequest{
+                               respFind, err = 
discosvc.BatchFindInstances(getContext(), &pb.BatchFindInstancesRequest{
                                        Services: []*pb.FindService{
                                                {
                                                        Service: 
&pb.MicroServiceKey{
@@ -1744,7 +1746,7 @@ var _ = Describe("'Instance' service", func() {
 
                                By("find with rev")
                                ctx := util.SetContext(getContext(), 
util.CtxNocache, "")
-                               respFind, err = instanceResource.BatchFind(ctx, 
&pb.BatchFindInstancesRequest{
+                               respFind, err = 
discosvc.BatchFindInstances(ctx, &pb.BatchFindInstancesRequest{
                                        ConsumerServiceId: serviceId8,
                                        Services: []*pb.FindService{
                                                {
@@ -1792,7 +1794,7 @@ var _ = Describe("'Instance' service", func() {
                                
Expect(respFind.Instances.Updated[1].Instances[0].InstanceId).To(Equal(instanceId8))
                                Expect(len(instanceRev)).NotTo(Equal(0))
 
-                               respFind, err = instanceResource.BatchFind(ctx, 
&pb.BatchFindInstancesRequest{
+                               respFind, err = 
discosvc.BatchFindInstances(ctx, &pb.BatchFindInstancesRequest{
                                        ConsumerServiceId: serviceId8,
                                        Services: []*pb.FindService{
                                                {
@@ -1821,7 +1823,7 @@ var _ = Describe("'Instance' service", func() {
                                
Expect(respFind.Instances.Updated[0].Instances[0].InstanceId).To(Equal(instanceId9))
                                
Expect(respFind.Instances.Updated[0].Rev).To(Equal(instanceRev))
 
-                               respFind, err = instanceResource.BatchFind(ctx, 
&pb.BatchFindInstancesRequest{
+                               respFind, err = 
discosvc.BatchFindInstances(ctx, &pb.BatchFindInstancesRequest{
                                        ConsumerServiceId: serviceId8,
                                        Services: []*pb.FindService{
                                                {
@@ -1849,7 +1851,7 @@ var _ = Describe("'Instance' service", func() {
                                
Expect(respFind.Instances.NotModified[0]).To(Equal(int64(0)))
 
                                By("find should return 200 even if consumer is 
diff apps")
-                               respFind, err = 
instanceResource.BatchFind(getContext(), &pb.BatchFindInstancesRequest{
+                               respFind, err = 
discosvc.BatchFindInstances(getContext(), &pb.BatchFindInstancesRequest{
                                        ConsumerServiceId: serviceId3,
                                        Services: []*pb.FindService{
                                                {
@@ -1870,7 +1872,7 @@ var _ = Describe("'Instance' service", func() {
                                core.RegisterGlobalServices()
                                core.Service.Environment = pb.ENV_PROD
 
-                               respFind, err = instanceResource.BatchFind(
+                               respFind, err = discosvc.BatchFindInstances(
                                        util.SetTargetDomainProject(
                                                
util.SetDomainProject(util.CloneContext(getContext()), "user", "user"),
                                                "default", "default"),
@@ -1891,7 +1893,7 @@ var _ = Describe("'Instance' service", func() {
                                
Expect(len(respFind.Services.Updated[0].Instances)).To(Equal(1))
                                
Expect(respFind.Services.Updated[0].Instances[0].InstanceId).To(Equal(instanceId5))
 
-                               respFind, err = 
instanceResource.BatchFind(getContext(), &pb.BatchFindInstancesRequest{
+                               respFind, err = 
discosvc.BatchFindInstances(getContext(), &pb.BatchFindInstancesRequest{
                                        ConsumerServiceId: serviceId7,
                                        Services: []*pb.FindService{
                                                {
@@ -1908,7 +1910,7 @@ var _ = Describe("'Instance' service", func() {
                                
Expect(len(respFind.Services.Updated[0].Instances)).To(Equal(1))
                                
Expect(respFind.Services.Updated[0].Instances[0].InstanceId).To(Equal(instanceId5))
 
-                               respFind, err = instanceResource.BatchFind(
+                               respFind, err = discosvc.BatchFindInstances(
                                        util.SetTargetDomainProject(
                                                
util.SetDomainProject(util.CloneContext(getContext()), "user", "user"),
                                                "default", "default"),
@@ -1927,7 +1929,7 @@ var _ = Describe("'Instance' service", func() {
                                
Expect(respFind.Response.GetCode()).To(Equal(pb.ResponseSuccess))
                                
Expect(respFind.Instances.Failed[0].Error.Code).To(Equal(pb.ErrServiceNotExists))
 
-                               respFind, err = 
instanceResource.BatchFind(getContext(), &pb.BatchFindInstancesRequest{
+                               respFind, err = 
discosvc.BatchFindInstances(getContext(), &pb.BatchFindInstancesRequest{
                                        ConsumerServiceId: serviceId7,
                                        Instances: []*pb.FindInstance{
                                                {
@@ -1951,7 +1953,7 @@ var _ = Describe("'Instance' service", func() {
                        It("should be failed", func() {
                                By("diff appId")
                                UTFunc := func(consumerId string, code int32) {
-                                       respFind, err := 
instanceResource.GetInstances(getContext(), &pb.GetInstancesRequest{
+                                       respFind, err := 
discosvc.GetInstances(getContext(), &pb.GetInstancesRequest{
                                                ConsumerServiceId: consumerId,
                                                ProviderServiceId: serviceId2,
                                        })
@@ -1964,7 +1966,7 @@ var _ = Describe("'Instance' service", func() {
                                UTFunc(serviceId1, pb.ResponseSuccess)
 
                                By("diff env")
-                               respFind, err := 
instanceResource.GetInstances(getContext(), &pb.GetInstancesRequest{
+                               respFind, err := 
discosvc.GetInstances(getContext(), &pb.GetInstancesRequest{
                                        ConsumerServiceId: serviceId4,
                                        ProviderServiceId: serviceId2,
                                })
@@ -2012,7 +2014,7 @@ var _ = Describe("'Instance' service", func() {
                        
Expect(respCreate.Response.GetCode()).To(Equal(pb.ResponseSuccess))
                        serviceId2 = respCreate.ServiceId
 
-                       resp, err := instanceResource.Register(getContext(), 
&pb.RegisterInstanceRequest{
+                       resp, err := discosvc.RegisterInstance(getContext(), 
&pb.RegisterInstanceRequest{
                                Instance: &pb.MicroServiceInstance{
                                        ServiceId: serviceId2,
                                        HostName:  "UT-HOST",
@@ -2042,7 +2044,7 @@ var _ = Describe("'Instance' service", func() {
                Context("when get one instance request is invalid", func() {
                        It("should be failed", func() {
                                By("find service itself")
-                               resp, err := 
instanceResource.GetOneInstance(getContext(), &pb.GetOneInstanceRequest{
+                               resp, err := 
discosvc.GetOneInstance(getContext(), &pb.GetOneInstanceRequest{
                                        ConsumerServiceId:  serviceId2,
                                        ProviderServiceId:  serviceId2,
                                        ProviderInstanceId: instanceId2,
@@ -2051,7 +2053,7 @@ var _ = Describe("'Instance' service", func() {
                                
Expect(resp.Response.GetCode()).To(Equal(pb.ResponseSuccess))
 
                                By("provider id is empty")
-                               resp, err = 
instanceResource.GetOneInstance(getContext(), &pb.GetOneInstanceRequest{
+                               resp, err = 
discosvc.GetOneInstance(getContext(), &pb.GetOneInstanceRequest{
                                        ConsumerServiceId:  serviceId1,
                                        ProviderServiceId:  "",
                                        ProviderInstanceId: instanceId2,
@@ -2060,7 +2062,7 @@ var _ = Describe("'Instance' service", func() {
                                
Expect(resp.Response.GetCode()).ToNot(Equal(pb.ResponseSuccess))
 
                                By("provider instance id is empty")
-                               resp, err = 
instanceResource.GetOneInstance(getContext(), &pb.GetOneInstanceRequest{
+                               resp, err = 
discosvc.GetOneInstance(getContext(), &pb.GetOneInstanceRequest{
                                        ConsumerServiceId:  serviceId1,
                                        ProviderServiceId:  serviceId2,
                                        ProviderInstanceId: "",
@@ -2069,7 +2071,7 @@ var _ = Describe("'Instance' service", func() {
                                
Expect(resp.Response.GetCode()).ToNot(Equal(pb.ResponseSuccess))
 
                                By("consumer id is empty")
-                               resp, err = 
instanceResource.GetOneInstance(getContext(), &pb.GetOneInstanceRequest{
+                               resp, err = 
discosvc.GetOneInstance(getContext(), &pb.GetOneInstanceRequest{
                                        ConsumerServiceId:  "",
                                        ProviderServiceId:  serviceId2,
                                        ProviderInstanceId: instanceId2,
@@ -2078,7 +2080,7 @@ var _ = Describe("'Instance' service", func() {
                                
Expect(resp.Response.GetCode()).To(Equal(pb.ResponseSuccess))
 
                                By("consumer does not exist")
-                               resp, err = 
instanceResource.GetOneInstance(getContext(), &pb.GetOneInstanceRequest{
+                               resp, err = 
discosvc.GetOneInstance(getContext(), &pb.GetOneInstanceRequest{
                                        ConsumerServiceId:  "not-exist-id",
                                        ProviderServiceId:  serviceId2,
                                        ProviderInstanceId: instanceId2,
@@ -2087,7 +2089,7 @@ var _ = Describe("'Instance' service", func() {
                                
Expect(resp.Response.GetCode()).ToNot(Equal(pb.ResponseSuccess))
 
                                By("provider tag does not exist")
-                               resp, err = 
instanceResource.GetOneInstance(getContext(), &pb.GetOneInstanceRequest{
+                               resp, err = 
discosvc.GetOneInstance(getContext(), &pb.GetOneInstanceRequest{
                                        ConsumerServiceId:  serviceId1,
                                        ProviderServiceId:  serviceId2,
                                        ProviderInstanceId: instanceId2,
@@ -2097,7 +2099,7 @@ var _ = Describe("'Instance' service", func() {
                                
Expect(resp.Response.GetCode()).To(Equal(pb.ErrInstanceNotExists))
 
                                By("provider tag exist")
-                               resp, err = 
instanceResource.GetOneInstance(getContext(),
+                               resp, err = 
discosvc.GetOneInstance(getContext(),
                                        &pb.GetOneInstanceRequest{
                                                ConsumerServiceId:  serviceId1,
                                                ProviderServiceId:  serviceId2,
@@ -2111,7 +2113,7 @@ var _ = Describe("'Instance' service", func() {
 
                Context("when get between diff apps", func() {
                        It("should be failed", func() {
-                               resp, err := 
instanceResource.GetOneInstance(getContext(), &pb.GetOneInstanceRequest{
+                               resp, err := 
discosvc.GetOneInstance(getContext(), &pb.GetOneInstanceRequest{
                                        ConsumerServiceId:  serviceId3,
                                        ProviderServiceId:  serviceId2,
                                        ProviderInstanceId: instanceId2,
@@ -2119,7 +2121,7 @@ var _ = Describe("'Instance' service", func() {
                                Expect(err).To(BeNil())
                                
Expect(resp.Response.GetCode()).To(Equal(pb.ErrInstanceNotExists))
 
-                               respAll, err := 
instanceResource.GetInstances(getContext(), &pb.GetInstancesRequest{
+                               respAll, err := 
discosvc.GetInstances(getContext(), &pb.GetInstancesRequest{
                                        ConsumerServiceId: serviceId3,
                                        ProviderServiceId: serviceId2,
                                })
@@ -2131,7 +2133,7 @@ var _ = Describe("'Instance' service", func() {
                Context("when get instances request is invalid", func() {
                        It("should be failed", func() {
                                By("consumer id is empty")
-                               resp, err := 
instanceResource.GetInstances(getContext(), &pb.GetInstancesRequest{
+                               resp, err := 
discosvc.GetInstances(getContext(), &pb.GetInstancesRequest{
                                        ConsumerServiceId: "",
                                        ProviderServiceId: serviceId2,
                                })
@@ -2139,7 +2141,7 @@ var _ = Describe("'Instance' service", func() {
                                
Expect(resp.Response.GetCode()).To(Equal(pb.ResponseSuccess))
 
                                By("consumer does not exist")
-                               resp, err = 
instanceResource.GetInstances(getContext(), &pb.GetInstancesRequest{
+                               resp, err = discosvc.GetInstances(getContext(), 
&pb.GetInstancesRequest{
                                        ConsumerServiceId: "noneservice",
                                        ProviderServiceId: serviceId2,
                                })
@@ -2147,7 +2149,7 @@ var _ = Describe("'Instance' service", func() {
                                
Expect(resp.Response.GetCode()).ToNot(Equal(pb.ResponseSuccess))
 
                                By("valid request")
-                               resp, err = 
instanceResource.GetInstances(getContext(), &pb.GetInstancesRequest{
+                               resp, err = discosvc.GetInstances(getContext(), 
&pb.GetInstancesRequest{
                                        ConsumerServiceId: serviceId1,
                                        ProviderServiceId: serviceId2,
                                })
@@ -2180,7 +2182,7 @@ var _ = Describe("'Instance' service", func() {
                        
Expect(respCreate.Response.GetCode()).To(Equal(pb.ResponseSuccess))
                        serviceId = respCreate.ServiceId
 
-                       resp, err := instanceResource.Register(getContext(), 
&pb.RegisterInstanceRequest{
+                       resp, err := discosvc.RegisterInstance(getContext(), 
&pb.RegisterInstanceRequest{
                                Instance: &pb.MicroServiceInstance{
                                        ServiceId: serviceId,
                                        HostName:  "UT-HOST",
@@ -2197,7 +2199,7 @@ var _ = Describe("'Instance' service", func() {
 
                Context("when request is valid", func() {
                        It("should be passed", func() {
-                               resp, err := 
instanceResource.Unregister(getContext(), &pb.UnregisterInstanceRequest{
+                               resp, err := 
discosvc.UnregisterInstance(getContext(), &pb.UnregisterInstanceRequest{
                                        ServiceId:  serviceId,
                                        InstanceId: instanceId,
                                })
@@ -2209,13 +2211,13 @@ var _ = Describe("'Instance' service", func() {
                Context("when request is invalid", func() {
                        It("should be failed", func() {
                                By("service id is invalid")
-                               resp, err := 
instanceResource.Unregister(getContext(), &pb.UnregisterInstanceRequest{
+                               resp, err := 
discosvc.UnregisterInstance(getContext(), &pb.UnregisterInstanceRequest{
                                        ServiceId:  "",
                                        InstanceId: instanceId,
                                })
                                Expect(err).To(BeNil())
                                
Expect(resp.Response.GetCode()).To(Equal(pb.ErrInvalidParams))
-                               resp, err = 
instanceResource.Unregister(getContext(), &pb.UnregisterInstanceRequest{
+                               resp, err = 
discosvc.UnregisterInstance(getContext(), &pb.UnregisterInstanceRequest{
                                        ServiceId:  TOO_LONG_SERVICEID,
                                        InstanceId: instanceId,
                                })
@@ -2223,7 +2225,7 @@ var _ = Describe("'Instance' service", func() {
                                
Expect(resp.Response.GetCode()).To(Equal(pb.ErrInvalidParams))
 
                                By("service does not exist")
-                               resp, err = 
instanceResource.Unregister(getContext(), &pb.UnregisterInstanceRequest{
+                               resp, err = 
discosvc.UnregisterInstance(getContext(), &pb.UnregisterInstanceRequest{
                                        ServiceId:  "not-exist-id",
                                        InstanceId: instanceId,
                                })
@@ -2231,19 +2233,19 @@ var _ = Describe("'Instance' service", func() {
                                
Expect(resp.Response.GetCode()).ToNot(Equal(pb.ResponseSuccess))
 
                                By("instance is invalid")
-                               resp, err = 
instanceResource.Unregister(getContext(), &pb.UnregisterInstanceRequest{
+                               resp, err = 
discosvc.UnregisterInstance(getContext(), &pb.UnregisterInstanceRequest{
                                        ServiceId:  serviceId,
                                        InstanceId: "",
                                })
                                Expect(err).To(BeNil())
                                
Expect(resp.Response.GetCode()).To(Equal(pb.ErrInvalidParams))
-                               resp, err = 
instanceResource.Unregister(getContext(), &pb.UnregisterInstanceRequest{
+                               resp, err = 
discosvc.UnregisterInstance(getContext(), &pb.UnregisterInstanceRequest{
                                        ServiceId:  serviceId,
                                        InstanceId: "@",
                                })
                                Expect(err).To(BeNil())
                                
Expect(resp.Response.GetCode()).To(Equal(pb.ErrInvalidParams))
-                               resp, err = 
instanceResource.Unregister(getContext(), &pb.UnregisterInstanceRequest{
+                               resp, err = 
discosvc.UnregisterInstance(getContext(), &pb.UnregisterInstanceRequest{
                                        ServiceId:  serviceId,
                                        InstanceId: TOO_LONG_SERVICEID,
                                })
@@ -2251,7 +2253,7 @@ var _ = Describe("'Instance' service", func() {
                                
Expect(resp.Response.GetCode()).To(Equal(pb.ErrInvalidParams))
 
                                By("instance does not exist")
-                               resp, err = 
instanceResource.Unregister(getContext(), &pb.UnregisterInstanceRequest{
+                               resp, err = 
discosvc.UnregisterInstance(getContext(), &pb.UnregisterInstanceRequest{
                                        ServiceId:  serviceId,
                                        InstanceId: "not-exist-id",
                                })
diff --git a/server/service/disco/metadata_dao.go 
b/server/service/disco/metadata_dao.go
new file mode 100644
index 0000000..1120209
--- /dev/null
+++ b/server/service/disco/metadata_dao.go
@@ -0,0 +1,12 @@
+package disco
+
+import (
+       "context"
+
+       "github.com/apache/servicecomb-service-center/datasource"
+       pb "github.com/go-chassis/cari/discovery"
+)
+
+func RegisterService(ctx context.Context, request *pb.CreateServiceRequest) 
(*pb.CreateServiceResponse, error) {
+       return datasource.GetMetadataManager().RegisterService(ctx, request)
+}
diff --git a/server/service/microservice.go 
b/server/service/disco/microservice.go
similarity index 96%
rename from server/service/microservice.go
rename to server/service/disco/microservice.go
index 1f2a40c..bcc9eae 100644
--- a/server/service/microservice.go
+++ b/server/service/disco/microservice.go
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package service
+package disco
 
 import (
        "context"
@@ -27,7 +27,6 @@ import (
        "github.com/apache/servicecomb-service-center/datasource"
        "github.com/apache/servicecomb-service-center/pkg/gopool"
        "github.com/apache/servicecomb-service-center/pkg/log"
-       "github.com/apache/servicecomb-service-center/pkg/proto"
        "github.com/apache/servicecomb-service-center/pkg/util"
        "github.com/apache/servicecomb-service-center/server/core"
        "github.com/apache/servicecomb-service-center/server/plugin/quota"
@@ -35,14 +34,8 @@ import (
 )
 
 type MicroServiceService struct {
-       instanceService proto.ServiceInstanceCtrlServerEx
 }
 
-const (
-       ExistTypeMicroservice = "microservice"
-       ExistTypeSchema       = "schema"
-)
-
 func (s *MicroServiceService) Create(ctx context.Context, in 
*pb.CreateServiceRequest) (*pb.CreateServiceResponse, error) {
        if in == nil || in.Service == nil {
                log.Errorf(nil, "create micro-service failed: request body is 
empty")
@@ -94,7 +87,7 @@ func (s *MicroServiceService) CreateServicePri(ctx 
context.Context, in *pb.Creat
                return resp, nil
        }
 
-       return datasource.GetMetadataManager().RegisterService(ctx, in)
+       return RegisterService(ctx, in)
 }
 
 func (s *MicroServiceService) Delete(ctx context.Context, in 
*pb.DeleteServiceRequest) (*pb.DeleteServiceResponse, error) {
@@ -235,7 +228,7 @@ func (s *MicroServiceService) UpdateProperties(ctx 
context.Context, in *pb.Updat
 
 func (s *MicroServiceService) Exist(ctx context.Context, in 
*pb.GetExistenceRequest) (*pb.GetExistenceResponse, error) {
        switch in.Type {
-       case ExistTypeMicroservice:
+       case datasource.ExistTypeMicroservice:
                err := validator.ExistenceReqValidator().Validate(in)
                if err != nil {
                        serviceFlag := util.StringJoin([]string{in.Environment, 
in.AppId, in.ServiceName, in.Version}, "/")
@@ -246,7 +239,7 @@ func (s *MicroServiceService) Exist(ctx context.Context, in 
*pb.GetExistenceRequ
                }
 
                return datasource.GetMetadataManager().ExistService(ctx, in)
-       case ExistTypeSchema:
+       case datasource.ExistTypeSchema:
                err := validator.GetSchemaReqValidator().Validate(in)
                if err != nil {
                        log.Errorf(err, "schema[%s/%s] exist failed", 
in.ServiceId, in.SchemaId)
@@ -321,7 +314,7 @@ func (s *MicroServiceService) CreateServiceEx(ctx 
context.Context, in *pb.Create
                                        Instance: ins,
                                }
                                req.Instance.ServiceId = serviceID
-                               rsp, err := s.instanceService.Register(ctx, req)
+                               rsp, err := RegisterInstance(ctx, req)
                                if err != nil {
                                        chanRsp.Message += 
fmt.Sprintf("{instance:%v,result:%s}", ins.Endpoints, err.Error())
                                }
diff --git a/server/service/microservice_test.go 
b/server/service/disco/microservice_test.go
similarity index 99%
rename from server/service/microservice_test.go
rename to server/service/disco/microservice_test.go
index 9b5ed72..ee8eb3f 100644
--- a/server/service/microservice_test.go
+++ b/server/service/disco/microservice_test.go
@@ -14,12 +14,14 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package service_test
+package disco_test
 
 import (
        "strconv"
        "strings"
 
+       "github.com/apache/servicecomb-service-center/server/service/disco"
+
        "github.com/apache/servicecomb-service-center/server/core"
        "github.com/apache/servicecomb-service-center/server/plugin/quota"
        pb "github.com/go-chassis/cari/discovery"
@@ -160,7 +162,7 @@ var _ = Describe("'Micro-service' service", func() {
                                
Expect(respGetRules.Response.GetCode()).To(Equal(pb.ResponseSuccess))
                                
Expect(respGetRules.Rules[0].Attribute).To(Equal("ServiceName"))
 
-                               respGetInsts, err := 
instanceResource.GetInstances(getContext(), &pb.GetInstancesRequest{
+                               respGetInsts, err := 
disco.GetInstances(getContext(), &pb.GetInstancesRequest{
                                        ConsumerServiceId: resp.ServiceId,
                                        ProviderServiceId: resp.ServiceId,
                                })
@@ -1192,7 +1194,7 @@ var _ = Describe("'Micro-service' service", func() {
                        
Expect(respCreate.Response.GetCode()).To(Equal(pb.ResponseSuccess))
                        serviceConsumerId = respCreate.ServiceId
 
-                       respFind, err := instanceResource.Find(getContext(), 
&pb.FindInstancesRequest{
+                       respFind, err := disco.FindInstances(getContext(), 
&pb.FindInstancesRequest{
                                ConsumerServiceId: serviceConsumerId,
                                AppId:             provider.AppId,
                                ServiceName:       provider.ServiceName,
diff --git a/server/service/rule.go b/server/service/disco/rule.go
similarity index 99%
rename from server/service/rule.go
rename to server/service/disco/rule.go
index a452952..13a4f68 100644
--- a/server/service/rule.go
+++ b/server/service/disco/rule.go
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package service
+package disco
 
 import (
        "context"
diff --git a/server/service/rule_test.go b/server/service/disco/rule_test.go
similarity index 97%
rename from server/service/rule_test.go
rename to server/service/disco/rule_test.go
index 7f16fdf..6348a27 100644
--- a/server/service/rule_test.go
+++ b/server/service/disco/rule_test.go
@@ -14,11 +14,13 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package service_test
+package disco_test
 
 import (
        "strconv"
 
+       discosvc 
"github.com/apache/servicecomb-service-center/server/service/disco"
+
        "github.com/apache/servicecomb-service-center/server/plugin/quota"
        pb "github.com/go-chassis/cari/discovery"
        . "github.com/onsi/ginkgo"
@@ -676,7 +678,7 @@ var _ = Describe("'Rule' service", func() {
                Context("when query instances", func() {
                        It("should be failed", func() {
                                By("consumer version in black list")
-                               resp, err := 
instanceResource.GetInstances(getContext(), &pb.GetInstancesRequest{
+                               resp, err := 
discosvc.GetInstances(getContext(), &pb.GetInstancesRequest{
                                        ConsumerServiceId: consumerVersion,
                                        ProviderServiceId: providerBlack,
                                })
@@ -684,7 +686,7 @@ var _ = Describe("'Rule' service", func() {
                                
Expect(resp.Response.GetCode()).To(Equal(pb.ErrServiceNotExists))
 
                                By("consumer tag in black list")
-                               resp, err = 
instanceResource.GetInstances(getContext(), &pb.GetInstancesRequest{
+                               resp, err = discosvc.GetInstances(getContext(), 
&pb.GetInstancesRequest{
                                        ConsumerServiceId: consumerTag,
                                        ProviderServiceId: providerBlack,
                                })
@@ -692,7 +694,7 @@ var _ = Describe("'Rule' service", func() {
                                
Expect(resp.Response.GetCode()).To(Equal(pb.ErrServiceNotExists))
 
                                By("find should return 200 even if consumer 
permission deny")
-                               respFind, err := 
instanceResource.Find(getContext(), &pb.FindInstancesRequest{
+                               respFind, err := 
discosvc.FindInstances(getContext(), &pb.FindInstancesRequest{
                                        ConsumerServiceId: consumerVersion,
                                        AppId:             "query_instance_tag",
                                        ServiceName:       
"query_instance_tag_service",
@@ -701,7 +703,7 @@ var _ = Describe("'Rule' service", func() {
                                Expect(err).To(BeNil())
                                
Expect(respFind.Response.GetCode()).To(Equal(pb.ResponseSuccess))
                                Expect(len(respFind.Instances)).To(Equal(0))
-                               respFind, err = 
instanceResource.Find(getContext(), &pb.FindInstancesRequest{
+                               respFind, err = 
discosvc.FindInstances(getContext(), &pb.FindInstancesRequest{
                                        ConsumerServiceId: consumerTag,
                                        AppId:             "query_instance_tag",
                                        ServiceName:       
"query_instance_tag_service",
@@ -712,7 +714,7 @@ var _ = Describe("'Rule' service", func() {
                                Expect(len(respFind.Instances)).To(Equal(0))
 
                                By("consumer not in black list")
-                               resp, err = 
instanceResource.GetInstances(getContext(), &pb.GetInstancesRequest{
+                               resp, err = discosvc.GetInstances(getContext(), 
&pb.GetInstancesRequest{
                                        ConsumerServiceId: providerWhite,
                                        ProviderServiceId: providerBlack,
                                })
@@ -720,7 +722,7 @@ var _ = Describe("'Rule' service", func() {
                                
Expect(resp.Response.GetCode()).To(Equal(pb.ResponseSuccess))
 
                                By("consumer not in white list")
-                               resp, err = 
instanceResource.GetInstances(getContext(), &pb.GetInstancesRequest{
+                               resp, err = discosvc.GetInstances(getContext(), 
&pb.GetInstancesRequest{
                                        ConsumerServiceId: providerBlack,
                                        ProviderServiceId: providerWhite,
                                })
@@ -728,7 +730,7 @@ var _ = Describe("'Rule' service", func() {
                                
Expect(resp.Response.GetCode()).To(Equal(pb.ErrServiceNotExists))
 
                                By("consumer version in white list")
-                               resp, err = 
instanceResource.GetInstances(getContext(), &pb.GetInstancesRequest{
+                               resp, err = discosvc.GetInstances(getContext(), 
&pb.GetInstancesRequest{
                                        ConsumerServiceId: consumerVersion,
                                        ProviderServiceId: providerWhite,
                                })
@@ -736,7 +738,7 @@ var _ = Describe("'Rule' service", func() {
                                
Expect(resp.Response.GetCode()).To(Equal(pb.ResponseSuccess))
 
                                By("consumer tag in white list")
-                               resp, err = 
instanceResource.GetInstances(getContext(), &pb.GetInstancesRequest{
+                               resp, err = discosvc.GetInstances(getContext(), 
&pb.GetInstancesRequest{
                                        ConsumerServiceId: consumerTag,
                                        ProviderServiceId: providerWhite,
                                })
diff --git a/server/service/schema.go b/server/service/disco/schema.go
similarity index 99%
rename from server/service/schema.go
rename to server/service/disco/schema.go
index 673946a..5824767 100644
--- a/server/service/schema.go
+++ b/server/service/disco/schema.go
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package service
+package disco
 
 import (
        "github.com/apache/servicecomb-service-center/datasource"
diff --git a/server/service/schema_test.go b/server/service/disco/schema_test.go
similarity index 99%
rename from server/service/schema_test.go
rename to server/service/disco/schema_test.go
index 8a3c29b..46e6958 100644
--- a/server/service/schema_test.go
+++ b/server/service/disco/schema_test.go
@@ -14,14 +14,17 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package service_test
+package disco_test
 
 import (
        "strconv"
        "strings"
 
+       "github.com/apache/servicecomb-service-center/datasource"
+
+       "github.com/apache/servicecomb-service-center/server/service/disco"
+
        "github.com/apache/servicecomb-service-center/server/plugin/quota"
-       "github.com/apache/servicecomb-service-center/server/service"
        pb "github.com/go-chassis/cari/discovery"
 
        . "github.com/onsi/ginkgo"
@@ -522,7 +525,7 @@ var _ = Describe("'Schema' service", func() {
                                
Expect(respModifySchemas.Response.GetCode()).To(Equal(pb.ErrUndefinedSchemaID))
 
                                respExist, err := 
serviceResource.Exist(getContext(), &pb.GetExistenceRequest{
-                                       Type:      service.ExistTypeSchema,
+                                       Type:      datasource.ExistTypeSchema,
                                        ServiceId: serviceIdPro1,
                                        SchemaId:  "first_schemaId",
                                })
@@ -558,7 +561,7 @@ var _ = Describe("'Schema' service", func() {
                                
Expect(respModifySchemas.Response.GetCode()).To(Equal(pb.ResponseSuccess))
 
                                respExist, err := 
serviceResource.Exist(getContext(), &pb.GetExistenceRequest{
-                                       Type:      service.ExistTypeSchema,
+                                       Type:      datasource.ExistTypeSchema,
                                        ServiceId: serviceIdPro2,
                                        SchemaId:  "first_schemaId",
                                })
@@ -901,7 +904,7 @@ var _ = Describe("'Schema' service", func() {
                                        },
                                }
                                By("schema edit not allowed, add a schema with 
new schemaId should fail")
-                               localServiceResource := 
service.NewMicroServiceService(instanceResource)
+                               localServiceResource := 
disco.NewMicroServiceService()
                                respModifySchemas, err = 
localServiceResource.ModifySchemas(getContext(), &pb.ModifySchemasRequest{
                                        ServiceId: serviceIdPro1,
                                        Schemas:   schemas,
@@ -956,7 +959,7 @@ var _ = Describe("'Schema' service", func() {
                                
Expect(respGetOne.Service.Schemas).To(Equal([]string{"first_schemaId"}))
 
                                By("schema edit not allowed, modify a schema 
should fail")
-                               localServiceResource := 
service.NewMicroServiceService(instanceResource)
+                               localServiceResource := 
disco.NewMicroServiceService()
                                respModifySchema, err := 
localServiceResource.ModifySchema(getContext(), &pb.ModifySchemaRequest{
                                        ServiceId: serviceIdPro1,
                                        SchemaId:  schemas[0].SchemaId,
diff --git a/server/service/service.go b/server/service/disco/service.go
similarity index 63%
rename from server/service/service.go
rename to server/service/disco/service.go
index 6953878..6eda7c8 100644
--- a/server/service/service.go
+++ b/server/service/disco/service.go
@@ -15,25 +15,21 @@
  * limitations under the License.
  */
 
-package service
+package disco
 
 import (
        "github.com/apache/servicecomb-service-center/pkg/proto"
 )
 
 var (
-       serviceService  proto.ServiceCtrlServer
-       instanceService proto.ServiceInstanceCtrlServerEx
+       serviceService proto.ServiceCtrlServer
 )
 
-func AssembleResources() (proto.ServiceCtrlServer, 
proto.ServiceInstanceCtrlServerEx) {
-       instanceService = &InstanceService{}
-       serviceService = NewMicroServiceService(instanceService)
-       return serviceService, instanceService
+func AssembleResources() proto.ServiceCtrlServer {
+       serviceService = NewMicroServiceService()
+       return serviceService
 }
 
-func NewMicroServiceService(instCtrlServer proto.ServiceInstanceCtrlServerEx) 
*MicroServiceService {
-       return &MicroServiceService{
-               instanceService: instCtrlServer,
-       }
+func NewMicroServiceService() *MicroServiceService {
+       return &MicroServiceService{}
 }
diff --git a/server/service/service_suite_test.go 
b/server/service/disco/service_suite_test.go
similarity index 88%
rename from server/service/service_suite_test.go
rename to server/service/disco/service_suite_test.go
index 58b4036..643c4f1 100644
--- a/server/service/service_suite_test.go
+++ b/server/service/disco/service_suite_test.go
@@ -14,15 +14,16 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package service_test
+package disco_test
 
 // initialize
 import (
        "context"
 
+       "github.com/apache/servicecomb-service-center/server/service/disco"
+
        "github.com/apache/servicecomb-service-center/pkg/proto"
        "github.com/apache/servicecomb-service-center/pkg/util"
-       "github.com/apache/servicecomb-service-center/server/service"
        _ "github.com/apache/servicecomb-service-center/test"
 
        . "github.com/onsi/ginkgo"
@@ -34,10 +35,9 @@ import (
 )
 
 var serviceResource proto.ServiceCtrlServer
-var instanceResource proto.ServiceInstanceCtrlServerEx
 
 var _ = BeforeSuite(func() {
-       serviceResource, instanceResource = service.AssembleResources()
+       serviceResource = disco.AssembleResources()
 })
 
 func getContext() context.Context {
diff --git a/server/service/tag.go b/server/service/disco/tag.go
similarity index 99%
rename from server/service/tag.go
rename to server/service/disco/tag.go
index 3561fea..0b217ba 100644
--- a/server/service/tag.go
+++ b/server/service/disco/tag.go
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package service
+package disco
 
 import (
        "context"
diff --git a/server/service/tag_test.go b/server/service/disco/tag_test.go
similarity index 97%
rename from server/service/tag_test.go
rename to server/service/disco/tag_test.go
index 39f8f2c..92b63df 100644
--- a/server/service/tag_test.go
+++ b/server/service/disco/tag_test.go
@@ -14,13 +14,15 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package service_test
+package disco_test
 
 import (
        "fmt"
        "strconv"
        "strings"
 
+       "github.com/apache/servicecomb-service-center/server/service/disco"
+
        "github.com/apache/servicecomb-service-center/server/plugin/quota"
        pb "github.com/go-chassis/cari/discovery"
        . "github.com/onsi/ginkgo"
@@ -349,7 +351,7 @@ var _ = Describe("'Tag' service", func() {
                                Expect(err).To(BeNil())
                                
Expect(addTagResp.Response.GetCode()).To(Equal(pb.ResponseSuccess))
 
-                               instanceResp, err := 
instanceResource.Register(getContext(), &pb.RegisterInstanceRequest{
+                               instanceResp, err := 
disco.RegisterInstance(getContext(), &pb.RegisterInstanceRequest{
                                        Instance: &pb.MicroServiceInstance{
                                                ServiceId: providerId,
                                                Endpoints: []string{
@@ -362,7 +364,7 @@ var _ = Describe("'Tag' service", func() {
                                Expect(err).To(BeNil())
                                
Expect(instanceResp.Response.GetCode()).To(Equal(pb.ResponseSuccess))
 
-                               findResp, err := 
instanceResource.Find(getContext(), &pb.FindInstancesRequest{
+                               findResp, err := 
disco.FindInstances(getContext(), &pb.FindInstancesRequest{
                                        ConsumerServiceId: consumerId,
                                        AppId:             
"find_inst_tag_group",
                                        ServiceName:       
"find_inst_tag_provider",
@@ -373,7 +375,7 @@ var _ = Describe("'Tag' service", func() {
                                
Expect(findResp.Response.GetCode()).To(Equal(pb.ResponseSuccess))
                                Expect(len(findResp.Instances)).To(Equal(0))
 
-                               findResp, err = 
instanceResource.Find(getContext(), &pb.FindInstancesRequest{
+                               findResp, err = 
disco.FindInstances(getContext(), &pb.FindInstancesRequest{
                                        ConsumerServiceId: consumerId,
                                        AppId:             
"find_inst_tag_group",
                                        ServiceName:       
"find_inst_tag_provider",
@@ -398,7 +400,7 @@ var _ = Describe("'Tag' service", func() {
                                Expect(err).To(BeNil())
                                
Expect(respAddRule.Response.GetCode()).To(Equal(pb.ResponseSuccess))
 
-                               findResp, err = 
instanceResource.Find(getContext(), &pb.FindInstancesRequest{
+                               findResp, err = 
disco.FindInstances(getContext(), &pb.FindInstancesRequest{
                                        ConsumerServiceId: consumerId,
                                        AppId:             
"find_inst_tag_group",
                                        ServiceName:       
"find_inst_tag_provider",
@@ -416,7 +418,7 @@ var _ = Describe("'Tag' service", func() {
                                Expect(err).To(BeNil())
                                
Expect(addTagResp.Response.GetCode()).To(Equal(pb.ResponseSuccess))
 
-                               findResp, err = 
instanceResource.Find(getContext(), &pb.FindInstancesRequest{
+                               findResp, err = 
disco.FindInstances(getContext(), &pb.FindInstancesRequest{
                                        ConsumerServiceId: consumerId,
                                        AppId:             
"find_inst_tag_group",
                                        ServiceName:       
"find_inst_tag_provider",
diff --git a/server/service/watch.go b/server/service/disco/watch.go
similarity index 69%
rename from server/service/watch.go
rename to server/service/disco/watch.go
index 47f9465..8870816 100644
--- a/server/service/watch.go
+++ b/server/service/disco/watch.go
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package service
+package disco
 
 import (
        "context"
@@ -29,11 +29,10 @@ import (
        "github.com/apache/servicecomb-service-center/pkg/log"
        "github.com/apache/servicecomb-service-center/pkg/proto"
        "github.com/apache/servicecomb-service-center/server/connection/grpc"
-       "github.com/apache/servicecomb-service-center/server/connection/hbws"
        "github.com/apache/servicecomb-service-center/server/connection/ws"
 )
 
-func (s *InstanceService) WatchPreOpera(ctx context.Context, in 
*pb.WatchInstanceRequest) error {
+func WatchPreOpera(ctx context.Context, in *pb.WatchInstanceRequest) error {
        if in == nil || len(in.SelfServiceId) == 0 {
                return errors.New("request format invalid")
        }
@@ -50,26 +49,9 @@ func (s *InstanceService) WatchPreOpera(ctx context.Context, 
in *pb.WatchInstanc
        return nil
 }
 
-func (s *InstanceService) HeartBeatPreOpera(ctx context.Context, in 
*pb.HeartbeatRequest) error {
-       if in == nil || len(in.ServiceId) == 0 || len(in.InstanceId) == 0 {
-               return errors.New("request format invalid")
-       }
-       resp, err := datasource.GetMetadataManager().ExistInstanceByID(ctx, 
&pb.MicroServiceInstanceKey{
-               ServiceId:  in.ServiceId,
-               InstanceId: in.InstanceId,
-       })
-       if err != nil {
-               return err
-       }
-       if !resp.Exist {
-               return datasource.ErrInstanceNotExists
-       }
-       return nil
-}
-
-func (s *InstanceService) Watch(in *pb.WatchInstanceRequest, stream 
proto.ServiceInstanceCtrlWatchServer) error {
+func Watch(in *pb.WatchInstanceRequest, stream 
proto.ServiceInstanceCtrlWatchServer) error {
        log.Infof("new a stream list and watch with service[%s]", 
in.SelfServiceId)
-       if err := s.WatchPreOpera(stream.Context(), in); err != nil {
+       if err := WatchPreOpera(stream.Context(), in); err != nil {
                log.Errorf(err, "service[%s] establish watch failed: invalid 
params", in.SelfServiceId)
                return err
        }
@@ -77,25 +59,16 @@ func (s *InstanceService) Watch(in 
*pb.WatchInstanceRequest, stream proto.Servic
        return grpc.Watch(stream.Context(), in.SelfServiceId, stream)
 }
 
-func (s *InstanceService) WebSocketWatch(ctx context.Context, in 
*pb.WatchInstanceRequest, conn *websocket.Conn) {
+func WebSocketWatch(ctx context.Context, in *pb.WatchInstanceRequest, conn 
*websocket.Conn) {
        log.Infof("new a web socket watch with service[%s]", in.SelfServiceId)
-       if err := s.WatchPreOpera(ctx, in); err != nil {
+       if err := WatchPreOpera(ctx, in); err != nil {
                ws.SendEstablishError(conn, err)
                return
        }
        ws.Watch(ctx, in.SelfServiceId, conn)
 }
 
-func (s *InstanceService) WatchHeartbeat(ctx context.Context, in 
*pb.HeartbeatRequest, conn *websocket.Conn) {
-       log.Info(fmt.Sprintf("new a web socket with service[%s] ,instance[%s]", 
in.ServiceId, in.InstanceId))
-       if err := s.HeartBeatPreOpera(ctx, in); err != nil {
-               hbws.SendEstablishError(conn, err)
-               return
-       }
-       hbws.Heartbeat(ctx, conn, in.ServiceId, in.InstanceId)
-}
-
-func (s *InstanceService) QueryAllProvidersInstances(ctx context.Context, in 
*pb.WatchInstanceRequest) ([]*pb.WatchInstanceResponse, int64) {
+func QueryAllProvidersInstances(ctx context.Context, in 
*pb.WatchInstanceRequest) ([]*pb.WatchInstanceResponse, int64) {
        depResp, err := 
datasource.GetDependencyManager().SearchConsumerDependency(ctx, 
&pb.GetDependenciesRequest{
                ServiceId: in.SelfServiceId,
        })
diff --git a/server/service/watch_test.go b/server/service/disco/watch_test.go
similarity index 81%
rename from server/service/watch_test.go
rename to server/service/disco/watch_test.go
index a058399..46168d8 100644
--- a/server/service/watch_test.go
+++ b/server/service/disco/watch_test.go
@@ -14,13 +14,14 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package service_test
+package disco_test
 
 import (
        "context"
        "testing"
 
-       "github.com/apache/servicecomb-service-center/server/service"
+       "github.com/apache/servicecomb-service-center/server/service/disco"
+
        pb "github.com/go-chassis/cari/discovery"
        . "github.com/onsi/ginkgo"
        . "github.com/onsi/gomega"
@@ -43,7 +44,7 @@ func TestInstanceService_WebSocketWatch(t *testing.T) {
        defer func() {
                recover()
        }()
-       instanceResource.WebSocketWatch(context.Background(), 
&pb.WatchInstanceRequest{}, nil)
+       disco.WebSocketWatch(context.Background(), &pb.WatchInstanceRequest{}, 
nil)
 }
 
 var _ = Describe("'Instance' service", func() {
@@ -70,25 +71,24 @@ var _ = Describe("'Instance' service", func() {
                Context("when request is invalid", func() {
                        It("should be failed", func() {
                                By("service does not exist")
-                               IC := 
instanceResource.(*service.InstanceService)
-                               err := IC.WatchPreOpera(getContext(), 
&pb.WatchInstanceRequest{
+                               err := disco.WatchPreOpera(getContext(), 
&pb.WatchInstanceRequest{
                                        SelfServiceId: "-1",
                                })
                                Expect(err).NotTo(BeNil())
 
-                               err = IC.Watch(&pb.WatchInstanceRequest{
+                               err = disco.Watch(&pb.WatchInstanceRequest{
                                        SelfServiceId: "-1",
                                }, &grpcWatchServer{})
                                Expect(err).NotTo(BeNil())
 
                                By("service id is empty")
-                               err = 
instanceResource.(*service.InstanceService).WatchPreOpera(getContext(), 
&pb.WatchInstanceRequest{
+                               err = disco.WatchPreOpera(getContext(), 
&pb.WatchInstanceRequest{
                                        SelfServiceId: "",
                                })
                                Expect(err).NotTo(BeNil())
 
                                By("request is valid")
-                               err = 
instanceResource.(*service.InstanceService).WatchPreOpera(getContext(),
+                               err = disco.WatchPreOpera(getContext(),
                                        &pb.WatchInstanceRequest{
                                                SelfServiceId: serviceId,
                                        })
diff --git a/server/connection/hbws/websocket.go 
b/server/service/heartbeat/websocket.go
similarity index 82%
rename from server/connection/hbws/websocket.go
rename to server/service/heartbeat/websocket.go
index 314f426..263ae2e 100644
--- a/server/connection/hbws/websocket.go
+++ b/server/service/heartbeat/websocket.go
@@ -15,14 +15,18 @@
  * limitations under the License.
  */
 
-package hbws
+package heartbeat
 
 import (
        "context"
+       "errors"
        "fmt"
        "sync"
        "time"
 
+       "github.com/apache/servicecomb-service-center/datasource"
+       discosvc 
"github.com/apache/servicecomb-service-center/server/service/disco"
+
        pb "github.com/go-chassis/cari/discovery"
        "github.com/gorilla/websocket"
 
@@ -30,7 +34,6 @@ import (
        "github.com/apache/servicecomb-service-center/pkg/util"
        "github.com/apache/servicecomb-service-center/server/config"
        "github.com/apache/servicecomb-service-center/server/connection"
-       "github.com/apache/servicecomb-service-center/server/core"
        "github.com/apache/servicecomb-service-center/server/metrics"
 )
 
@@ -122,7 +125,7 @@ func (c *client) handleMessage() {
                        ServiceId:  c.serviceID,
                        InstanceId: c.instanceID,
                }
-               _, err = core.InstanceAPI.Heartbeat(c.cxt, request)
+               _, err = discosvc.Heartbeat(c.cxt, request)
                if err != nil {
                        log.Error("instance heartbeat report failed ", err)
                }
@@ -164,3 +167,28 @@ func process(client *client) {
        go client.heartbeat()
        client.handleMessage()
 }
+
+func WatchHeartbeat(ctx context.Context, in *pb.HeartbeatRequest, conn 
*websocket.Conn) {
+       log.Info(fmt.Sprintf("new a web socket with service[%s] ,instance[%s]", 
in.ServiceId, in.InstanceId))
+       if err := preOp(ctx, in); err != nil {
+               SendEstablishError(conn, err)
+               return
+       }
+       Heartbeat(ctx, conn, in.ServiceId, in.InstanceId)
+}
+func preOp(ctx context.Context, in *pb.HeartbeatRequest) error {
+       if in == nil || len(in.ServiceId) == 0 || len(in.InstanceId) == 0 {
+               return errors.New("request format invalid")
+       }
+       resp, err := datasource.GetMetadataManager().ExistInstanceByID(ctx, 
&pb.MicroServiceInstanceKey{
+               ServiceId:  in.ServiceId,
+               InstanceId: in.InstanceId,
+       })
+       if err != nil {
+               return err
+       }
+       if !resp.Exist {
+               return datasource.ErrInstanceNotExists
+       }
+       return nil
+}
diff --git a/server/connection/hbws/websocket_test.go 
b/server/service/heartbeat/websocket_test.go
similarity index 93%
rename from server/connection/hbws/websocket_test.go
rename to server/service/heartbeat/websocket_test.go
index f35f2f0..4b6744f 100644
--- a/server/connection/hbws/websocket_test.go
+++ b/server/service/heartbeat/websocket_test.go
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package hbws_test
+package heartbeat_test
 
 import (
        "context"
@@ -27,10 +27,11 @@ import (
        "testing"
        "time"
 
+       "github.com/apache/servicecomb-service-center/server/service/heartbeat"
+
        "github.com/gorilla/websocket"
        "github.com/stretchr/testify/assert"
 
-       "github.com/apache/servicecomb-service-center/server/connection/hbws"
        "github.com/apache/servicecomb-service-center/server/core"
 )
 
@@ -77,7 +78,7 @@ func NewTest() *watcherConn {
 
 func TestHeartbeat(t *testing.T) {
        mock := NewTest()
-       go hbws.Heartbeat(context.Background(), mock.serverConn, "", "")
+       go heartbeat.Heartbeat(context.Background(), mock.serverConn, "", "")
        err := mock.serverConn.WriteMessage(websocket.TextMessage, 
[]byte("hello"))
        assert.Nil(t, err)
        _, p, err := mock.clientConn.ReadMessage()
diff --git a/server/service/rbac/account_dao.go 
b/server/service/rbac/account_service.go
similarity index 100%
rename from server/service/rbac/account_dao.go
rename to server/service/rbac/account_service.go
diff --git a/server/service/rbac/account_dao_test.go 
b/server/service/rbac/account_service_test.go
similarity index 100%
rename from server/service/rbac/account_dao_test.go
rename to server/service/rbac/account_service_test.go
diff --git a/server/service/rbac/role.go b/server/service/rbac/init.go
similarity index 100%
rename from server/service/rbac/role.go
rename to server/service/rbac/init.go
diff --git a/server/service/rbac/role_dao.go 
b/server/service/rbac/role_service.go
similarity index 100%
rename from server/service/rbac/role_dao.go
rename to server/service/rbac/role_service.go
diff --git a/server/service/rbac/role_dao_test.go 
b/server/service/rbac/role_service_test.go
similarity index 100%
rename from server/service/rbac/role_dao_test.go
rename to server/service/rbac/role_service_test.go
diff --git a/test/test.go b/test/test.go
index df8a2d0..caf37f2 100644
--- a/test/test.go
+++ b/test/test.go
@@ -20,12 +20,12 @@ package test
 
 import (
        _ "github.com/apache/servicecomb-service-center/server/init"
+       "github.com/apache/servicecomb-service-center/server/service/disco"
 
        _ "github.com/apache/servicecomb-service-center/server/bootstrap"
 
        "github.com/apache/servicecomb-service-center/datasource"
        "github.com/apache/servicecomb-service-center/server/core"
-       "github.com/apache/servicecomb-service-center/server/service"
        "github.com/go-chassis/go-archaius"
 )
 
@@ -42,5 +42,5 @@ func init() {
                archaius.Set("registry.heartbeat.kind", "checker")
        }
        datasource.Init(datasource.Options{Kind: datasource.Kind(t.(string))})
-       core.ServiceAPI, core.InstanceAPI = service.AssembleResources()
+       core.ServiceAPI = disco.AssembleResources()
 }

Reply via email to