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

xiaoyu pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/shenyu-client-golang.git


The following commit(s) were added to refs/heads/main by this push:
     new a88ccf6  [Feature :add consul doc & refactor README.] (#33)
a88ccf6 is described below

commit a88ccf6020dc9c576ce62ff5595344ea0f5c6c2d
Author: Lisandro <[email protected]>
AuthorDate: Tue Aug 2 14:58:57 2022 +0800

    [Feature :add consul doc & refactor README.] (#33)
    
    * [Feature :add consul doc & refactor README.]
    
    * [Feature :Adjust.]
    
    Co-authored-by: lishuo <[email protected]>
---
 README.md                                   | 321 +------------------------
 README_CN.md                                | 321 +------------------------
 doc/CONSUL_CN.md                            | 180 ++++++++++++++
 doc/CONSUL_EN.md                            | 360 ++++++++++++++++++++++++++++
 doc/HTTP_CN.md                              | 101 ++++++++
 doc/HTTP_EN.md                              | 100 ++++++++
 doc/NACOS_CN.md                             | 122 ++++++++++
 doc/NACOS_EN.md                             | 122 ++++++++++
 doc/ZK_CN.md                                | 111 +++++++++
 doc/ZK_EN.md                                | 113 +++++++++
 example/consul_client/consul_client.go      |   3 +-
 example/consul_client/consul_client_test.go |   4 +-
 12 files changed, 1227 insertions(+), 631 deletions(-)

diff --git a/README.md b/README.md
index 73c2481..4968523 100644
--- a/README.md
+++ b/README.md
@@ -19,12 +19,13 @@ Gateway.
 * **Http type Register**
 * **Nacos type Register**
 * **Zookeeper type Register**
+* **Consul type Register**
 
 ---
 
 ## Requirements
 
-Supported Go version **over 1.12**
+Supported Go version **over 1.13**
 
 SDK Supported ShenYu version **over 2.4.3**
 
@@ -41,320 +42,12 @@ $ go get -u github.com/apache/shenyu-client-golang
 * shenyu-client-golang/example/**_client/main.go
 ---
 
-## The Http type Register
-
-**1.Fist make sure The ShenYuAdmin is Started, and ShenYuAdmin service active 
port is 9095.**
-```go
-Or you will see this error :
-       
-2022-05-05 15:24:28 [WARN] 
[github.com/apache/shenyu-client-golang/example/http_client/main.go:53] 
MetaDataRegister has error: The errCode is ->:503, The errMsg is  ->:Please 
check ShenYu admin service status
-
-caused by:
-Post "http://127.0.0.1:9095/shenyu-client/register-metadata": dial tcp 
127.0.0.1:9095: connect: connection refused
-2022-05-05 15:24:28 [INFO] 
[github.com/apache/shenyu-client-golang/example/http_client/main.go:55] finish 
register metadata ,the result is-> false
-2022-05-05 15:24:28 [WARN] 
[github.com/apache/shenyu-client-golang/example/http_client/main.go:68] 
UrlRegister has error: The errCode is ->:503, The errMsg is  ->:Please check 
ShenYu admin service status
-
-caused by:
-Post "http://127.0.0.1:9095/shenyu-client/register-uri": dial tcp 
127.0.0.1:9095: connect: connection refused
-2022-05-05 15:24:28 [INFO] 
[github.com/apache/shenyu-client-golang/example/http_client/main.go:70] finish 
UrlRegister ,the result is-> false
-       
-```
-
-**2.Step 1 Get shenyu_admin_client. (Register service need this)**
-
-```go
-//init ShenYuAdminClient
-adminClient := &model.ShenYuAdminClient{
-    UserName: "admin",  //require user provide
-    Password: "123456", //require user provide
-}
-
-adminToken, err := clients.NewShenYuAdminClient(adminClient)
-
-The adminToken like this :
-{
-    "code":200,
-    "message":"login dashboard user success",
-    "data":{
-        "id":"1",
-        "userName":"admin",
-        "role":1,
-        "enabled":true,
-        "dateCreated":"2018-06-23 15:12:22",
-        "dateUpdated":"2022-03-09 15:08:14",
-        
"token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyTmFtZSI6ImFkbWluIiwiZXhwIjoxNjUwNjc5OTQ2fQ.K92Il2kmJ0X3FgjY4igW35-pw9nsf5VKdUyqBoyIaF4"
-    }
-}
-
-When you success get toekn, you will see this :
-this is ShenYu Admin client token -> 
eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyTmFtZSI6ImFkbWluIiwiZXhwIjoxNjUwNjc5OTQ2fQ.K92Il2kmJ0X3FgjY4igW35-pw9nsf5VKdUyqBoyIaF4
-
-```
-
-
-**3.Step 2 Register MetaData to ShenYu GateWay. (Need step 1 token to invoke)**
-```go
-//MetaDataRegister(Need Step 1 toekn adminToken.AdminTokenData)
-metaData := &model.MetaDataRegister{
-               AppName: "testMetaDataRegister", //require user provide
-               Path:    "/your/path",           //require user provide
-               Enabled: true,                   //require user provide
-               Host:    "127.0.0.1",            //require user provide
-               Port:    "8080",                 //require user provide
-       }
-       result, err := clients.RegisterMetaData(adminToken.AdminTokenData, 
metaData)
-       if err != nil {
-               logger.Warn("MetaDataRegister has error:",err)
-       }
-       logger.Info("finish register metadata ,the result is->", result)
-       
-       
-When Register success , you will see this :  
-finish register metadata ,the result is-> true
-```
-
-**4.Step 3  Url  Register  to ShenYu GateWay. (Need step 1 token to invoke)**
-```go
-//URIRegister(Need Step 1 toekn adminToken.AdminTokenData)
-//init urlRegister
-       urlRegister := &model.URIRegister{
-               Protocol:    "testMetaDataRegister", //require user provide
-               AppName:     "testURLRegister",      //require user provide
-               ContextPath: "contextPath",          //require user provide
-               RPCType:     constants.RPCTYPE_HTTP, //require user provide
-               Host:        "127.0.0.1",            //require user provide
-               Port:        "8080",                 //require user provide
-       }
-       result, err = clients.UrlRegister(adminToken.AdminTokenData, 
urlRegister)
-       if err != nil {
-               logger.Warn("UrlRegister has error:", err)
-       }
-       logger.Info("finish UrlRegister ,the result is->", result)
-```
-
-## Entire Success log
-```go
-2022-05-05 15:43:56 [INFO] 
[github.com/apache/shenyu-client-golang/clients/admin_client/shenyu_admin_client.go:51]
 Get ShenYu Admin response, body is -> {200 login dashboard user success {1 
admin 1 true 2018-06-23 15:12:22 2022-03-09 15:08:14 
eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyTmFtZSI6ImFkbWluIiwiZXhwIjoxNjUxODIzMDM2fQ.gMzPKaNlXEd1Q517qQamOpg358W9L0-0cZN3lkk06WE}}
-2022-05-05 15:43:56 [INFO] 
[github.com/apache/shenyu-client-golang/example/http_client/main.go:40] this is 
ShenYu Admin client token -> 
eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyTmFtZSI6ImFkbWluIiwiZXhwIjoxNjUxODIzMDM2fQ.gMzPKaNlXEd1Q517qQamOpg358W9L0-0cZN3lkk06WE
-2022-05-05 15:43:57 [INFO] 
[github.com/apache/shenyu-client-golang/example/http_client/main.go:55] finish 
register metadata ,the result is-> true
-2022-05-05 15:43:57 [INFO] 
[github.com/apache/shenyu-client-golang/example/http_client/main.go:70] finish 
UrlRegister ,the result is-> true
-
-```
-
+## Get Start
 
+* Http Example  [English](doc/HTTP_EN.md)  | [简体中文](doc/HTTP_CN.md)
+* Nacos Example [English](doc/NACOS_EN.md)  | [简体中文](doc/NACOS_CN.md)
+* Zookeeper Example [English](doc/ZK_EN.md)  | [简体中文](doc/ZK_CN.md)
+* Consul Example [English](doc/CONSUL_EN.md)  | [简体中文](doc/CONSUL_CN.md)
 
 ---
-## The Nacos type Register
-
-**1.Fist make sure your nacos env is correct,the set this necessary param.**
-```go
-//set nacos env configuration
-    ncp := &nacos_client.NacosClientParam{
-        IpAddr:      "console.nacos.io",
-        Port:        80,
-        NamespaceId: "e525eafa-f7d7-4029-83d9-008937f9d468",
-}
-```
-
-**2. Prepare your service metaData to register**
-```go
-//metaData is necessary param, this will be register to shenyu gateway to use
-    metaData := &model.URIRegister{
-        Protocol:    "testMetaDataRegister", //require user provide
-        AppName:     "testURLRegister",      //require user provide
-        ContextPath: "contextPath",          //require user provide
-        RPCType:     constants.RPCTYPE_HTTP, //require user provide
-        Host:        "127.0.0.1",            //require user provide
-        Port:        "8080",                 //require user provide
-}
-    metaDataStringJson, _ := json.Marshal(metaData)
-```
-
-**3. Prepare your service Instance message(include metaData)**
-```go
-//init NacosRegisterInstance
-    nacosRegisterInstance := vo.RegisterInstanceParam{
-        Ip:          "10.0.0.10", //require user provide
-        Port:        8848,        //require user provide
-        ServiceName: "demo.go",   //require user provide
-        Weight:      10,          //require user provide
-        Enable:      true,        //require user provide
-        Healthy:     true,        //require user provide
-        Ephemeral:   true,        //require user provide
-        Metadata:    map[string]string{"contextPath": "contextPath", 
"uriMetadata": string(metaDataStringJson)},
-}
-```
-
-**4. Get shenyu nacos client**
-```go
-    sdkClient := shenyu_sdk_client.GetFactoryClient(constants.NACOS_CLIENT)
-    result, createResult, err := sdkClient.NewClient(ncp)
-        if !createResult && err != nil {
-        logger.Fatal("Create nacos client error : %+V", err)
-    }
-
-       nc := &nacos_client.ShenYuNacosClient{
-               NacosClient: result.(*naming_client.NamingClient),
-       }
-```
-
-
-**5.Use client to invoke RegisterServiceInstance**
-```go
-   instanceInfo, err := nc.GetServiceInstanceInfo(queryData)
-    if instanceInfo == nil {
-        logger.Fatal("Register nacos Instance error : %+V", err)
-    }
-        //do your logic
-```
 
-**6.Use client to invoke DeregisterServiceInstance**
-```go
-//DeregisterServiceInstance start
-    deregisterInstanceParam := vo.DeregisterInstanceParam{
-    Ip:          "10.0.0.10",
-    Port:        8848,
-    ServiceName: "demo.go",
-    Ephemeral:   true,
-    //Cluster:     "cluster-a", // default value is DEFAULT
-    GroupName: "group-a", // default value is DEFAULT_GROUP
-}
-
-    serviceInstance, err := 
nc.DeregisterServiceInstance(deregisterInstanceParam)
-        if !serviceInstance && err != nil {
-        logger.Info("DeregisterServiceInstance result : %+V", serviceInstance)
-}
-        //do your logic
-```
-
-**7.Use client to invoke GetServiceInstanceInfo**
-```go
-        instanceInfo, result, err := nc.GetServiceInstanceInfo(queryData)
-            if result != false && err != nil {
-            logger.Fatal("Register nacos Instance error : %+V", err)
-        }
-        //do your logic
-```
-
-## Entire Success log
-```go
-2022-06-27 10:56:17 [INFO] 
[github.com/shenyu-client-golang/clients/nacos_client/nacos_client.go:92] 
RegisterServiceInstance,result:true
-
-,param:{Ip:10.0.0.10 Port:8848 Weight:10 Enable:true Healthy:true 
Metadata:map[contextPath:contextPath 
uriMetadata:{"protocol":"testMetaDataRegister","appName":"testURLRegister","contextPath":"contextPath","rpcType":"http","host":"127.0.0.1","port":"8080"}]
 ClusterName: ServiceName:demo.go GroupName: Ephemeral:true}
-
-```
-
-
-
----
-## The Zookeeper type Register
-
-**1.Fist make sure your Zookeeper env is correct,the set this necessary 
param.**
-```go
-    //Create ShenYuZkClient  start
-    zcp := &zk_client.ZkClientParam{
-    ZkServers: []string{"127.0.0.1:2181"}, //require user provide
-    ZkRoot:    "/api",                     //require user provide
-    }
-
-    sdkClient := shenyu_sdk_client.GetFactoryClient(constants.ZOOKEEPER_CLIENT)
-    client, createResult, err := sdkClient.NewClient(zcp)
-
-    if !createResult && err != nil {
-    logger.Fatal("Create ShenYuZkClient error : %+V", err)
-    }
-
-    zc := client.(*zk_client.ShenYuZkClient)
-    defer zc.Close()
-    //Create ShenYuZkClient end
-```
-
-**2. Prepare your service metaData to register**
-```go
-//metaData is necessary param, this will be register to shenyu gateway to use
-    metaData1 := &model.MetaDataRegister{
-        AppName: "testMetaDataRegister1", //require user provide
-        Path:    "your/path1",            //require user provide
-        Enabled: true,                    //require user provide
-        Host:    "127.0.0.1",             //require user provide
-        Port:    "8080",                  //require user provide
-    }
-
-    metaData2 := &model.MetaDataRegister{
-        AppName: "testMetaDataRegister2", //require user provide
-        Path:    "your/path2",            //require user provide
-        Enabled: true,                    //require user provide
-        Host:    "127.0.0.1",             //require user provide
-        Port:    "8181",                  //require user provide
-    }
-```
-
-**3.use client to invoke RegisterServiceInstance**
-```go
-   //register multiple metaData
-    registerResult1, err := zc.RegisterServiceInstance(metaData1)
-        if !registerResult1 && err != nil {
-        logger.Fatal("Register zk Instance error : %+V", err)
-    }
-
-    registerResult2, err := zc.RegisterServiceInstance(metaData2)
-        if !registerResult2 && err != nil {
-        logger.Fatal("Register zk Instance error : %+V", err)
-    }
-    //do your logic
-```
-
-**4.use client to invoke DeregisterServiceInstance**
-```go
-    //your can chose to invoke,not require
-    deRegisterResult1, err := zc.DeregisterServiceInstance(metaData1)
-        if err != nil {
-        panic(err)
-        }
-
-    deRegisterResult2, err := zc.DeregisterServiceInstance(metaData2)
-        if err != nil {
-        panic(err)
-        }
-```
-
-**5.use client to GetServiceInstanceInfo**
-```go
-    //GetServiceInstanceInfo start
-    instanceDetail, err := zc.GetServiceInstanceInfo(metaData1)
-        nodes1, ok := instanceDetail.([]*model.MetaDataRegister)
-        if !ok {
-        logger.Fatal("get zk client metaData error %+v:", err)
-     }
-    
-    //range nodes
-    for index, node := range nodes1 {
-        nodeJson, err := json.Marshal(node)
-        if err == nil {
-        logger.Info("GetNodesInfo ,success Index", index, string(nodeJson))
-        }
-    }
-    
-    instanceDetail2, err := zc.GetServiceInstanceInfo(metaData2)
-        nodes2, ok := instanceDetail2.([]*model.MetaDataRegister)
-        if !ok {
-            logger.Fatal("get zk client metaData error %+v:", err)
-    }
-    //GetServiceInstanceInfo end
-
-```
-
-## Entire Success log
-```go
-2022-07-13 16:09:31 [INFO] 
[github.com/shenyu-client-golang/example/zk_client/main.go:105] GetNodesInfo 
,success Index 0 
{"appName":"testMetaDataRegister1","path":"your/path1","contextPath":"","ruleName":"","rpcType":"","enabled":true,"host":"127.0.0.1","port":"8080","pluginNames":null,"registerMetaData":false,"timeMillis":0}
-2022-07-13 16:09:31 [INFO] 
[github.com/shenyu-client-golang/example/zk_client/main.go:119] GetNodesInfo 
,success Index 0 
{"appName":"testMetaDataRegister2","path":"your/path2","contextPath":"","ruleName":"","rpcType":"","enabled":true,"host":"127.0.0.1","port":"8181","pluginNames":null,"registerMetaData":false,"timeMillis":0}
-2022-07-13 16:09:31 [INFO] 
[github.com/shenyu-client-golang/example/zk_client/main.go:132] GetNodesInfo 
,success Index 0 
{"appName":"testMetaDataRegister3","path":"your/path3","contextPath":"","ruleName":"","rpcType":"","enabled":true,"host":"127.0.0.1","port":"8282","pluginNames":null,"registerMetaData":false,"timeMillis":0}
-2022-07-13 16:09:31 [INFO] 
[github.com/shenyu-client-golang/example/zk_client/main.go:139] > 
DeregisterServiceInstance start
-2022-07-13 16:09:31 [INFO] 
[github.com/shenyu-client-golang/clients/zk_client/zk_client.go:213] ensureName 
check, path is -> /api/testMetaDataRegister1
-2022-07-13 16:09:31 [INFO] 
[github.com/shenyu-client-golang/clients/zk_client/zk_client.go:215] ensureName 
check result is -> true
-2022-07-13 16:09:31 [INFO] 
[github.com/shenyu-client-golang/clients/zk_client/zk_client.go:213] ensureName 
check, path is -> /api/testMetaDataRegister2
-2022-07-13 16:09:31 [INFO] 
[github.com/shenyu-client-golang/clients/zk_client/zk_client.go:215] ensureName 
check result is -> true
-2022-07-13 16:09:31 [INFO] 
[github.com/shenyu-client-golang/clients/zk_client/zk_client.go:213] ensureName 
check, path is -> /api/testMetaDataRegister3
-2022-07-13 16:09:31 [INFO] 
[github.com/shenyu-client-golang/clients/zk_client/zk_client.go:215] ensureName 
check result is -> true
-2022-07-13 16:09:31 [INFO] 
[github.com/shenyu-client-golang/example/zk_client/main.go:156] 
DeregisterServiceInstance success !
-```
diff --git a/README_CN.md b/README_CN.md
index 2c7e9f7..3386206 100644
--- a/README_CN.md
+++ b/README_CN.md
@@ -16,12 +16,13 @@ Shenyu-client-golang是提供了Go语言访问ShenYu网关的功能,并支持
 * **以Http方式注册**
 * **以Nacos方式注册**
 * **以Zookeeper方式注册**
+* **以Consul方式注册**
 
 ---
 
 ## 要求
 
-要求Go语言版本 **1.12**
+要求Go语言版本 **1.13**
 
 SDK支持ShenYu的版本 **2.4.3及以上**
 
@@ -38,320 +39,12 @@ $ go get -u github.com/apache/shenyu-client-golang
 * shenyu-client-golang/example/**_client/main.go
 ---
 
-##  以Http方式注册到ShenYu网关
-
-**1.首先确保ShenYuAdmin是启动的,并且ShenYuAdmin服务启动的端口是9095 .**
-```go
-如果没启动,你将看到如下错误:
-       
-2022-05-05 15:24:28 [WARN] 
[github.com/apache/shenyu-client-golang/example/http_client/main.go:53] 
MetaDataRegister has error: The errCode is ->:503, The errMsg is  ->:Please 
check ShenYu admin service status
-
-caused by:
-Post "http://127.0.0.1:9095/shenyu-client/register-metadata": dial tcp 
127.0.0.1:9095: connect: connection refused
-2022-05-05 15:24:28 [INFO] 
[github.com/apache/shenyu-client-golang/example/http_client/main.go:55] finish 
register metadata ,the result is-> false
-2022-05-05 15:24:28 [WARN] 
[github.com/apache/shenyu-client-golang/example/http_client/main.go:68] 
UrlRegister has error: The errCode is ->:503, The errMsg is  ->:Please check 
ShenYu admin service status
-
-caused by:
-Post "http://127.0.0.1:9095/shenyu-client/register-uri": dial tcp 
127.0.0.1:9095: connect: connection refused
-2022-05-05 15:24:28 [INFO] 
[github.com/apache/shenyu-client-golang/example/http_client/main.go:70] finish 
UrlRegister ,the result is-> false
-       
-```
-
-**2.获取shenyu_admin_client. (注册服务需要这个实例)**
-
-```go
-//初始化 ShenYuAdminClient
-adminClient := &model.ShenYuAdminClient{
-    UserName: "admin",  //需要用户提供
-    Password: "123456", //需要用户提供
-}
-
-adminToken, err := clients.NewShenYuAdminClient(adminClient)
-
-adminToken像这样 :
-{
-    "code":200,
-    "message":"login dashboard user success",
-    "data":{
-        "id":"1",
-        "userName":"admin",
-        "role":1,
-        "enabled":true,
-        "dateCreated":"2018-06-23 15:12:22",
-        "dateUpdated":"2022-03-09 15:08:14",
-        
"token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyTmFtZSI6ImFkbWluIiwiZXhwIjoxNjUwNjc5OTQ2fQ.K92Il2kmJ0X3FgjY4igW35-pw9nsf5VKdUyqBoyIaF4"
-    }
-}
-
-当你成功获取到Token,你将看到这些:
-this is ShenYu Admin client token -> 
eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyTmFtZSI6ImFkbWluIiwiZXhwIjoxNjUwNjc5OTQ2fQ.K92Il2kmJ0X3FgjY4igW35-pw9nsf5VKdUyqBoyIaF4
-
-```
-
-
-**3.注册元数据到ShenYu网关. (需要上一步的adminToken去调用)**
-```go
-//元数据注册(需要上一步的token: adminToken.AdminTokenData)
-metaData := &model.MetaDataRegister{
-               AppName: "testMetaDataRegister", //需要用户提供
-               Path:    "/your/path",           //需要用户提供
-               Enabled: true,                   //需要用户提供
-               Host:    "127.0.0.1",            //需要用户提供
-               Port:    "8080",                 //需要用户提供
-       }
-       result, err := clients.RegisterMetaData(adminToken.AdminTokenData, 
metaData)
-       if err != nil {
-               logger.Warn("MetaDataRegister has error:",err)
-       }
-       logger.Info("finish register metadata ,the result is->", result)
-
-
-当你注册成功,你将看到这些:
-finish register metadata ,the result is-> true
-```
-
-**4.以URL的方式注册到ShenYu网关. (需要上一步的adminToken去调用)**
-```go
-//URI注册(需要上一步的token: adminToken.AdminTokenData)
-//初始化 URI注册
-       urlRegister := &model.URIRegister{
-               Protocol:    "testMetaDataRegister", //需要用户提供
-               AppName:     "testURLRegister",      //需要用户提供
-               ContextPath: "contextPath",          //需要用户提供
-               RPCType:     constants.RPCTYPE_HTTP, //需要用户提供
-               Host:        "127.0.0.1",            //需要用户提供
-               Port:        "8080",                 //需要用户提供
-       }
-       result, err = clients.UrlRegister(adminToken.AdminTokenData, 
urlRegister)
-       if err != nil {
-               logger.Warn("UrlRegister has error:", err)
-       }
-       logger.Info("finish UrlRegister ,the result is->", result)
-         //做你的逻辑处理
-```
-
-**5.完整的成功日志**
-```go
-2022-05-05 15:43:56 [INFO] 
[github.com/apache/shenyu-client-golang/clients/admin_client/shenyu_admin_client.go:51]
 Get ShenYu Admin response, body is -> {200 login dashboard user success {1 
admin 1 true 2018-06-23 15:12:22 2022-03-09 15:08:14 
eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyTmFtZSI6ImFkbWluIiwiZXhwIjoxNjUxODIzMDM2fQ.gMzPKaNlXEd1Q517qQamOpg358W9L0-0cZN3lkk06WE}}
-2022-05-05 15:43:56 [INFO] 
[github.com/apache/shenyu-client-golang/example/http_client/main.go:40] this is 
ShenYu Admin client token -> 
eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyTmFtZSI6ImFkbWluIiwiZXhwIjoxNjUxODIzMDM2fQ.gMzPKaNlXEd1Q517qQamOpg358W9L0-0cZN3lkk06WE
-2022-05-05 15:43:57 [INFO] 
[github.com/apache/shenyu-client-golang/example/http_client/main.go:55] finish 
register metadata ,the result is-> true
-2022-05-05 15:43:57 [INFO] 
[github.com/apache/shenyu-client-golang/example/http_client/main.go:70] finish 
UrlRegister ,the result is-> true
-
-```
-
-
-
----
-## 以Nacos方式注册到ShenYu网关
-
-**1.首先确保你的nacos环境是正确,然后设置这些nacos必要的参数 .**
-```go
-//设置nacos环境配置
-    ncp := &nacos_client.NacosClientParam{
-        IpAddr:      "console.nacos.io",
-        Port:        80,
-        NamespaceId: "e525eafa-f7d7-4029-83d9-008937f9d468",
-}
-```
-
-**2. 准备你要注册服务的元数据信息**
-```go
-//元数据是必要的参数,这将注册到shenyu网关使用
-metaData := &model.URIRegister{
-        Protocol:    "testMetaDataRegister", //需要用户提供
-        AppName:     "testURLRegister",      //需要用户提供
-        ContextPath: "contextPath",          //需要用户提供
-        RPCType:     constants.RPCTYPE_HTTP, //需要用户提供
-        Host:        "127.0.0.1",            //需要用户提供
-        Port:        "8080",                 //需要用户提供
-}
-    metaDataStringJson, _ := json.Marshal(metaData)
-```
-
-**3.准备你要注册服务的实例消息(包括元数据)**
-```go
-//初始化Nacos注册实例信息
-    nacosRegisterInstance := vo.RegisterInstanceParam{
-        Ip:          "10.0.0.10", //需要用户提供
-        Port:        8848,        //需要用户提供
-        ServiceName: "demo.go",   //需要用户提供
-        Weight:      10,          //需要用户提供
-        Enable:      true,        //需要用户提供
-        Healthy:     true,        //需要用户提供
-        Ephemeral:   true,        //需要用户提供
-        Metadata:    map[string]string{"contextPath": "contextPath", 
"uriMetadata": string(metaDataStringJson)},
-}
-```
-
-**4. 获取ShenYu nacos的客户端**
-```go
-    sdkClient := shenyu_sdk_client.GetFactoryClient(constants.NACOS_CLIENT)
-    result, createResult, err := sdkClient.NewClient(ncp)
-        if !createResult && err != nil {
-        logger.Fatal("Create nacos client error : %+V", err)
-    }
-
-       nc := &nacos_client.ShenYuNacosClient{
-               NacosClient: result.(*naming_client.NamingClient),
-       }
-```
-
-
-**5.使用客户端调用RegisterNacosInstance方法**
-```go
-    registerResult, err := nc.RegisterServiceInstance(nacosRegisterInstance)
-        if !registerResult && err != nil {
-    logger.Fatal("Register nacos Instance error : %+V", err)
-}
-        //do your logic
-```
-
-**6.使用客户端调用DeregisterServiceInstance方法**
-```go
-//DeregisterServiceInstance start
-    deregisterInstanceParam := vo.DeregisterInstanceParam{
-    Ip:          "10.0.0.10",
-    Port:        8848,
-    ServiceName: "demo.go",
-    Ephemeral:   true,
-    //Cluster:     "cluster-a", // default value is DEFAULT
-    GroupName: "group-a", // default value is DEFAULT_GROUP
-}
-
-    serviceInstance, err := 
nc.DeregisterServiceInstance(deregisterInstanceParam)
-        if !serviceInstance && err != nil {
-        logger.Info("DeregisterServiceInstance result : %+V", serviceInstance)
-}
-        //do your logic
-```
-
-**7.使用客户端调用GetServiceInstanceInfo方法**
-```go
-         instanceInfo, err := nc.GetServiceInstanceInfo(queryData)
-            if instanceInfo == nil {
-               logger.Fatal("Register nacos Instance error : %+V", err)
-            }
-        //do your logic
-```
-
-**完整的成功日志**
-```go
-2022-06-27 10:56:17 [INFO] 
[github.com/shenyu-client-golang/clients/nacos_client/nacos_client.go:92] 
RegisterServiceInstance,result:true
-
-,param:{Ip:10.0.0.10 Port:8848 Weight:10 Enable:true Healthy:true 
Metadata:map[contextPath:contextPath 
uriMetadata:{"protocol":"testMetaDataRegister","appName":"testURLRegister","contextPath":"contextPath","rpcType":"http","host":"127.0.0.1","port":"8080"}]
 ClusterName: ServiceName:demo.go GroupName: Ephemeral:true}
-
-```
-
-
+## 开始
 
+* Http 示例  [简体中文](doc/HTTP_CN.md) | [English](doc/HTTP_EN.md)  
+* Nacos 示例 [简体中文](doc/NACOS_CN.md) | [English](doc/NACOS_EN.md)
+* Zookeeper 示例 [简体中文](doc/ZK_CN.md) | [English](doc/ZK_EN.md)
+* Consul 示例  [简体中文](doc/CONSUL_CN.md) | [English](doc/CONSUL_EN.md)
 
 ---
-## The Zookeeper type Register
-
-**1.首先确保你的Zookeeper环境是正确,然后设置这些Zookeeper必要的参数 .**
-```go
-    //开始创建ShenYuZkClient 
-    zcp := &zk_client.ZkClientParam{
-    ZkServers: []string{"127.0.0.1:2181"}, ////需要用户提供
-    ZkRoot:    "/api",                     ////需要用户提供
-    }
-    
-    sdkClient := shenyu_sdk_client.GetFactoryClient(constants.ZOOKEEPER_CLIENT)
-    client, createResult, err := sdkClient.NewClient(zcp)
-    
-    if !createResult && err != nil {
-    logger.Fatal("Create ShenYuZkClient error : %+V", err)
-    }
-    
-    zc := client.(*zk_client.ShenYuZkClient)
-    defer zc.Close()
-```
-
-**2.  准备你要注册服务的元数据信息**
-```go
-//元数据是必要的参数,这将注册到shenyu网关使用
-    metaData1 := &model.MetaDataRegister{
-        AppName: "testMetaDataRegister1", //需要用户提供
-        Path:    "your/path1",            //需要用户提供
-        Enabled: true,                    //需要用户提供
-        Host:    "127.0.0.1",             //需要用户提供
-        Port:    "8080",                  //需要用户提供
-    }
-    
-    metaData2 := &model.MetaDataRegister{
-        AppName: "testMetaDataRegister2", //需要用户提供
-        Path:    "your/path2",            //需要用户提供
-        Enabled: true,                    //需要用户提供
-        Host:    "127.0.0.1",             //需要用户提供
-        Port:    "8181",                  //需要用户提供
-    }
-```
-
-**3.使用客户端进行节点信息注册**
-```go
-   //可以进行多个实例注册
-    registerResult1, err := zc.RegisterServiceInstance(metaData1)
-        if !registerResult1 && err != nil {
-             logger.Fatal("Register zk Instance error : %+V", err)
-        }
-    
-    registerResult2, err := zc.RegisterServiceInstance(metaData2)
-        if !registerResult2 && err != nil {
-             logger.Fatal("Register zk Instance error : %+V", err)
-        }
-    //做你的逻辑处理
-```
-
-**4.使用客户端进行注册节点信息删除**
-```go
-    //选择性调用
-    deRegisterResult1, err := zc.DeregisterServiceInstance(metaData1)
-        if err != nil {
-            panic(err)
-        }
 
-    deRegisterResult2, err := zc.DeregisterServiceInstance(metaData2)
-        if err != nil {
-            panic(err)
-        }
-```
-
-**5.使用客户端获取注册节点的信息**
-```go
-   //开始调用GetServiceInstanceInfo
-    instanceDetail, err := zc.GetServiceInstanceInfo(metaData1)
-    nodes1, ok := instanceDetail.([]*model.MetaDataRegister)
-    if !ok {
-    logger.Fatal("get zk client metaData error %+v:", err)
-    }
-    
-    //range nodes
-    for index, node := range nodes1 {
-       nodeJson, err := json.Marshal(node)
-        if err == nil {
-        logger.Info("GetNodesInfo ,success Index", index, string(nodeJson))
-        }
-}
-
-    instanceDetail2, err := zc.GetServiceInstanceInfo(metaData2)
-    nodes2, ok := instanceDetail2.([]*model.MetaDataRegister)
-    if !ok {
-    logger.Fatal("get zk client metaData error %+v:", err)
-    }
-
-```
-
-## 完整的成功日志
-```go
-2022-07-13 16:09:31 [INFO] 
[github.com/shenyu-client-golang/example/zk_client/main.go:105] GetNodesInfo 
,success Index 0 
{"appName":"testMetaDataRegister1","path":"your/path1","contextPath":"","ruleName":"","rpcType":"","enabled":true,"host":"127.0.0.1","port":"8080","pluginNames":null,"registerMetaData":false,"timeMillis":0}
-2022-07-13 16:09:31 [INFO] 
[github.com/shenyu-client-golang/example/zk_client/main.go:119] GetNodesInfo 
,success Index 0 
{"appName":"testMetaDataRegister2","path":"your/path2","contextPath":"","ruleName":"","rpcType":"","enabled":true,"host":"127.0.0.1","port":"8181","pluginNames":null,"registerMetaData":false,"timeMillis":0}
-2022-07-13 16:09:31 [INFO] 
[github.com/shenyu-client-golang/example/zk_client/main.go:132] GetNodesInfo 
,success Index 0 
{"appName":"testMetaDataRegister3","path":"your/path3","contextPath":"","ruleName":"","rpcType":"","enabled":true,"host":"127.0.0.1","port":"8282","pluginNames":null,"registerMetaData":false,"timeMillis":0}
-2022-07-13 16:09:31 [INFO] 
[github.com/shenyu-client-golang/example/zk_client/main.go:139] > 
DeregisterServiceInstance start
-2022-07-13 16:09:31 [INFO] 
[github.com/shenyu-client-golang/clients/zk_client/zk_client.go:213] ensureName 
check, path is -> /api/testMetaDataRegister1
-2022-07-13 16:09:31 [INFO] 
[github.com/shenyu-client-golang/clients/zk_client/zk_client.go:215] ensureName 
check result is -> true
-2022-07-13 16:09:31 [INFO] 
[github.com/shenyu-client-golang/clients/zk_client/zk_client.go:213] ensureName 
check, path is -> /api/testMetaDataRegister2
-2022-07-13 16:09:31 [INFO] 
[github.com/shenyu-client-golang/clients/zk_client/zk_client.go:215] ensureName 
check result is -> true
-2022-07-13 16:09:31 [INFO] 
[github.com/shenyu-client-golang/clients/zk_client/zk_client.go:213] ensureName 
check, path is -> /api/testMetaDataRegister3
-2022-07-13 16:09:31 [INFO] 
[github.com/shenyu-client-golang/clients/zk_client/zk_client.go:215] ensureName 
check result is -> true
-2022-07-13 16:09:31 [INFO] 
[github.com/shenyu-client-golang/example/zk_client/main.go:156] 
DeregisterServiceInstance success !
-```
diff --git a/doc/CONSUL_CN.md b/doc/CONSUL_CN.md
new file mode 100644
index 0000000..f01dd91
--- /dev/null
+++ b/doc/CONSUL_CN.md
@@ -0,0 +1,180 @@
+
+---
+## 以Consul方式注册到ShenYu网关
+
+**1.首先确保你的Consul环境是正确,然后设置这些Consul必要的参数.**
+```go
+    //Create ShenYuConsulClient  start
+    ccp := &consul_client.ConsulClientParam{
+        Host:  "127.0.0.1",  //用户选择性提供
+        Port:  8500,         //用户选择性提供
+        Token: "",
+        }
+    
+    sdkClient := shenyu_sdk_client.GetFactoryClient(constants.CONSUL_CLIENT)
+    client, createResult, err := sdkClient.NewClient(ccp)
+    
+    if !createResult && err != nil {
+    logger.Fatal("Create ShenYuConsulClient error : %+V", err)
+    }
+    
+    scc := client.(*consul_client.ShenYuConsulClient)
+    //Create ShenYuConsulClient end
+```
+
+**2. 准备你要注册服务的元数据信息**
+```go
+//metaData is necessary param, this will be register to shenyu gateway to use
+    uuid1, _ := uuid.GenerateUUID()
+    uuid2, _ := uuid.GenerateUUID()
+    uuid3, _ := uuid.GenerateUUID()
+
+    //RegisterServiceInstance start
+    //init MetaDataRegister
+    metaData1 := &model.MetaDataRegister{
+        ServiceId: uuid1,
+        AppName:   "testMetaDataRegister1", //需要用户提供
+        Path:      "/your/path1",           //需要用户提供
+        Enabled:   true,                    //需要用户提供
+        Host:      "127.0.0.1",             //需要用户提供
+        Port:      "8080",                  //需要用户提供
+        RPCType:   "http",                  //需要用户提供
+    }
+    
+    metaData2 := &model.MetaDataRegister{
+        ServiceId: uuid2,
+        AppName:   "testMetaDataRegister2", //需要用户提供
+        Path:      "/your/path2",           //需要用户提供
+        Enabled:   true,                    //需要用户提供
+        Host:      "127.0.0.1",             //需要用户提供
+        Port:      "8181",                  //需要用户提供
+        RPCType:   "http",                  //需要用户提供
+    }
+    
+    metaData3 := &model.MetaDataRegister{
+        ServiceId: uuid3,
+        AppName:   "testMetaDataRegister3", //需要用户提供
+        Path:      "/your/path3",           //需要用户提供
+        Enabled:   true,                    //需要用户提供
+        Host:      "127.0.0.1",             //需要用户提供
+        Port:      "8282",                  //需要用户提供
+        RPCType:   "http",                  //需要用户提供
+    }
+```
+
+**3.使用客户端进行节点信息注册**
+```go
+   //register multiple metaData
+    registerResult1, err := scc.RegisterServiceInstance(metaData1)
+    if !registerResult1 && err != nil {
+    logger.Fatal("Register consul Instance error : %+V", err)
+    }
+    
+    registerResult2, err := scc.RegisterServiceInstance(metaData2)
+    if !registerResult2 && err != nil {
+    logger.Fatal("Register consul Instance error : %+V", err)
+    }
+    
+    registerResult3, err := scc.RegisterServiceInstance(metaData3)
+    if !registerResult3 && err != nil {
+    logger.Fatal("Register consul Instance error : %+V", err)
+    }
+//RegisterServiceInstance end
+    //do your logic
+```
+
+**4.使用客户端进行注册节点信息删除**
+```go
+    //your can chose to invoke,not require
+    //DeregisterServiceInstance start
+    logger.Info("> DeregisterServiceInstance start")
+    deRegisterResult1, err := scc.DeregisterServiceInstance(metaData1)
+    if err != nil {
+    panic(err)
+    }
+    
+    deRegisterResult2, err := scc.DeregisterServiceInstance(metaData2)
+    if err != nil {
+    panic(err)
+    }
+    
+    deRegisterResult3, err := scc.DeregisterServiceInstance(metaData3)
+    if err != nil {
+    panic(err)
+    }
+    
+    if deRegisterResult1 && deRegisterResult2 && deRegisterResult3 {
+    logger.Info("DeregisterServiceInstance success !")
+    }
+    //DeregisterServiceInstance end
+```
+
+**5.使用客户端获取注册节点的信息**
+```go
+    //GetServiceInstanceInfo start
+    instanceDetail, err := scc.GetServiceInstanceInfo(metaData1)
+    nodes1, ok := instanceDetail.([]*model.MetaDataRegister)
+        if !ok {
+        logger.Fatal("get consul client metaData error %+v:", err)
+    }
+    
+    //range nodes
+    for index, node := range nodes1 {
+    nodeJson, err := json.Marshal(node)
+    if err == nil {
+        logger.Info("GetNodesInfo ,success Index", index, string(nodeJson))
+        }
+    }
+    
+    instanceDetail2, err := scc.GetServiceInstanceInfo(metaData2)
+    nodes2, ok := instanceDetail2.([]*model.MetaDataRegister)
+        if !ok {
+        logger.Fatal("get consul client metaData error %+v:", err)
+    }
+    
+    //range nodes2
+    for index, node := range nodes2 {
+    nodeJson, err := json.Marshal(node)
+    if err == nil {
+        logger.Info("GetNodesInfo ,success Index", index, string(nodeJson))
+        }
+    }
+
+    //range nodes3
+    instanceDetail3, err := scc.GetServiceInstanceInfo(metaData3)
+    nodes3, ok := instanceDetail3.([]*model.MetaDataRegister)
+    if !ok {
+        logger.Fatal("get consul client metaData error %+v:", err)
+        }
+    
+    for index, node := range nodes3 {
+    nodeJson, err := json.Marshal(node)
+    if err == nil {
+        logger.Info("GetNodesInfo ,success Index", index, string(nodeJson))
+        }
+    }
+//GetServiceInstanceInfo end
+
+```
+
+## 完整的成功日志
+```go
+
+2022-07-26 18:05:43 [INFO] 
[github.com/apache/shenyu-client-golang/clients/consul_client/consul_client.go:77]
 Create default consul client success!
+2022-07-26 18:05:43 [INFO] 
[github.com/apache/shenyu-client-golang/clients/consul_client/consul_client.go:160]
 RegisterServiceInstance,result:true
+2022-07-26 18:05:43 [INFO] 
[github.com/apache/shenyu-client-golang/clients/consul_client/consul_client.go:160]
 RegisterServiceInstance,result:true
+2022-07-26 18:05:43 [INFO] 
[github.com/apache/shenyu-client-golang/clients/consul_client/consul_client.go:160]
 RegisterServiceInstance,result:true
+2022-07-26 18:05:44 [INFO] 
[github.com/apache/shenyu-client-golang/clients/consul_client/consul_client.go:121]
 GetServiceInstanceInfo,instance:&{AppName:testMetaDataRegister1 Path: 
ContextPath: RuleName: RPCType: Enabled:false Host:172.22.0.5 Port:8080 
PluginNames:[] RegisterMetaData:false TimeMillis:0 
ServiceId:testMetaDataRegister1}
+2022-07-26 18:05:44 [INFO] 
[github.com/apache/shenyu-client-golang/example/consul_client/consul_client.go:115]
 GetNodesInfo ,success Index 0 
{"appName":"testMetaDataRegister1","path":"","contextPath":"","ruleName":"","rpcType":"","enabled":false,"host":"172.22.0.5","port":"8080","pluginNames":null,"registerMetaData":false,"timeMillis":0,"serviceId":"testMetaDataRegister1"}
+2022-07-26 18:05:44 [INFO] 
[github.com/apache/shenyu-client-golang/clients/consul_client/consul_client.go:121]
 GetServiceInstanceInfo,instance:&{AppName:testMetaDataRegister2 Path: 
ContextPath: RuleName: RPCType: Enabled:false Host:172.22.0.5 Port:8181 
PluginNames:[] RegisterMetaData:false TimeMillis:0 
ServiceId:testMetaDataRegister2}
+2022-07-26 18:05:44 [INFO] 
[github.com/apache/shenyu-client-golang/example/consul_client/consul_client.go:129]
 GetNodesInfo ,success Index 0 
{"appName":"testMetaDataRegister2","path":"","contextPath":"","ruleName":"","rpcType":"","enabled":false,"host":"172.22.0.5","port":"8181","pluginNames":null,"registerMetaData":false,"timeMillis":0,"serviceId":"testMetaDataRegister2"}
+2022-07-26 18:05:44 [INFO] 
[github.com/apache/shenyu-client-golang/clients/consul_client/consul_client.go:121]
 GetServiceInstanceInfo,instance:&{AppName:testMetaDataRegister3 Path: 
ContextPath: RuleName: RPCType: Enabled:false Host:172.22.0.5 Port:8282 
PluginNames:[] RegisterMetaData:false TimeMillis:0 
ServiceId:testMetaDataRegister3}
+2022-07-26 18:05:44 [INFO] 
[github.com/apache/shenyu-client-golang/example/consul_client/consul_client.go:143]
 GetNodesInfo ,success Index 0 
{"appName":"testMetaDataRegister3","path":"","contextPath":"","ruleName":"","rpcType":"","enabled":false,"host":"172.22.0.5","port":"8282","pluginNames":null,"registerMetaData":false,"timeMillis":0,"serviceId":"testMetaDataRegister3"}
+2022-07-26 18:05:44 [INFO] 
[github.com/apache/shenyu-client-golang/example/consul_client/consul_client.go:150]
 > DeregisterServiceInstance start
+2022-07-26 18:05:44 [INFO] 
[github.com/apache/shenyu-client-golang/clients/consul_client/consul_client.go:100]
 DeregisterServiceInstance,result:true
+2022-07-26 18:05:44 [INFO] 
[github.com/apache/shenyu-client-golang/clients/consul_client/consul_client.go:100]
 DeregisterServiceInstance,result:true
+2022-07-26 18:05:44 [INFO] 
[github.com/apache/shenyu-client-golang/clients/consul_client/consul_client.go:100]
 DeregisterServiceInstance,result:true
+2022-07-26 18:05:44 [INFO] 
[github.com/apache/shenyu-client-golang/example/consul_client/consul_client.go:167]
 DeregisterServiceInstance success !
+
+```
+
diff --git a/doc/CONSUL_EN.md b/doc/CONSUL_EN.md
new file mode 100644
index 0000000..760fdc0
--- /dev/null
+++ b/doc/CONSUL_EN.md
@@ -0,0 +1,360 @@
+
+---
+## 以Http方式注册到ShenYu网关
+
+**1.Fist make sure your Consul env is correct,the set this necessary param.**
+```go
+    //Create ShenYuConsulClient  start
+    ccp := &consul_client.ConsulClientParam{
+        Host:  "127.0.0.1",  //user choice provide
+        Port:  8500,         //user choice provide
+        Token: "",
+        }
+    
+    sdkClient := shenyu_sdk_client.GetFactoryClient(constants.CONSUL_CLIENT)
+    client, createResult, err := sdkClient.NewClient(ccp)
+    
+    if !createResult && err != nil {
+    logger.Fatal("Create ShenYuConsulClient error : %+V", err)
+    }
+    
+    scc := client.(*consul_client.ShenYuConsulClient)
+    //Create ShenYuConsulClient end
+```
+
+**2. Prepare your service metaData to register**
+```go
+//metaData is necessary param, this will be register to shenyu gateway to use
+    uuid1, _ := uuid.GenerateUUID()
+    uuid2, _ := uuid.GenerateUUID()
+    uuid3, _ := uuid.GenerateUUID()
+
+    //RegisterServiceInstance start
+    //init MetaDataRegister
+    metaData1 := &model.MetaDataRegister{
+        ServiceId: uuid1,
+        AppName:   "testMetaDataRegister1", //require user provide
+        Path:      "/your/path1",           //require user provide
+        Enabled:   true,                    //require user provide
+        Host:      "127.0.0.1",             //require user provide
+        Port:      "8080",                  //require user provide
+        RPCType:   "http",                  //require user provide
+    }
+    
+    metaData2 := &model.MetaDataRegister{
+        ServiceId: uuid2,
+        AppName:   "testMetaDataRegister2", //require user provide
+        Path:      "/your/path2",           //require user provide
+        Enabled:   true,                    //require user provide
+        Host:      "127.0.0.1",             //require user provide
+        Port:      "8181",                  //require user provide
+        RPCType:   "http",                  //require user provide
+    }
+    
+    metaData3 := &model.MetaDataRegister{
+        ServiceId: uuid3,
+        AppName:   "testMetaDataRegister3", //require user provide
+        Path:      "/your/path3",           //require user provide
+        Enabled:   true,                    //require user provide
+        Host:      "127.0.0.1",             //require user provide
+        Port:      "8282",                  //require user provide
+        RPCType:   "http",                  //require user provide
+    }
+```
+
+**3.use client to invoke RegisterServiceInstance**
+```go
+   //register multiple metaData
+    registerResult1, err := scc.RegisterServiceInstance(metaData1)
+    if !registerResult1 && err != nil {
+    logger.Fatal("Register consul Instance error : %+V", err)
+    }
+    
+    registerResult2, err := scc.RegisterServiceInstance(metaData2)
+    if !registerResult2 && err != nil {
+    logger.Fatal("Register consul Instance error : %+V", err)
+    }
+    
+    registerResult3, err := scc.RegisterServiceInstance(metaData3)
+    if !registerResult3 && err != nil {
+    logger.Fatal("Register consul Instance error : %+V", err)
+    }
+//RegisterServiceInstance end
+    //do your logic
+```
+
+**4.use client to invoke DeregisterServiceInstance**
+```go
+    //your can chose to invoke,not require
+    //DeregisterServiceInstance start
+    logger.Info("> DeregisterServiceInstance start")
+    deRegisterResult1, err := scc.DeregisterServiceInstance(metaData1)
+    if err != nil {
+    panic(err)
+    }
+    
+    deRegisterResult2, err := scc.DeregisterServiceInstance(metaData2)
+    if err != nil {
+    panic(err)
+    }
+    
+    deRegisterResult3, err := scc.DeregisterServiceInstance(metaData3)
+    if err != nil {
+    panic(err)
+    }
+    
+    if deRegisterResult1 && deRegisterResult2 && deRegisterResult3 {
+    logger.Info("DeregisterServiceInstance success !")
+    }
+    //DeregisterServiceInstance end
+```
+
+**5.use client to GetServiceInstanceInfo**
+```go
+    //GetServiceInstanceInfo start
+    instanceDetail, err := scc.GetServiceInstanceInfo(metaData1)
+    nodes1, ok := instanceDetail.([]*model.MetaDataRegister)
+        if !ok {
+        logger.Fatal("get consul client metaData error %+v:", err)
+    }
+    
+    //range nodes
+    for index, node := range nodes1 {
+    nodeJson, err := json.Marshal(node)
+    if err == nil {
+        logger.Info("GetNodesInfo ,success Index", index, string(nodeJson))
+        }
+    }
+    
+    instanceDetail2, err := scc.GetServiceInstanceInfo(metaData2)
+    nodes2, ok := instanceDetail2.([]*model.MetaDataRegister)
+        if !ok {
+        logger.Fatal("get consul client metaData error %+v:", err)
+    }
+    
+    //range nodes2
+    for index, node := range nodes2 {
+    nodeJson, err := json.Marshal(node)
+    if err == nil {
+        logger.Info("GetNodesInfo ,success Index", index, string(nodeJson))
+        }
+    }
+
+    //range nodes3
+    instanceDetail3, err := scc.GetServiceInstanceInfo(metaData3)
+    nodes3, ok := instanceDetail3.([]*model.MetaDataRegister)
+    if !ok {
+        logger.Fatal("get consul client metaData error %+v:", err)
+        }
+    
+    for index, node := range nodes3 {
+    nodeJson, err := json.Marshal(node)
+    if err == nil {
+        logger.Info("GetNodesInfo ,success Index", index, string(nodeJson))
+        }
+    }
+//GetServiceInstanceInfo end
+
+```
+
+## Entire Success log
+```go
+
+2022-07-26 18:05:43 [INFO] 
[github.com/apache/shenyu-client-golang/clients/consul_client/consul_client.go:77]
 Create default consul client success!
+2022-07-26 18:05:43 [INFO] 
[github.com/apache/shenyu-client-golang/clients/consul_client/consul_client.go:160]
 RegisterServiceInstance,result:true
+2022-07-26 18:05:43 [INFO] 
[github.com/apache/shenyu-client-golang/clients/consul_client/consul_client.go:160]
 RegisterServiceInstance,result:true
+2022-07-26 18:05:43 [INFO] 
[github.com/apache/shenyu-client-golang/clients/consul_client/consul_client.go:160]
 RegisterServiceInstance,result:true
+2022-07-26 18:05:44 [INFO] 
[github.com/apache/shenyu-client-golang/clients/consul_client/consul_client.go:121]
 GetServiceInstanceInfo,instance:&{AppName:testMetaDataRegister1 Path: 
ContextPath: RuleName: RPCType: Enabled:false Host:172.22.0.5 Port:8080 
PluginNames:[] RegisterMetaData:false TimeMillis:0 
ServiceId:testMetaDataRegister1}
+2022-07-26 18:05:44 [INFO] 
[github.com/apache/shenyu-client-golang/example/consul_client/consul_client.go:115]
 GetNodesInfo ,success Index 0 
{"appName":"testMetaDataRegister1","path":"","contextPath":"","ruleName":"","rpcType":"","enabled":false,"host":"172.22.0.5","port":"8080","pluginNames":null,"registerMetaData":false,"timeMillis":0,"serviceId":"testMetaDataRegister1"}
+2022-07-26 18:05:44 [INFO] 
[github.com/apache/shenyu-client-golang/clients/consul_client/consul_client.go:121]
 GetServiceInstanceInfo,instance:&{AppName:testMetaDataRegister2 Path: 
ContextPath: RuleName: RPCType: Enabled:false Host:172.22.0.5 Port:8181 
PluginNames:[] RegisterMetaData:false TimeMillis:0 
ServiceId:testMetaDataRegister2}
+2022-07-26 18:05:44 [INFO] 
[github.com/apache/shenyu-client-golang/example/consul_client/consul_client.go:129]
 GetNodesInfo ,success Index 0 
{"appName":"testMetaDataRegister2","path":"","contextPath":"","ruleName":"","rpcType":"","enabled":false,"host":"172.22.0.5","port":"8181","pluginNames":null,"registerMetaData":false,"timeMillis":0,"serviceId":"testMetaDataRegister2"}
+2022-07-26 18:05:44 [INFO] 
[github.com/apache/shenyu-client-golang/clients/consul_client/consul_client.go:121]
 GetServiceInstanceInfo,instance:&{AppName:testMetaDataRegister3 Path: 
ContextPath: RuleName: RPCType: Enabled:false Host:172.22.0.5 Port:8282 
PluginNames:[] RegisterMetaData:false TimeMillis:0 
ServiceId:testMetaDataRegister3}
+2022-07-26 18:05:44 [INFO] 
[github.com/apache/shenyu-client-golang/example/consul_client/consul_client.go:143]
 GetNodesInfo ,success Index 0 
{"appName":"testMetaDataRegister3","path":"","contextPath":"","ruleName":"","rpcType":"","enabled":false,"host":"172.22.0.5","port":"8282","pluginNames":null,"registerMetaData":false,"timeMillis":0,"serviceId":"testMetaDataRegister3"}
+2022-07-26 18:05:44 [INFO] 
[github.com/apache/shenyu-client-golang/example/consul_client/consul_client.go:150]
 > DeregisterServiceInstance start
+2022-07-26 18:05:44 [INFO] 
[github.com/apache/shenyu-client-golang/clients/consul_client/consul_client.go:100]
 DeregisterServiceInstance,result:true
+2022-07-26 18:05:44 [INFO] 
[github.com/apache/shenyu-client-golang/clients/consul_client/consul_client.go:100]
 DeregisterServiceInstance,result:true
+2022-07-26 18:05:44 [INFO] 
[github.com/apache/shenyu-client-golang/clients/consul_client/consul_client.go:100]
 DeregisterServiceInstance,result:true
+2022-07-26 18:05:44 [INFO] 
[github.com/apache/shenyu-client-golang/example/consul_client/consul_client.go:167]
 DeregisterServiceInstance success !
+
+```
+
+
+---
+## The Consul type Register
+
+**1.Fist make sure your Consul env is correct,the set this necessary param.**
+```go
+    //Create ShenYuConsulClient  start
+    ccp := &consul_client.ConsulClientParam{
+        Host:  "127.0.0.1",  //require user provide
+        Port:  8500,         //require user provide
+        Token: "",
+        }
+    
+    sdkClient := shenyu_sdk_client.GetFactoryClient(constants.CONSUL_CLIENT)
+    client, createResult, err := sdkClient.NewClient(ccp)
+    
+    if !createResult && err != nil {
+    logger.Fatal("Create ShenYuConsulClient error : %+V", err)
+    }
+    
+    scc := client.(*consul_client.ShenYuConsulClient)
+    //Create ShenYuConsulClient end
+```
+
+**2. Prepare your service metaData to register**
+```go
+//metaData is necessary param, this will be register to shenyu gateway to use
+    uuid1, _ := uuid.GenerateUUID()
+    uuid2, _ := uuid.GenerateUUID()
+    uuid3, _ := uuid.GenerateUUID()
+
+    //RegisterServiceInstance start
+    //init MetaDataRegister
+    metaData1 := &model.MetaDataRegister{
+        ServiceId: uuid1,
+        AppName:   "testMetaDataRegister1", //require user provide
+        Path:      "/your/path1",           //require user provide
+        Enabled:   true,                    //require user provide
+        Host:      "127.0.0.1",             //require user provide
+        Port:      "8080",                  //require user provide
+        RPCType:   "http",                  //require user provide
+    }
+    
+    metaData2 := &model.MetaDataRegister{
+        ServiceId: uuid2,
+        AppName:   "testMetaDataRegister2", //require user provide
+        Path:      "/your/path2",           //require user provide
+        Enabled:   true,                    //require user provide
+        Host:      "127.0.0.1",             //require user provide
+        Port:      "8181",                  //require user provide
+        RPCType:   "http",                  //require user provide
+    }
+    
+    metaData3 := &model.MetaDataRegister{
+        ServiceId: uuid3,
+        AppName:   "testMetaDataRegister3", //require user provide
+        Path:      "/your/path3",           //require user provide
+        Enabled:   true,                    //require user provide
+        Host:      "127.0.0.1",             //require user provide
+        Port:      "8282",                  //require user provide
+        RPCType:   "http",                  //require user provide
+    }
+```
+
+**3.use client to invoke RegisterServiceInstance**
+```go
+   //register multiple metaData
+    registerResult1, err := scc.RegisterServiceInstance(metaData1)
+    if !registerResult1 && err != nil {
+    logger.Fatal("Register consul Instance error : %+V", err)
+    }
+    
+    registerResult2, err := scc.RegisterServiceInstance(metaData2)
+    if !registerResult2 && err != nil {
+    logger.Fatal("Register consul Instance error : %+V", err)
+    }
+    
+    registerResult3, err := scc.RegisterServiceInstance(metaData3)
+    if !registerResult3 && err != nil {
+    logger.Fatal("Register consul Instance error : %+V", err)
+    }
+//RegisterServiceInstance end
+    //do your logic
+```
+
+**4.use client to invoke DeregisterServiceInstance**
+```go
+    //your can chose to invoke,not require
+    //DeregisterServiceInstance start
+    logger.Info("> DeregisterServiceInstance start")
+    deRegisterResult1, err := scc.DeregisterServiceInstance(metaData1)
+    if err != nil {
+    panic(err)
+    }
+    
+    deRegisterResult2, err := scc.DeregisterServiceInstance(metaData2)
+    if err != nil {
+    panic(err)
+    }
+    
+    deRegisterResult3, err := scc.DeregisterServiceInstance(metaData3)
+    if err != nil {
+    panic(err)
+    }
+    
+    if deRegisterResult1 && deRegisterResult2 && deRegisterResult3 {
+    logger.Info("DeregisterServiceInstance success !")
+    }
+    //DeregisterServiceInstance end
+```
+
+**5.use client to GetServiceInstanceInfo**
+```go
+    //GetServiceInstanceInfo start
+    instanceDetail, err := scc.GetServiceInstanceInfo(metaData1)
+    nodes1, ok := instanceDetail.([]*model.MetaDataRegister)
+        if !ok {
+        logger.Fatal("get consul client metaData error %+v:", err)
+    }
+    
+    //range nodes
+    for index, node := range nodes1 {
+    nodeJson, err := json.Marshal(node)
+    if err == nil {
+        logger.Info("GetNodesInfo ,success Index", index, string(nodeJson))
+        }
+    }
+    
+    instanceDetail2, err := scc.GetServiceInstanceInfo(metaData2)
+    nodes2, ok := instanceDetail2.([]*model.MetaDataRegister)
+        if !ok {
+        logger.Fatal("get consul client metaData error %+v:", err)
+    }
+    
+    //range nodes2
+    for index, node := range nodes2 {
+    nodeJson, err := json.Marshal(node)
+    if err == nil {
+        logger.Info("GetNodesInfo ,success Index", index, string(nodeJson))
+        }
+    }
+
+    //range nodes3
+    instanceDetail3, err := scc.GetServiceInstanceInfo(metaData3)
+    nodes3, ok := instanceDetail3.([]*model.MetaDataRegister)
+    if !ok {
+        logger.Fatal("get consul client metaData error %+v:", err)
+        }
+    
+    for index, node := range nodes3 {
+    nodeJson, err := json.Marshal(node)
+    if err == nil {
+        logger.Info("GetNodesInfo ,success Index", index, string(nodeJson))
+        }
+    }
+//GetServiceInstanceInfo end
+
+```
+
+## Entire Success log
+```go
+
+2022-07-26 18:05:43 [INFO] 
[github.com/apache/shenyu-client-golang/clients/consul_client/consul_client.go:77]
 Create default consul client success!
+2022-07-26 18:05:43 [INFO] 
[github.com/apache/shenyu-client-golang/clients/consul_client/consul_client.go:160]
 RegisterServiceInstance,result:true
+2022-07-26 18:05:43 [INFO] 
[github.com/apache/shenyu-client-golang/clients/consul_client/consul_client.go:160]
 RegisterServiceInstance,result:true
+2022-07-26 18:05:43 [INFO] 
[github.com/apache/shenyu-client-golang/clients/consul_client/consul_client.go:160]
 RegisterServiceInstance,result:true
+2022-07-26 18:05:44 [INFO] 
[github.com/apache/shenyu-client-golang/clients/consul_client/consul_client.go:121]
 GetServiceInstanceInfo,instance:&{AppName:testMetaDataRegister1 Path: 
ContextPath: RuleName: RPCType: Enabled:false Host:172.22.0.5 Port:8080 
PluginNames:[] RegisterMetaData:false TimeMillis:0 
ServiceId:testMetaDataRegister1}
+2022-07-26 18:05:44 [INFO] 
[github.com/apache/shenyu-client-golang/example/consul_client/consul_client.go:115]
 GetNodesInfo ,success Index 0 
{"appName":"testMetaDataRegister1","path":"","contextPath":"","ruleName":"","rpcType":"","enabled":false,"host":"172.22.0.5","port":"8080","pluginNames":null,"registerMetaData":false,"timeMillis":0,"serviceId":"testMetaDataRegister1"}
+2022-07-26 18:05:44 [INFO] 
[github.com/apache/shenyu-client-golang/clients/consul_client/consul_client.go:121]
 GetServiceInstanceInfo,instance:&{AppName:testMetaDataRegister2 Path: 
ContextPath: RuleName: RPCType: Enabled:false Host:172.22.0.5 Port:8181 
PluginNames:[] RegisterMetaData:false TimeMillis:0 
ServiceId:testMetaDataRegister2}
+2022-07-26 18:05:44 [INFO] 
[github.com/apache/shenyu-client-golang/example/consul_client/consul_client.go:129]
 GetNodesInfo ,success Index 0 
{"appName":"testMetaDataRegister2","path":"","contextPath":"","ruleName":"","rpcType":"","enabled":false,"host":"172.22.0.5","port":"8181","pluginNames":null,"registerMetaData":false,"timeMillis":0,"serviceId":"testMetaDataRegister2"}
+2022-07-26 18:05:44 [INFO] 
[github.com/apache/shenyu-client-golang/clients/consul_client/consul_client.go:121]
 GetServiceInstanceInfo,instance:&{AppName:testMetaDataRegister3 Path: 
ContextPath: RuleName: RPCType: Enabled:false Host:172.22.0.5 Port:8282 
PluginNames:[] RegisterMetaData:false TimeMillis:0 
ServiceId:testMetaDataRegister3}
+2022-07-26 18:05:44 [INFO] 
[github.com/apache/shenyu-client-golang/example/consul_client/consul_client.go:143]
 GetNodesInfo ,success Index 0 
{"appName":"testMetaDataRegister3","path":"","contextPath":"","ruleName":"","rpcType":"","enabled":false,"host":"172.22.0.5","port":"8282","pluginNames":null,"registerMetaData":false,"timeMillis":0,"serviceId":"testMetaDataRegister3"}
+2022-07-26 18:05:44 [INFO] 
[github.com/apache/shenyu-client-golang/example/consul_client/consul_client.go:150]
 > DeregisterServiceInstance start
+2022-07-26 18:05:44 [INFO] 
[github.com/apache/shenyu-client-golang/clients/consul_client/consul_client.go:100]
 DeregisterServiceInstance,result:true
+2022-07-26 18:05:44 [INFO] 
[github.com/apache/shenyu-client-golang/clients/consul_client/consul_client.go:100]
 DeregisterServiceInstance,result:true
+2022-07-26 18:05:44 [INFO] 
[github.com/apache/shenyu-client-golang/clients/consul_client/consul_client.go:100]
 DeregisterServiceInstance,result:true
+2022-07-26 18:05:44 [INFO] 
[github.com/apache/shenyu-client-golang/example/consul_client/consul_client.go:167]
 DeregisterServiceInstance success !
+
+```
+
diff --git a/doc/HTTP_CN.md b/doc/HTTP_CN.md
new file mode 100644
index 0000000..6f566bb
--- /dev/null
+++ b/doc/HTTP_CN.md
@@ -0,0 +1,101 @@
+
+##  以Http方式注册到ShenYu网关
+
+**1.首先确保ShenYuAdmin是启动的,并且ShenYuAdmin服务启动的端口是9095 .**
+```go
+如果没启动,你将看到如下错误:
+       
+2022-05-05 15:24:28 [WARN] 
[github.com/apache/shenyu-client-golang/example/http_client/main.go:53] 
MetaDataRegister has error: The errCode is ->:503, The errMsg is  ->:Please 
check ShenYu admin service status
+
+caused by:
+Post "http://127.0.0.1:9095/shenyu-client/register-metadata": dial tcp 
127.0.0.1:9095: connect: connection refused
+2022-05-05 15:24:28 [INFO] 
[github.com/apache/shenyu-client-golang/example/http_client/main.go:55] finish 
register metadata ,the result is-> false
+2022-05-05 15:24:28 [WARN] 
[github.com/apache/shenyu-client-golang/example/http_client/main.go:68] 
UrlRegister has error: The errCode is ->:503, The errMsg is  ->:Please check 
ShenYu admin service status
+
+caused by:
+Post "http://127.0.0.1:9095/shenyu-client/register-uri": dial tcp 
127.0.0.1:9095: connect: connection refused
+2022-05-05 15:24:28 [INFO] 
[github.com/apache/shenyu-client-golang/example/http_client/main.go:70] finish 
UrlRegister ,the result is-> false
+       
+```
+
+**2.获取shenyu_admin_client. (注册服务需要这个实例)**
+
+```go
+//初始化 ShenYuAdminClient
+adminClient := &model.ShenYuAdminClient{
+    UserName: "admin",  //需要用户提供
+    Password: "123456", //需要用户提供
+}
+
+adminToken, err := clients.NewShenYuAdminClient(adminClient)
+
+adminToken像这样 :
+{
+    "code":200,
+    "message":"login dashboard user success",
+    "data":{
+        "id":"1",
+        "userName":"admin",
+        "role":1,
+        "enabled":true,
+        "dateCreated":"2018-06-23 15:12:22",
+        "dateUpdated":"2022-03-09 15:08:14",
+        
"token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyTmFtZSI6ImFkbWluIiwiZXhwIjoxNjUwNjc5OTQ2fQ.K92Il2kmJ0X3FgjY4igW35-pw9nsf5VKdUyqBoyIaF4"
+    }
+}
+
+当你成功获取到Token,你将看到这些:
+this is ShenYu Admin client token -> 
eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyTmFtZSI6ImFkbWluIiwiZXhwIjoxNjUwNjc5OTQ2fQ.K92Il2kmJ0X3FgjY4igW35-pw9nsf5VKdUyqBoyIaF4
+
+```
+
+
+**3.注册元数据到ShenYu网关. (需要上一步的adminToken去调用)**
+```go
+//元数据注册(需要上一步的token: adminToken.AdminTokenData)
+metaData := &model.MetaDataRegister{
+               AppName: "testMetaDataRegister", //需要用户提供
+               Path:    "/your/path",           //需要用户提供
+               Enabled: true,                   //需要用户提供
+               Host:    "127.0.0.1",            //需要用户提供
+               Port:    "8080",                 //需要用户提供
+       }
+       result, err := clients.RegisterMetaData(adminToken.AdminTokenData, 
metaData)
+       if err != nil {
+               logger.Warn("MetaDataRegister has error:",err)
+       }
+       logger.Info("finish register metadata ,the result is->", result)
+
+
+当你注册成功,你将看到这些:
+finish register metadata ,the result is-> true
+```
+
+**4.以URL的方式注册到ShenYu网关. (需要上一步的adminToken去调用)**
+```go
+//URI注册(需要上一步的token: adminToken.AdminTokenData)
+//初始化 URI注册
+       urlRegister := &model.URIRegister{
+               Protocol:    "testMetaDataRegister", //需要用户提供
+               AppName:     "testURLRegister",      //需要用户提供
+               ContextPath: "contextPath",          //需要用户提供
+               RPCType:     constants.RPCTYPE_HTTP, //需要用户提供
+               Host:        "127.0.0.1",            //需要用户提供
+               Port:        "8080",                 //需要用户提供
+       }
+       result, err = clients.UrlRegister(adminToken.AdminTokenData, 
urlRegister)
+       if err != nil {
+               logger.Warn("UrlRegister has error:", err)
+       }
+       logger.Info("finish UrlRegister ,the result is->", result)
+         //做你的逻辑处理
+```
+
+**5.完整的成功日志**
+```go
+2022-05-05 15:43:56 [INFO] 
[github.com/apache/shenyu-client-golang/clients/admin_client/shenyu_admin_client.go:51]
 Get ShenYu Admin response, body is -> {200 login dashboard user success {1 
admin 1 true 2018-06-23 15:12:22 2022-03-09 15:08:14 
eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyTmFtZSI6ImFkbWluIiwiZXhwIjoxNjUxODIzMDM2fQ.gMzPKaNlXEd1Q517qQamOpg358W9L0-0cZN3lkk06WE}}
+2022-05-05 15:43:56 [INFO] 
[github.com/apache/shenyu-client-golang/example/http_client/main.go:40] this is 
ShenYu Admin client token -> 
eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyTmFtZSI6ImFkbWluIiwiZXhwIjoxNjUxODIzMDM2fQ.gMzPKaNlXEd1Q517qQamOpg358W9L0-0cZN3lkk06WE
+2022-05-05 15:43:57 [INFO] 
[github.com/apache/shenyu-client-golang/example/http_client/main.go:55] finish 
register metadata ,the result is-> true
+2022-05-05 15:43:57 [INFO] 
[github.com/apache/shenyu-client-golang/example/http_client/main.go:70] finish 
UrlRegister ,the result is-> true
+
+```
diff --git a/doc/HTTP_EN.md b/doc/HTTP_EN.md
new file mode 100644
index 0000000..3cccd7d
--- /dev/null
+++ b/doc/HTTP_EN.md
@@ -0,0 +1,100 @@
+
+## The Http type Register
+
+**1.Fist make sure The ShenYuAdmin is Started, and ShenYuAdmin service active 
port is 9095.**
+```go
+Or you will see this error :
+       
+2022-05-05 15:24:28 [WARN] 
[github.com/apache/shenyu-client-golang/example/http_client/main.go:53] 
MetaDataRegister has error: The errCode is ->:503, The errMsg is  ->:Please 
check ShenYu admin service status
+
+caused by:
+Post "http://127.0.0.1:9095/shenyu-client/register-metadata": dial tcp 
127.0.0.1:9095: connect: connection refused
+2022-05-05 15:24:28 [INFO] 
[github.com/apache/shenyu-client-golang/example/http_client/main.go:55] finish 
register metadata ,the result is-> false
+2022-05-05 15:24:28 [WARN] 
[github.com/apache/shenyu-client-golang/example/http_client/main.go:68] 
UrlRegister has error: The errCode is ->:503, The errMsg is  ->:Please check 
ShenYu admin service status
+
+caused by:
+Post "http://127.0.0.1:9095/shenyu-client/register-uri": dial tcp 
127.0.0.1:9095: connect: connection refused
+2022-05-05 15:24:28 [INFO] 
[github.com/apache/shenyu-client-golang/example/http_client/main.go:70] finish 
UrlRegister ,the result is-> false
+       
+```
+
+**2.Step 1 Get shenyu_admin_client. (Register service need this)**
+
+```go
+//init ShenYuAdminClient
+adminClient := &model.ShenYuAdminClient{
+    UserName: "admin",  //require user provide
+    Password: "123456", //require user provide
+}
+
+adminToken, err := clients.NewShenYuAdminClient(adminClient)
+
+The adminToken like this :
+{
+    "code":200,
+    "message":"login dashboard user success",
+    "data":{
+        "id":"1",
+        "userName":"admin",
+        "role":1,
+        "enabled":true,
+        "dateCreated":"2018-06-23 15:12:22",
+        "dateUpdated":"2022-03-09 15:08:14",
+        
"token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyTmFtZSI6ImFkbWluIiwiZXhwIjoxNjUwNjc5OTQ2fQ.K92Il2kmJ0X3FgjY4igW35-pw9nsf5VKdUyqBoyIaF4"
+    }
+}
+
+When you success get toekn, you will see this :
+this is ShenYu Admin client token -> 
eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyTmFtZSI6ImFkbWluIiwiZXhwIjoxNjUwNjc5OTQ2fQ.K92Il2kmJ0X3FgjY4igW35-pw9nsf5VKdUyqBoyIaF4
+
+```
+
+
+**3.Step 2 Register MetaData to ShenYu GateWay. (Need step 1 token to invoke)**
+```go
+//MetaDataRegister(Need Step 1 toekn adminToken.AdminTokenData)
+metaData := &model.MetaDataRegister{
+               AppName: "testMetaDataRegister", //require user provide
+               Path:    "/your/path",           //require user provide
+               Enabled: true,                   //require user provide
+               Host:    "127.0.0.1",            //require user provide
+               Port:    "8080",                 //require user provide
+       }
+       result, err := clients.RegisterMetaData(adminToken.AdminTokenData, 
metaData)
+       if err != nil {
+               logger.Warn("MetaDataRegister has error:",err)
+       }
+       logger.Info("finish register metadata ,the result is->", result)
+       
+       
+When Register success , you will see this :  
+finish register metadata ,the result is-> true
+```
+
+**4.Step 3  Url  Register  to ShenYu GateWay. (Need step 1 token to invoke)**
+```go
+//URIRegister(Need Step 1 toekn adminToken.AdminTokenData)
+//init urlRegister
+       urlRegister := &model.URIRegister{
+               Protocol:    "testMetaDataRegister", //require user provide
+               AppName:     "testURLRegister",      //require user provide
+               ContextPath: "contextPath",          //require user provide
+               RPCType:     constants.RPCTYPE_HTTP, //require user provide
+               Host:        "127.0.0.1",            //require user provide
+               Port:        "8080",                 //require user provide
+       }
+       result, err = clients.UrlRegister(adminToken.AdminTokenData, 
urlRegister)
+       if err != nil {
+               logger.Warn("UrlRegister has error:", err)
+       }
+       logger.Info("finish UrlRegister ,the result is->", result)
+```
+
+## Entire Success log
+```go
+2022-05-05 15:43:56 [INFO] 
[github.com/apache/shenyu-client-golang/clients/admin_client/shenyu_admin_client.go:51]
 Get ShenYu Admin response, body is -> {200 login dashboard user success {1 
admin 1 true 2018-06-23 15:12:22 2022-03-09 15:08:14 
eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyTmFtZSI6ImFkbWluIiwiZXhwIjoxNjUxODIzMDM2fQ.gMzPKaNlXEd1Q517qQamOpg358W9L0-0cZN3lkk06WE}}
+2022-05-05 15:43:56 [INFO] 
[github.com/apache/shenyu-client-golang/example/http_client/main.go:40] this is 
ShenYu Admin client token -> 
eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyTmFtZSI6ImFkbWluIiwiZXhwIjoxNjUxODIzMDM2fQ.gMzPKaNlXEd1Q517qQamOpg358W9L0-0cZN3lkk06WE
+2022-05-05 15:43:57 [INFO] 
[github.com/apache/shenyu-client-golang/example/http_client/main.go:55] finish 
register metadata ,the result is-> true
+2022-05-05 15:43:57 [INFO] 
[github.com/apache/shenyu-client-golang/example/http_client/main.go:70] finish 
UrlRegister ,the result is-> true
+
+```
diff --git a/doc/NACOS_CN.md b/doc/NACOS_CN.md
new file mode 100644
index 0000000..b48ca80
--- /dev/null
+++ b/doc/NACOS_CN.md
@@ -0,0 +1,122 @@
+
+---
+## 以Nacos方式注册到ShenYu网关
+
+**1.首先确保你的nacos环境是正确,然后设置这些nacos必要的参数 .**
+```go
+//设置nacos环境配置
+    ncp := &nacos_client.NacosClientParam{
+        IpAddr:      "console.nacos.io",
+        Port:        80,
+        NamespaceId: "e525eafa-f7d7-4029-83d9-008937f9d468",
+}
+```
+
+**2. 准备你要注册服务的元数据信息**
+```go
+//元数据是必要的参数,这将注册到shenyu网关使用
+metaData := &model.URIRegister{
+        Protocol:    "testMetaDataRegister", //需要用户提供
+        AppName:     "testURLRegister",      //需要用户提供
+        ContextPath: "contextPath",          //需要用户提供
+        RPCType:     constants.RPCTYPE_HTTP, //需要用户提供
+        Host:        "127.0.0.1",            //需要用户提供
+        Port:        "8080",                 //需要用户提供
+}
+    metaDataStringJson, _ := json.Marshal(metaData)
+```
+
+**3.准备你要注册服务的实例消息(包括元数据)**
+```go
+//初始化Nacos注册实例信息
+    nacosRegisterInstance := vo.RegisterInstanceParam{
+        Ip:          "10.0.0.10", //需要用户提供
+        Port:        8848,        //需要用户提供
+        ServiceName: "demo.go",   //需要用户提供
+        Weight:      10,          //需要用户提供
+        Enable:      true,        //需要用户提供
+        Healthy:     true,        //需要用户提供
+        Ephemeral:   true,        //需要用户提供
+        Metadata:    map[string]string{"contextPath": "contextPath", 
"uriMetadata": string(metaDataStringJson)},
+}
+```
+
+**4. 获取ShenYu nacos的客户端**
+```go
+    sdkClient := shenyu_sdk_client.GetFactoryClient(constants.NACOS_CLIENT)
+    result, createResult, err := sdkClient.NewClient(ncp)
+        if !createResult && err != nil {
+        logger.Fatal("Create nacos client error : %+V", err)
+    }
+
+       nc := &nacos_client.ShenYuNacosClient{
+               NacosClient: result.(*naming_client.NamingClient),
+       }
+```
+
+
+**5.使用客户端调用RegisterNacosInstance方法**
+```go
+    registerResult, err := nc.RegisterServiceInstance(nacosRegisterInstance)
+        if !registerResult && err != nil {
+    logger.Fatal("Register nacos Instance error : %+V", err)
+}
+        //do your logic
+```
+
+**6.使用客户端调用DeregisterServiceInstance方法**
+```go
+//DeregisterServiceInstance start
+    deregisterInstanceParam := vo.DeregisterInstanceParam{
+    Ip:          "10.0.0.10",
+    Port:        8848,
+    ServiceName: "demo.go",
+    Ephemeral:   true,
+    //Cluster:     "cluster-a", // default value is DEFAULT
+    GroupName: "group-a", // default value is DEFAULT_GROUP
+}
+
+    serviceInstance, err := 
nc.DeregisterServiceInstance(deregisterInstanceParam)
+        if !serviceInstance && err != nil {
+        logger.Info("DeregisterServiceInstance result : %+V", serviceInstance)
+}
+        //do your logic
+```
+
+**7.使用客户端调用GetServiceInstanceInfo方法**
+```go
+         instanceInfo, err := nc.GetServiceInstanceInfo(queryData)
+            if instanceInfo == nil {
+               logger.Fatal("Register nacos Instance error : %+V", err)
+            }
+        //do your logic
+```
+
+**完整的成功日志**
+```go
+
+2022-07-26T18:07:32.494+0800    INFO    nacos_client/nacos_client.go:79 
logDir:</tmp/nacos/log>   cacheDir:</tmp/nacos/cache>
+2022-07-26T18:07:32.495+0800    INFO    naming_client/push_receiver.go:80      
 udp server start, port: 55422
+2022-07-26T18:07:32.495+0800    INFO    naming_client/naming_proxy.go:54       
 register instance 
namespaceId:<e525eafa-f7d7-4029-83d9-008937f9d468>,serviceName:<group-a@@demo.go>
 with 
instance:<{"valid":false,"marked":false,"instanceId":"","port":8848,"ip":"10.0.0.10","weight":10,"metadata":{"contextPath":"contextPath","uriMetadata":"{\"protocol\":\"testMetaDataRegister\",\"appName\":\"testURLRegister\",\"contextPath\":\"contextPath\",\"rpcType\":\"http\",\"host\":\"127.0.0.1\",\"port\"
 [...]
+2022-07-26T18:07:33.255+0800    INFO    naming_client/beat_reactor.go:68       
 adding beat: 
<{"ip":"10.0.0.10","port":8848,"weight":10,"serviceName":"group-a@@demo.go","cluster":"cluster-a","metadata":{"contextPath":"contextPath","uriMetadata":"{\"protocol\":\"testMetaDataRegister\",\"appName\":\"testURLRegister\",\"contextPath\":\"contextPath\",\"rpcType\":\"http\",\"host\":\"127.0.0.1\",\"port\":\"8080\"}"},"scheduled":false}>
 to beat map
+2022-07-26 18:07:33 [INFO] 
[github.com/apache/shenyu-client-golang/clients/nacos_client/nacos_client.go:107]
 RegisterServiceInstance,result:true
+
+,param:{Ip:10.0.0.10 Port:8848 Weight:10 Enable:true Healthy:true 
Metadata:map[contextPath:contextPath 
uriMetadata:{"protocol":"testMetaDataRegister","appName":"testURLRegister","contextPath":"contextPath","rpcType":"http","host":"127.0.0.1","port":"8080"}]
 ClusterName:cluster-a ServiceName:demo.go GroupName:group-a Ephemeral:true}
+
+
+2022-07-26T18:07:33.256+0800    INFO    naming_client/naming_proxy.go:103      
 namespaceId:<e525eafa-f7d7-4029-83d9-008937f9d468> sending beat to 
server:<{"ip":"10.0.0.10","port":8848,"weight":10,"serviceName":"group-a@@demo.go","cluster":"cluster-a","metadata":{"contextPath":"contextPath","uriMetadata":"{\"protocol\":\"testMetaDataRegister\",\"appName\":\"testURLRegister\",\"contextPath\":\"contextPath\",\"rpcType\":\"http\",\"host\":\"127.0.0.1\",\"port\":\"8080\"}"},"scheduled":false}>
+2022-07-26T18:07:34.256+0800    INFO    util/common.go:94       Local 
IP:10.167.40.91
+2022-07-26T18:07:34.507+0800    INFO    naming_client/host_reactor.go:95       
 service not found in cache group-a@@demo.go@@cluster-a
+2022-07-26 18:07:34 [INFO] 
[github.com/apache/shenyu-client-golang/clients/nacos_client/nacos_client.go:139]
 GetServiceInstanceInfo,result:[{Valid:false Marked:false 
InstanceId:10.0.0.10#8848#cluster-a#group-a@@demo.go Port:8848 Ip:10.0.0.10 
Weight:10 Metadata:map[contextPath:contextPath 
uriMetadata:{"protocol":"testMetaDataRegister","appName":"testURLRegister","contextPath":"contextPath","rpcType":"http","host":"127.0.0.1","port":"8080"}]
 ClusterName:cluster-a ServiceName:group-a@@demo. [...]
+
+,param:{Clusters:[cluster-a] ServiceName:demo.go GroupName:group-a 
HealthyOnly:true}
+
+
+2022-07-26 18:07:34 [INFO] 
[github.com/apache/shenyu-client-golang/example/nacos_client/main.go:102] 
[{false false 10.0.0.10#8848#cluster-a#group-a@@demo.go 8848 10.0.0.10 10 
map[contextPath:contextPath 
uriMetadata:{"protocol":"testMetaDataRegister","appName":"testURLRegister","contextPath":"contextPath","rpcType":"http","host":"127.0.0.1","port":"8080"}]
 cluster-a group-a@@demo.go true true true}]
+2022-07-26T18:07:35.509+0800    INFO    naming_client/beat_reactor.go:83       
 remove beat: group-a@@[email protected]:8848 from beat map
+2022-07-26T18:07:35.509+0800    INFO    naming_client/naming_proxy.go:73       
 deregister instance 
namespaceId:<e525eafa-f7d7-4029-83d9-008937f9d468>,serviceName:<group-a@@demo.go>
 with instance:<10.0.0.10:8848@cluster-a>
+2022-07-26 18:07:35 [INFO] 
[github.com/apache/shenyu-client-golang/clients/nacos_client/nacos_client.go:123]
 DeregisterServiceInstance,result:true
+
+,param:{Ip:10.0.0.10 Port:8848 Cluster:cluster-a ServiceName:demo.go 
GroupName:group-a Ephemeral:true}
+
+```
diff --git a/doc/NACOS_EN.md b/doc/NACOS_EN.md
new file mode 100644
index 0000000..d8f5e3c
--- /dev/null
+++ b/doc/NACOS_EN.md
@@ -0,0 +1,122 @@
+
+---
+## The Nacos type Register
+
+**1.Fist make sure your nacos env is correct,the set this necessary param.**
+```go
+//set nacos env configuration
+    ncp := &nacos_client.NacosClientParam{
+        IpAddr:      "console.nacos.io",
+        Port:        80,
+        NamespaceId: "e525eafa-f7d7-4029-83d9-008937f9d468",
+}
+```
+
+**2. Prepare your service metaData to register**
+```go
+//metaData is necessary param, this will be register to shenyu gateway to use
+    metaData := &model.URIRegister{
+        Protocol:    "testMetaDataRegister", //require user provide
+        AppName:     "testURLRegister",      //require user provide
+        ContextPath: "contextPath",          //require user provide
+        RPCType:     constants.RPCTYPE_HTTP, //require user provide
+        Host:        "127.0.0.1",            //require user provide
+        Port:        "8080",                 //require user provide
+}
+    metaDataStringJson, _ := json.Marshal(metaData)
+```
+
+**3. Prepare your service Instance message(include metaData)**
+```go
+//init NacosRegisterInstance
+    nacosRegisterInstance := vo.RegisterInstanceParam{
+        Ip:          "10.0.0.10", //require user provide
+        Port:        8848,        //require user provide
+        ServiceName: "demo.go",   //require user provide
+        Weight:      10,          //require user provide
+        Enable:      true,        //require user provide
+        Healthy:     true,        //require user provide
+        Ephemeral:   true,        //require user provide
+        Metadata:    map[string]string{"contextPath": "contextPath", 
"uriMetadata": string(metaDataStringJson)},
+}
+```
+
+**4. Get shenyu nacos client**
+```go
+    sdkClient := shenyu_sdk_client.GetFactoryClient(constants.NACOS_CLIENT)
+    result, createResult, err := sdkClient.NewClient(ncp)
+        if !createResult && err != nil {
+        logger.Fatal("Create nacos client error : %+V", err)
+    }
+
+       nc := &nacos_client.ShenYuNacosClient{
+               NacosClient: result.(*naming_client.NamingClient),
+       }
+```
+
+
+**5.Use client to invoke RegisterServiceInstance**
+```go
+   instanceInfo, err := nc.GetServiceInstanceInfo(queryData)
+    if instanceInfo == nil {
+        logger.Fatal("Register nacos Instance error : %+V", err)
+    }
+        //do your logic
+```
+
+**6.Use client to invoke DeregisterServiceInstance**
+```go
+//DeregisterServiceInstance start
+    deregisterInstanceParam := vo.DeregisterInstanceParam{
+    Ip:          "10.0.0.10",
+    Port:        8848,
+    ServiceName: "demo.go",
+    Ephemeral:   true,
+    //Cluster:     "cluster-a", // default value is DEFAULT
+    GroupName: "group-a", // default value is DEFAULT_GROUP
+}
+
+    serviceInstance, err := 
nc.DeregisterServiceInstance(deregisterInstanceParam)
+        if !serviceInstance && err != nil {
+        logger.Info("DeregisterServiceInstance result : %+V", serviceInstance)
+}
+        //do your logic
+```
+
+**7.Use client to invoke GetServiceInstanceInfo**
+```go
+        instanceInfo, result, err := nc.GetServiceInstanceInfo(queryData)
+            if result != false && err != nil {
+            logger.Fatal("Register nacos Instance error : %+V", err)
+        }
+        //do your logic
+```
+
+## Entire Success log
+```go
+
+2022-07-26T18:07:32.494+0800    INFO    nacos_client/nacos_client.go:79 
logDir:</tmp/nacos/log>   cacheDir:</tmp/nacos/cache>
+2022-07-26T18:07:32.495+0800    INFO    naming_client/push_receiver.go:80      
 udp server start, port: 55422
+2022-07-26T18:07:32.495+0800    INFO    naming_client/naming_proxy.go:54       
 register instance 
namespaceId:<e525eafa-f7d7-4029-83d9-008937f9d468>,serviceName:<group-a@@demo.go>
 with 
instance:<{"valid":false,"marked":false,"instanceId":"","port":8848,"ip":"10.0.0.10","weight":10,"metadata":{"contextPath":"contextPath","uriMetadata":"{\"protocol\":\"testMetaDataRegister\",\"appName\":\"testURLRegister\",\"contextPath\":\"contextPath\",\"rpcType\":\"http\",\"host\":\"127.0.0.1\",\"port\"
 [...]
+2022-07-26T18:07:33.255+0800    INFO    naming_client/beat_reactor.go:68       
 adding beat: 
<{"ip":"10.0.0.10","port":8848,"weight":10,"serviceName":"group-a@@demo.go","cluster":"cluster-a","metadata":{"contextPath":"contextPath","uriMetadata":"{\"protocol\":\"testMetaDataRegister\",\"appName\":\"testURLRegister\",\"contextPath\":\"contextPath\",\"rpcType\":\"http\",\"host\":\"127.0.0.1\",\"port\":\"8080\"}"},"scheduled":false}>
 to beat map
+2022-07-26 18:07:33 [INFO] 
[github.com/apache/shenyu-client-golang/clients/nacos_client/nacos_client.go:107]
 RegisterServiceInstance,result:true
+
+,param:{Ip:10.0.0.10 Port:8848 Weight:10 Enable:true Healthy:true 
Metadata:map[contextPath:contextPath 
uriMetadata:{"protocol":"testMetaDataRegister","appName":"testURLRegister","contextPath":"contextPath","rpcType":"http","host":"127.0.0.1","port":"8080"}]
 ClusterName:cluster-a ServiceName:demo.go GroupName:group-a Ephemeral:true}
+
+
+2022-07-26T18:07:33.256+0800    INFO    naming_client/naming_proxy.go:103      
 namespaceId:<e525eafa-f7d7-4029-83d9-008937f9d468> sending beat to 
server:<{"ip":"10.0.0.10","port":8848,"weight":10,"serviceName":"group-a@@demo.go","cluster":"cluster-a","metadata":{"contextPath":"contextPath","uriMetadata":"{\"protocol\":\"testMetaDataRegister\",\"appName\":\"testURLRegister\",\"contextPath\":\"contextPath\",\"rpcType\":\"http\",\"host\":\"127.0.0.1\",\"port\":\"8080\"}"},"scheduled":false}>
+2022-07-26T18:07:34.256+0800    INFO    util/common.go:94       Local 
IP:10.167.40.91
+2022-07-26T18:07:34.507+0800    INFO    naming_client/host_reactor.go:95       
 service not found in cache group-a@@demo.go@@cluster-a
+2022-07-26 18:07:34 [INFO] 
[github.com/apache/shenyu-client-golang/clients/nacos_client/nacos_client.go:139]
 GetServiceInstanceInfo,result:[{Valid:false Marked:false 
InstanceId:10.0.0.10#8848#cluster-a#group-a@@demo.go Port:8848 Ip:10.0.0.10 
Weight:10 Metadata:map[contextPath:contextPath 
uriMetadata:{"protocol":"testMetaDataRegister","appName":"testURLRegister","contextPath":"contextPath","rpcType":"http","host":"127.0.0.1","port":"8080"}]
 ClusterName:cluster-a ServiceName:group-a@@demo. [...]
+
+,param:{Clusters:[cluster-a] ServiceName:demo.go GroupName:group-a 
HealthyOnly:true}
+
+
+2022-07-26 18:07:34 [INFO] 
[github.com/apache/shenyu-client-golang/example/nacos_client/main.go:102] 
[{false false 10.0.0.10#8848#cluster-a#group-a@@demo.go 8848 10.0.0.10 10 
map[contextPath:contextPath 
uriMetadata:{"protocol":"testMetaDataRegister","appName":"testURLRegister","contextPath":"contextPath","rpcType":"http","host":"127.0.0.1","port":"8080"}]
 cluster-a group-a@@demo.go true true true}]
+2022-07-26T18:07:35.509+0800    INFO    naming_client/beat_reactor.go:83       
 remove beat: group-a@@[email protected]:8848 from beat map
+2022-07-26T18:07:35.509+0800    INFO    naming_client/naming_proxy.go:73       
 deregister instance 
namespaceId:<e525eafa-f7d7-4029-83d9-008937f9d468>,serviceName:<group-a@@demo.go>
 with instance:<10.0.0.10:8848@cluster-a>
+2022-07-26 18:07:35 [INFO] 
[github.com/apache/shenyu-client-golang/clients/nacos_client/nacos_client.go:123]
 DeregisterServiceInstance,result:true
+
+,param:{Ip:10.0.0.10 Port:8848 Cluster:cluster-a ServiceName:demo.go 
GroupName:group-a Ephemeral:true}
+
+```
diff --git a/doc/ZK_CN.md b/doc/ZK_CN.md
new file mode 100644
index 0000000..a180447
--- /dev/null
+++ b/doc/ZK_CN.md
@@ -0,0 +1,111 @@
+
+---
+## 以Zookeeper方式注册到ShenYu网关
+
+**1.首先确保你的Zookeeper环境是正确,然后设置这些Zookeeper必要的参数 .**
+```go
+    //开始创建ShenYuZkClient 
+    zcp := &zk_client.ZkClientParam{
+    ZkServers: []string{"127.0.0.1:2181"}, //需要用户提供
+    ZkRoot:    "/api",                     //需要用户提供
+    }
+    
+    sdkClient := shenyu_sdk_client.GetFactoryClient(constants.ZOOKEEPER_CLIENT)
+    client, createResult, err := sdkClient.NewClient(zcp)
+    
+    if !createResult && err != nil {
+    logger.Fatal("Create ShenYuZkClient error : %+V", err)
+    }
+    
+    zc := client.(*zk_client.ShenYuZkClient)
+    defer zc.Close()
+```
+
+**2.  准备你要注册服务的元数据信息**
+```go
+//元数据是必要的参数,这将注册到shenyu网关使用
+    metaData1 := &model.MetaDataRegister{
+        AppName: "testMetaDataRegister1", //需要用户提供
+        Path:    "your/path1",            //需要用户提供
+        Enabled: true,                    //需要用户提供
+        Host:    "127.0.0.1",             //需要用户提供
+        Port:    "8080",                  //需要用户提供
+    }
+    
+    metaData2 := &model.MetaDataRegister{
+        AppName: "testMetaDataRegister2", //需要用户提供
+        Path:    "your/path2",            //需要用户提供
+        Enabled: true,                    //需要用户提供
+        Host:    "127.0.0.1",             //需要用户提供
+        Port:    "8181",                  //需要用户提供
+    }
+```
+
+**3.使用客户端进行节点信息注册**
+```go
+   //可以进行多个实例注册
+    registerResult1, err := zc.RegisterServiceInstance(metaData1)
+        if !registerResult1 && err != nil {
+             logger.Fatal("Register zk Instance error : %+V", err)
+        }
+    
+    registerResult2, err := zc.RegisterServiceInstance(metaData2)
+        if !registerResult2 && err != nil {
+             logger.Fatal("Register zk Instance error : %+V", err)
+        }
+    //做你的逻辑处理
+```
+
+**4.使用客户端进行注册节点信息删除**
+```go
+    //选择性调用
+    deRegisterResult1, err := zc.DeregisterServiceInstance(metaData1)
+        if err != nil {
+            panic(err)
+        }
+
+    deRegisterResult2, err := zc.DeregisterServiceInstance(metaData2)
+        if err != nil {
+            panic(err)
+        }
+```
+
+**5.使用客户端获取注册节点的信息**
+```go
+   //开始调用GetServiceInstanceInfo
+    instanceDetail, err := zc.GetServiceInstanceInfo(metaData1)
+    nodes1, ok := instanceDetail.([]*model.MetaDataRegister)
+    if !ok {
+    logger.Fatal("get zk client metaData error %+v:", err)
+    }
+    
+    //range nodes
+    for index, node := range nodes1 {
+       nodeJson, err := json.Marshal(node)
+        if err == nil {
+        logger.Info("GetNodesInfo ,success Index", index, string(nodeJson))
+        }
+}
+
+    instanceDetail2, err := zc.GetServiceInstanceInfo(metaData2)
+    nodes2, ok := instanceDetail2.([]*model.MetaDataRegister)
+    if !ok {
+    logger.Fatal("get zk client metaData error %+v:", err)
+    }
+
+```
+
+## 完整的成功日志
+```go
+2022-07-13 16:09:31 [INFO] 
[github.com/shenyu-client-golang/example/zk_client/main.go:105] GetNodesInfo 
,success Index 0 
{"appName":"testMetaDataRegister1","path":"your/path1","contextPath":"","ruleName":"","rpcType":"","enabled":true,"host":"127.0.0.1","port":"8080","pluginNames":null,"registerMetaData":false,"timeMillis":0}
+2022-07-13 16:09:31 [INFO] 
[github.com/shenyu-client-golang/example/zk_client/main.go:119] GetNodesInfo 
,success Index 0 
{"appName":"testMetaDataRegister2","path":"your/path2","contextPath":"","ruleName":"","rpcType":"","enabled":true,"host":"127.0.0.1","port":"8181","pluginNames":null,"registerMetaData":false,"timeMillis":0}
+2022-07-13 16:09:31 [INFO] 
[github.com/shenyu-client-golang/example/zk_client/main.go:132] GetNodesInfo 
,success Index 0 
{"appName":"testMetaDataRegister3","path":"your/path3","contextPath":"","ruleName":"","rpcType":"","enabled":true,"host":"127.0.0.1","port":"8282","pluginNames":null,"registerMetaData":false,"timeMillis":0}
+2022-07-13 16:09:31 [INFO] 
[github.com/shenyu-client-golang/example/zk_client/main.go:139] > 
DeregisterServiceInstance start
+2022-07-13 16:09:31 [INFO] 
[github.com/shenyu-client-golang/clients/zk_client/zk_client.go:213] ensureName 
check, path is -> /api/testMetaDataRegister1
+2022-07-13 16:09:31 [INFO] 
[github.com/shenyu-client-golang/clients/zk_client/zk_client.go:215] ensureName 
check result is -> true
+2022-07-13 16:09:31 [INFO] 
[github.com/shenyu-client-golang/clients/zk_client/zk_client.go:213] ensureName 
check, path is -> /api/testMetaDataRegister2
+2022-07-13 16:09:31 [INFO] 
[github.com/shenyu-client-golang/clients/zk_client/zk_client.go:215] ensureName 
check result is -> true
+2022-07-13 16:09:31 [INFO] 
[github.com/shenyu-client-golang/clients/zk_client/zk_client.go:213] ensureName 
check, path is -> /api/testMetaDataRegister3
+2022-07-13 16:09:31 [INFO] 
[github.com/shenyu-client-golang/clients/zk_client/zk_client.go:215] ensureName 
check result is -> true
+2022-07-13 16:09:31 [INFO] 
[github.com/shenyu-client-golang/example/zk_client/main.go:156] 
DeregisterServiceInstance success !
+```
diff --git a/doc/ZK_EN.md b/doc/ZK_EN.md
new file mode 100644
index 0000000..f95478a
--- /dev/null
+++ b/doc/ZK_EN.md
@@ -0,0 +1,113 @@
+
+---
+## The Zookeeper type Register
+
+**1.Fist make sure your Zookeeper env is correct,the set this necessary 
param.**
+```go
+    //Create ShenYuZkClient  start
+    zcp := &zk_client.ZkClientParam{
+    ZkServers: []string{"127.0.0.1:2181"}, //require user provide
+    ZkRoot:    "/api",                     //require user provide
+    }
+
+    sdkClient := shenyu_sdk_client.GetFactoryClient(constants.ZOOKEEPER_CLIENT)
+    client, createResult, err := sdkClient.NewClient(zcp)
+
+    if !createResult && err != nil {
+    logger.Fatal("Create ShenYuZkClient error : %+V", err)
+    }
+
+    zc := client.(*zk_client.ShenYuZkClient)
+    defer zc.Close()
+    //Create ShenYuZkClient end
+```
+
+**2. Prepare your service metaData to register**
+```go
+//metaData is necessary param, this will be register to shenyu gateway to use
+    metaData1 := &model.MetaDataRegister{
+        AppName: "testMetaDataRegister1", //require user provide
+        Path:    "your/path1",            //require user provide
+        Enabled: true,                    //require user provide
+        Host:    "127.0.0.1",             //require user provide
+        Port:    "8080",                  //require user provide
+    }
+
+    metaData2 := &model.MetaDataRegister{
+        AppName: "testMetaDataRegister2", //require user provide
+        Path:    "your/path2",            //require user provide
+        Enabled: true,                    //require user provide
+        Host:    "127.0.0.1",             //require user provide
+        Port:    "8181",                  //require user provide
+    }
+```
+
+**3.use client to invoke RegisterServiceInstance**
+```go
+   //register multiple metaData
+    registerResult1, err := zc.RegisterServiceInstance(metaData1)
+        if !registerResult1 && err != nil {
+        logger.Fatal("Register zk Instance error : %+V", err)
+    }
+
+    registerResult2, err := zc.RegisterServiceInstance(metaData2)
+        if !registerResult2 && err != nil {
+        logger.Fatal("Register zk Instance error : %+V", err)
+    }
+    //do your logic
+```
+
+**4.use client to invoke DeregisterServiceInstance**
+```go
+    //your can chose to invoke,not require
+    deRegisterResult1, err := zc.DeregisterServiceInstance(metaData1)
+        if err != nil {
+        panic(err)
+        }
+
+    deRegisterResult2, err := zc.DeregisterServiceInstance(metaData2)
+        if err != nil {
+        panic(err)
+        }
+```
+
+**5.use client to GetServiceInstanceInfo**
+```go
+    //GetServiceInstanceInfo start
+    instanceDetail, err := zc.GetServiceInstanceInfo(metaData1)
+        nodes1, ok := instanceDetail.([]*model.MetaDataRegister)
+        if !ok {
+        logger.Fatal("get zk client metaData error %+v:", err)
+     }
+    
+    //range nodes
+    for index, node := range nodes1 {
+        nodeJson, err := json.Marshal(node)
+        if err == nil {
+        logger.Info("GetNodesInfo ,success Index", index, string(nodeJson))
+        }
+    }
+    
+    instanceDetail2, err := zc.GetServiceInstanceInfo(metaData2)
+        nodes2, ok := instanceDetail2.([]*model.MetaDataRegister)
+        if !ok {
+            logger.Fatal("get zk client metaData error %+v:", err)
+    }
+    //GetServiceInstanceInfo end
+
+```
+
+## Entire Success log
+```go
+2022-07-13 16:09:31 [INFO] 
[github.com/shenyu-client-golang/example/zk_client/main.go:105] GetNodesInfo 
,success Index 0 
{"appName":"testMetaDataRegister1","path":"your/path1","contextPath":"","ruleName":"","rpcType":"","enabled":true,"host":"127.0.0.1","port":"8080","pluginNames":null,"registerMetaData":false,"timeMillis":0}
+2022-07-13 16:09:31 [INFO] 
[github.com/shenyu-client-golang/example/zk_client/main.go:119] GetNodesInfo 
,success Index 0 
{"appName":"testMetaDataRegister2","path":"your/path2","contextPath":"","ruleName":"","rpcType":"","enabled":true,"host":"127.0.0.1","port":"8181","pluginNames":null,"registerMetaData":false,"timeMillis":0}
+2022-07-13 16:09:31 [INFO] 
[github.com/shenyu-client-golang/example/zk_client/main.go:132] GetNodesInfo 
,success Index 0 
{"appName":"testMetaDataRegister3","path":"your/path3","contextPath":"","ruleName":"","rpcType":"","enabled":true,"host":"127.0.0.1","port":"8282","pluginNames":null,"registerMetaData":false,"timeMillis":0}
+2022-07-13 16:09:31 [INFO] 
[github.com/shenyu-client-golang/example/zk_client/main.go:139] > 
DeregisterServiceInstance start
+2022-07-13 16:09:31 [INFO] 
[github.com/shenyu-client-golang/clients/zk_client/zk_client.go:213] ensureName 
check, path is -> /api/testMetaDataRegister1
+2022-07-13 16:09:31 [INFO] 
[github.com/shenyu-client-golang/clients/zk_client/zk_client.go:215] ensureName 
check result is -> true
+2022-07-13 16:09:31 [INFO] 
[github.com/shenyu-client-golang/clients/zk_client/zk_client.go:213] ensureName 
check, path is -> /api/testMetaDataRegister2
+2022-07-13 16:09:31 [INFO] 
[github.com/shenyu-client-golang/clients/zk_client/zk_client.go:215] ensureName 
check result is -> true
+2022-07-13 16:09:31 [INFO] 
[github.com/shenyu-client-golang/clients/zk_client/zk_client.go:213] ensureName 
check, path is -> /api/testMetaDataRegister3
+2022-07-13 16:09:31 [INFO] 
[github.com/shenyu-client-golang/clients/zk_client/zk_client.go:215] ensureName 
check result is -> true
+2022-07-13 16:09:31 [INFO] 
[github.com/shenyu-client-golang/example/zk_client/main.go:156] 
DeregisterServiceInstance success !
+```
diff --git a/example/consul_client/consul_client.go 
b/example/consul_client/consul_client.go
index f995090..a40a406 100644
--- a/example/consul_client/consul_client.go
+++ b/example/consul_client/consul_client.go
@@ -122,7 +122,7 @@ func main() {
                logger.Fatal("get consul client metaData error %+v:", err)
        }
 
-       //range nodes1
+       //range nodes2
        for index, node := range nodes2 {
                nodeJson, err := json.Marshal(node)
                if err == nil {
@@ -130,6 +130,7 @@ func main() {
                }
        }
 
+       //range nodes3
        instanceDetail3, err := scc.GetServiceInstanceInfo(metaData3)
        nodes3, ok := instanceDetail3.([]*model.MetaDataRegister)
        if !ok {
diff --git a/example/consul_client/consul_client_test.go 
b/example/consul_client/consul_client_test.go
index 15bcb2c..05aab4c 100644
--- a/example/consul_client/consul_client_test.go
+++ b/example/consul_client/consul_client_test.go
@@ -358,8 +358,8 @@ func TestEntireConsulFunction(t *testing.T) {
        time.Sleep(time.Second)
 
        //get nodes
-       instanceDetail, err := scc.GetServiceInstanceInfo(metaData1)
-       nodes1, ok := instanceDetail.([]*model.MetaDataRegister)
+       instanceDetail1, err := scc.GetServiceInstanceInfo(metaData1)
+       nodes1, ok := instanceDetail1.([]*model.MetaDataRegister)
        assert.NotNil(t, nodes1)
        assert.True(t, ok)
        assert.Nil(t, err)

Reply via email to