Skip to content

Commit

Permalink
tweak from command
Browse files Browse the repository at this point in the history
  • Loading branch information
郑力升 committed Dec 15, 2023
1 parent 4dc7a7e commit 049745a
Showing 1 changed file with 69 additions and 14 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
title: "Nacos"
linkTitle: "Nacos"
date: 2023-12-14
weight: 3
weight: 4
keywords: ["配置中心扩展","Nacos"]
description: "使用 Nacos 作为 Kitex 的服务治理配置中心"
---
Expand All @@ -25,6 +25,7 @@ type NacosServerSuite struct {
```

函数签名:

`func NewSuite(service string, cli nacos.Client, opts ...utils.Option) *NacosServerSuite `

示例代码:
Expand Down Expand Up @@ -62,7 +63,7 @@ func main() {
if err != nil {
panic(err)
}
serviceName := "ServiceName"
serviceName := "ServiceName" // your server-side service name
svr := echo.NewServer(
new(EchoImpl),
server.WithServerBasicInfo(&rpcinfo.EndpointBasicInfo{ServiceName: serviceName}),
Expand All @@ -88,6 +89,7 @@ type NacosClientSuite struct {
```

函数签名:

`func NewSuite(service, client string, cli nacos.Client, opts ...utils.Option) *NacosClientSuite `

示例代码:
Expand Down Expand Up @@ -126,8 +128,8 @@ func main() {
}

cl := &configLog{}
serviceName := "ServiceName"
clientName := "ClientName"
serviceName := "ServiceName" // your server-side service name
clientName := "ClientName" // your client-side service name
client, err := echo.NewClient(
serviceName,
client.WithHostPorts("0.0.0.0:8888"),
Expand All @@ -148,6 +150,59 @@ func main() {
}
```

### SetParser

设置反序列化 Nacos 配置的自定义解析器,默认支持 json 和 yaml 格式,有新的格式需要用户自己实现。

函数签名:

`func SetParser(parser ConfigParser)`

```go
// ConfigParser the parser for nacos config.
type ConfigParser interface {
Decode(kind vo.ConfigType, data string, config interface{}) error
}
```

示例代码:

设置解析 xml 类型的配置
```go
package main

import (
"encoding/xml"

"sigs.k8s.io/yaml"
"github.com/kitex-contrib/config-nacos/nacos"
)

type parser struct{}

// Decode decodes the data to struct in specified format.
func (p *parser) Decode(kind vo.ConfigType, data string, config interface{}) error {
switch kind {
case vo.YAML, vo.JSON:
// since YAML is a superset of JSON, it can parse JSON using a YAML parser
return yaml.Unmarshal([]byte(data), config)
case vo.XML:
return xml.Unmarshal([]byte(data), config)
default:
return fmt.Errorf("unsupported config data type %s", kind)
}
}


func main() {
client, err := nacos.NewClient(etcd.Options{})
if err!=nil {
panic(err)
}
client.SetParser(&parser{})
}
```

### Nacos 配置

根据 Options 的参数初始化 client,建立链接之后 suite 会根据 `Group` 以及 `ServerDataIDFormat` 或者 `ClientDataIDFormat` 订阅对应的配置并动态更新自身策略,具体参数参考下面 `Options` 变量。
Expand All @@ -156,7 +211,7 @@ func main() {

#### CustomFunction

允许用户自定义 nacos 的参数.
允许用户自定义 nacos 的参数

#### Options 默认值

Expand All @@ -173,7 +228,8 @@ func main() {

下面例子中的 configDataId 以及 configGroup 均使用默认值,服务名称为 ServiceName,客户端名称为 ClientName

##### 限流 Category=limit
##### 限流
Category=limit
> 限流目前只支持服务端,所以 ClientServiceName 为空。
[JSON Schema](https://github.com/cloudwego/kitex/blob/develop/pkg/limiter/item_limiter.go#L33)
Expand All @@ -199,7 +255,8 @@ func main() {
- 「未配置」或「取值为 0」表示不开启
- connection_limit 和 qps_limit 可以独立配置,例如 connection_limit = 100, qps_limit = 0

##### 重试 Category=retry
##### 重试
Category=retry

[JSON Schema](https://github.com/cloudwego/kitex/blob/develop/pkg/retry/policy.go#L63)

Expand All @@ -222,7 +279,7 @@ func main() {
"max_retry_times": 3,
"max_duration_ms": 2000,
"cb_policy": {
"error_rate": 0.5
"error_rate": 0.3
}
},
"backoff_policy": {
Expand Down Expand Up @@ -253,7 +310,8 @@ func main() {
```
注:retry.Container 内置支持用 * 通配符指定默认配置(详见 [getRetryer](https://github.com/cloudwego/kitex/blob/v0.5.1/pkg/retry/retryer.go#L240) 方法)

##### 超时 Category=rpc_timeout
##### 超时
Category=rpc_timeout

[JSON Schema](https://github.com/cloudwego/kitex/blob/develop/pkg/rpctimeout/item_rpc_timeout.go#L42)

Expand All @@ -275,7 +333,8 @@ func main() {
```
注:kitex 的熔断实现目前不支持修改全局默认配置(详见 [initServiceCB](https://github.com/cloudwego/kitex/blob/v0.5.1/pkg/circuitbreak/cbsuite.go#L195)

##### 熔断: Category=circuit_break
##### 熔断:
Category=circuit_break

[JSON Schema](https://github.com/cloudwego/kitex/blob/develop/pkg/circuitbreak/item_circuit_breaker.go#L30)

Expand All @@ -299,10 +358,6 @@ echo 方法使用下面的配置(0.3、100),其他方法使用全局默认
}
```

### 更多信息

更多示例请参考 [example](https://github.com/kitex-contrib/config-nacos/tree/main/example)

## 兼容性
该包使用 Nacos1.x 客户端,Nacos2.0 和 Nacos1.0 服务端完全兼容该版本. [详情](https://nacos.io/zh-cn/docs/v2/upgrading/2.0.0-compatibility.html)

Expand Down

0 comments on commit 049745a

Please sign in to comment.