diff --git a/registry/etcdv3/service_discovery.go b/registry/etcdv3/service_discovery.go
index e435a556e5690c0ad6fcdf87c8387f8157ec0d6d..5699f1c427f9807ed4c6d179a18a996ea71623bb 100644
--- a/registry/etcdv3/service_discovery.go
+++ b/registry/etcdv3/service_discovery.go
@@ -89,13 +89,12 @@ func (e *etcdV3ServiceDiscovery) Register(instance registry.ServiceInstance) err
 	if nil != e.client {
 		ins, err := jsonutil.EncodeJSON(instance)
 		if err == nil {
-			err = e.client.Update(path, string(ins))
+			err = e.client.RegisterTemp(path, string(ins))
 			if err != nil {
 				logger.Errorf("cannot register the instance: %s", string(ins), err)
 			} else {
 				e.services.Add(instance.GetServiceName())
 			}
-
 		}
 	}
 
@@ -109,7 +108,7 @@ func (e *etcdV3ServiceDiscovery) Update(instance registry.ServiceInstance) error
 	if nil != e.client {
 		ins, err := jsonutil.EncodeJSON(instance)
 		if nil == err {
-			e.client.Update(path, string(ins))
+			e.client.RegisterTemp(path, string(ins))
 			e.services.Add(instance.GetServiceName())
 		}
 	}
diff --git a/remoting/etcdv3/client.go b/remoting/etcdv3/client.go
index a24a69232eb4bf8d3ad7acc3b3e05eb1eaf3253b..080c9411442b4cbb9701e00152f3a03f562d0d05 100644
--- a/remoting/etcdv3/client.go
+++ b/remoting/etcdv3/client.go
@@ -19,7 +19,6 @@ package etcdv3
 
 import (
 	"context"
-	"path"
 	"sync"
 	"time"
 )
@@ -520,16 +519,14 @@ func (c *Client) Delete(k string) error {
 }
 
 // RegisterTemp registers a temporary node
-func (c *Client) RegisterTemp(basePath string, node string) (string, error) {
+func (c *Client) RegisterTemp(k, v string) error {
 
-	completeKey := path.Join(basePath, node)
-
-	err := c.keepAliveKV(completeKey, "")
+	err := c.keepAliveKV(k, v)
 	if err != nil {
-		return "", perrors.WithMessagef(err, "keepalive kv (key %s)", completeKey)
+		return perrors.WithMessagef(err, "keepalive kv (key %s)", k)
 	}
 
-	return completeKey, nil
+	return nil
 }
 
 // GetChildrenKVList gets children kv list by @k
diff --git a/remoting/etcdv3/client_test.go b/remoting/etcdv3/client_test.go
index 287d93e30dd125d743bf718dcdab574a4b5a4afc..a321eea9ec22e41b807dd9e6912547d6ca5a084e 100644
--- a/remoting/etcdv3/client_test.go
+++ b/remoting/etcdv3/client_test.go
@@ -384,7 +384,7 @@ func (suite *ClientTestSuite) TestClientRegisterTemp() {
 		assert.Contains(t, events, eDelete)
 	}()
 
-	_, err := c.RegisterTemp("scott", "wang")
+	err := c.RegisterTemp("scott/wang", "test")
 	if err != nil {
 		t.Fatal(err)
 	}