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

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


The following commit(s) were added to refs/heads/main by this push:
     new 4fce5f5db4 [type:feat] Add remain client Golang docs (#764) (#771)
4fce5f5db4 is described below

commit 4fce5f5db4df6b121920d8d0b7cffe6b88303a51
Author: Lisandro <[email protected]>
AuthorDate: Fri Sep 30 10:43:15 2022 +0800

    [type:feat] Add remain client Golang docs (#764) (#771)
    
    Co-authored-by: lishuo <[email protected]>
---
 .../current/consul.md                              | 188 +++++++++++++++++++++
 .../current/etcd.md                                | 116 +++++++++++++
 .../current/nacos.md                               | 132 +++++++++++++++
 .../current/zookeeper.md                           | 119 +++++++++++++
 shenyuClientGolang/consul.md                       | 185 ++++++++++++++++++++
 shenyuClientGolang/etcd.md                         | 118 +++++++++++++
 shenyuClientGolang/nacos.md                        | 131 ++++++++++++++
 shenyuClientGolang/zookeeper.md                    | 121 +++++++++++++
 8 files changed, 1110 insertions(+)

diff --git 
a/i18n/zh/docusaurus-plugin-content-docs-shenyuClientGolang/current/consul.md 
b/i18n/zh/docusaurus-plugin-content-docs-shenyuClientGolang/current/consul.md
new file mode 100644
index 0000000000..5d0f3c9563
--- /dev/null
+++ 
b/i18n/zh/docusaurus-plugin-content-docs-shenyuClientGolang/current/consul.md
@@ -0,0 +1,188 @@
+---
+title: "Consul示例"
+---  
+
+## 以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/i18n/zh/docusaurus-plugin-content-docs-shenyuClientGolang/current/etcd.md 
b/i18n/zh/docusaurus-plugin-content-docs-shenyuClientGolang/current/etcd.md
new file mode 100644
index 0000000000..619626fd03
--- /dev/null
+++ b/i18n/zh/docusaurus-plugin-content-docs-shenyuClientGolang/current/etcd.md
@@ -0,0 +1,116 @@
+---
+title: "Etcd示例"
+---  
+
+## 以Etcd方式注册到ShenYu网关
+
+**1.首先确保你的Etcd环境是正确,然后设置这些Etcd必要的参数 .**
+
+```go
+    //开始创建ShenYuEtcdClient 
+    ecp := &etcd_client.EtcdClientParam{
+    EtcdServers: []string{"http://127.0.0.1:2379"}, //需要用户提供
+    UserName : "" // 可选参数etcd访问账号名
+    Password : "" // 可选参数etcd访问密码
+    TTL:    50, // 可选参数 key生存时间
+    }
+
+    sdkClient := shenyu_sdk_client.GetFactoryClient(constants.ETCD_CLIENT)
+    client, createResult, err := sdkClient.NewClient(ecp)
+    if !createResult && err != nil {
+    logger.Fatal("Create ShenYuEtcdClient error : %v", err)
+    }
+    
+    etcd := client.(*etcd_client.ShenYuEtcdClient)
+    defer etcd.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 := etcd.RegisterServiceInstance(metaData1)
+    if !registerResult1 && err != nil {
+    logger.Fatal("Register etcd Instance error : %v", err)
+    }
+    
+    registerResult2, err := etcd.RegisterServiceInstance(metaData2)
+    if !registerResult2 && err != nil {
+    logger.Fatal("Register etcd Instance error : %v", err)
+    }
+    //做你的逻辑处理
+```
+
+**4.使用客户端进行注册节点信息删除**
+
+```go
+    //选择性调用
+    deRegisterResult1, err := etcd.DeregisterServiceInstance(metaData1)
+        if err != nil {
+            panic(err)
+        }
+
+    deRegisterResult2, err := etcd.DeregisterServiceInstance(metaData2)
+        if err != nil {
+            panic(err)
+        }
+```
+
+**5.使用客户端获取注册节点的信息**
+
+```go
+   //开始调用GetServiceInstanceInfo
+    instanceDetail, err := etcd.GetServiceInstanceInfo(metaData1)
+    nodes1, ok := instanceDetail.([]*model.MetaDataRegister)
+    if !ok {
+    logger.Fatal("get etcd 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 := etcd.GetServiceInstanceInfo(metaData2)
+    nodes2, ok := instanceDetail2.([]*model.MetaDataRegister)
+    if !ok {
+    logger.Fatal("get etcd client metaData error %v:", err)
+    }
+
+```
+
+## 完整的成功日志
+
+```go
+2022-08-16 10:18:55 [INFO] 
[github.com/shenyu-client-golang/clients/etcd_client/etcd_client.go:66] Create 
customer etcd client success!
+2022-08-16 10:18:55 [INFO] 
[github.com/shenyu-client-golang/clients/etcd_client/etcd_client.go:142] 
RegisterServiceInstance,result:true
+2022-08-16 10:18:55 [INFO] 
[github.com/shenyu-client-golang/clients/etcd_client/etcd_client.go:142] 
RegisterServiceInstance,result:true
+2022-08-16 10:18:56 [INFO] 
[github.com/shenyu-client-golang/example/etcd_client/etcd_client.go:71] 
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-08-16 10:18:56 [INFO] 
[github.com/shenyu-client-golang/example/etcd_client/etcd_client.go:85] 
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-08-16 10:18:56 [INFO] 
[github.com/shenyu-client-golang/example/etcd_client/etcd_client.go:89] > 
DeregisterServiceInstance start
+2022-08-16 10:19:33 [INFO] 
[github.com/shenyu-client-golang/example/etcd_client/etcd_client.go:101] 
DeregisterServiceInstance success !
+```
diff --git 
a/i18n/zh/docusaurus-plugin-content-docs-shenyuClientGolang/current/nacos.md 
b/i18n/zh/docusaurus-plugin-content-docs-shenyuClientGolang/current/nacos.md
new file mode 100644
index 0000000000..378b4337f9
--- /dev/null
+++ b/i18n/zh/docusaurus-plugin-content-docs-shenyuClientGolang/current/nacos.md
@@ -0,0 +1,132 @@
+---
+title: "Nacos示例"
+---  
+
+## 以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/i18n/zh/docusaurus-plugin-content-docs-shenyuClientGolang/current/zookeeper.md
 
b/i18n/zh/docusaurus-plugin-content-docs-shenyuClientGolang/current/zookeeper.md
new file mode 100644
index 0000000000..0e6c0bf5ef
--- /dev/null
+++ 
b/i18n/zh/docusaurus-plugin-content-docs-shenyuClientGolang/current/zookeeper.md
@@ -0,0 +1,119 @@
+---
+title: "Zookeeper示例"
+---  
+
+## 以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/shenyuClientGolang/consul.md b/shenyuClientGolang/consul.md
new file mode 100644
index 0000000000..113b5e79da
--- /dev/null
+++ b/shenyuClientGolang/consul.md
@@ -0,0 +1,185 @@
+---
+description: Consul
+title: Consul Example
+---
+## 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/shenyuClientGolang/etcd.md b/shenyuClientGolang/etcd.md
new file mode 100644
index 0000000000..77b0c7cf40
--- /dev/null
+++ b/shenyuClientGolang/etcd.md
@@ -0,0 +1,118 @@
+---
+description: Etcd
+title: Etcd Example
+---
+## The Etcd type Register
+
+**1.Fist make sure your Etcd env is correct,the set this necessary param.**
+
+```go
+    //Create ShenYuEtcdClient  start
+    ecp := &etcd_client.EtcdClientParam{
+    EtcdServers: []string{"http://127.0.0.1:2379"}, // require user provider
+    UserName : "" // optional param etcd userName
+    Password : "" // optional param etcd pwd
+    TTL:    50, // optional param key live
+    }
+    
+    sdkClient := shenyu_sdk_client.GetFactoryClient(constants.ETCD_CLIENT)
+    client, createResult, err := sdkClient.NewClient(ecp)
+    if !createResult && err != nil {
+    logger.Fatal("Create ShenYuEtcdClient error : %v", err)
+    }
+    
+    etcd := client.(*etcd_client.ShenYuEtcdClient)
+    defer etcd.Close()  
+    //Create ShenYuEtcdClient 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 := etcd.RegisterServiceInstance(metaData1)
+        if !registerResult1 && err != nil {
+        logger.Fatal("Register etcd Instance error : %v", err)
+    }
+
+    registerResult2, err := etcd.RegisterServiceInstance(metaData2)
+        if !registerResult2 && err != nil {
+        logger.Fatal("Register etcd Instance error : %v", err)
+    }
+    //do your logic
+```
+
+**4.use client to invoke DeregisterServiceInstance**
+
+```go
+    //your can chose to invoke,not require
+    deRegisterResult1, err := etcd.DeregisterServiceInstance(metaData1)
+        if err != nil {
+        panic(err)
+        }
+
+    deRegisterResult2, err := etcd.DeregisterServiceInstance(metaData2)
+        if err != nil {
+        panic(err)
+        }
+```
+
+**5.use client to GetServiceInstanceInfo**
+
+```go
+    //GetServiceInstanceInfo start
+    instanceDetail, err := etcd.GetServiceInstanceInfo(metaData1)
+        nodes1, ok := instanceDetail.([]*model.MetaDataRegister)
+        if !ok {
+        logger.Fatal("get etcd 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 := etcd.GetServiceInstanceInfo(metaData2)
+        nodes2, ok := instanceDetail2.([]*model.MetaDataRegister)
+        if !ok {
+            logger.Fatal("get etcd client metaData error %v:", err)
+    }
+    //GetServiceInstanceInfo end
+
+```
+
+## Entire Success log
+
+```go
+2022-08-16 10:18:55 [INFO] 
[github.com/shenyu-client-golang/clients/etcd_client/etcd_client.go:66] Create 
customer etcd client success!
+2022-08-16 10:18:55 [INFO] 
[github.com/shenyu-client-golang/clients/etcd_client/etcd_client.go:142] 
RegisterServiceInstance,result:true
+2022-08-16 10:18:55 [INFO] 
[github.com/shenyu-client-golang/clients/etcd_client/etcd_client.go:142] 
RegisterServiceInstance,result:true
+2022-08-16 10:18:56 [INFO] 
[github.com/shenyu-client-golang/example/etcd_client/etcd_client.go:71] 
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-08-16 10:18:56 [INFO] 
[github.com/shenyu-client-golang/example/etcd_client/etcd_client.go:85] 
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-08-16 10:18:56 [INFO] 
[github.com/shenyu-client-golang/example/etcd_client/etcd_client.go:89] > 
DeregisterServiceInstance start
+2022-08-16 10:19:33 [INFO] 
[github.com/shenyu-client-golang/example/etcd_client/etcd_client.go:101] 
DeregisterServiceInstance success !
+```
diff --git a/shenyuClientGolang/nacos.md b/shenyuClientGolang/nacos.md
new file mode 100644
index 0000000000..913c815e93
--- /dev/null
+++ b/shenyuClientGolang/nacos.md
@@ -0,0 +1,131 @@
+---
+description: Nacos
+title: Nacos Example
+---
+## 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/shenyuClientGolang/zookeeper.md b/shenyuClientGolang/zookeeper.md
new file mode 100644
index 0000000000..5b87d1628a
--- /dev/null
+++ b/shenyuClientGolang/zookeeper.md
@@ -0,0 +1,121 @@
+---
+description: Zookeeper
+title: Zookeeper Example
+---
+## 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 !
+```

Reply via email to