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 !
+```