File
支持文件类型
json | yaml |
---|---|
✔ | ✔ |
安装
go get github.com/kitex-contrib/config-file
Suite
本地文件 的配置中心适配器,kitex 通过 WithSuite
将 本地文件 中的配置转换为 kitex 的治理特性配置。
使用方法可以分为两个步骤
- 创建文件监听器(FileWatcher)
- 使用
WithSuite
引入配置监听
Server
函数签名:
func NewSuite(key string, watcher filewatcher.FileWatcher, opts ...utils.Option) *FileConfigServerSuite
示例代码(或访问此处):
Client
函数签名:
func NewSuite(service, key string, watcher filewatcher.FileWatcher,opts ...utils.Option)*FileConfigClientSuite
示例代码(或访问此处):
NewFileWatcher
创建本地文件监听器
函数签名:
func NewFileWatcher(filePath string) (FileWatcher, error)
示例代码:
在服务端(Server)中,由于 KitexServer 的特性,我们只需要定义defer fw.StopWatching()
即可
配置
自定义解析器
定义自定义格式解析器并通过NewSuite
的option
传入,格式默认支持json
和yaml
接口定义:
示例代码:
扩展解析 YAML 类型。
治理策略
在后续样例中,我们设定服务名称为 ServiceName
,客户端名称为 ClientName
。
限流
Category=limit
限流目前只支持服务端,所以只需要设置服务端的 ServiceName。
字段 | 说明 |
---|---|
connection_limit | 最大并发数量 |
qps_limit | 每 100ms 内的最大请求数量 |
样例:
注:
- 限流配置的粒度是 Server 全局,不分 client、method
- 「未配置」或「取值为 0」表示不开启
- connection_limit 和 qps_limit 可以独立配置,例如 connection_limit = 100, qps_limit = 0
- 可以在一个 json 内编写多个服务的不同限流策略,只需要 filewatch 监控同一个文件,然后传入不同的 key 即可,如样例所示,key 即为
ServiceName
重试
Category=retry
参数 | 说明 |
---|---|
type | 0: failure_policy 1: backup_policy |
failure_policy.backoff_policy | 可以设置的策略: fixed none random |
样例:
key 为 ClientName/ServiceName
注:retry.Container 内置支持用 * 通配符指定默认配置(详见 getRetryer 方法)
超时
Category=rpc_timeout
样例:
key 为 ClientName/ServiceName
熔断
Category=circuit_break
参数 | 说明 |
---|---|
min_sample | 最小的统计样本数 |
样例: echo 方法使用下面的配置(0.3、100),其他方法使用全局默认配置(0.5、200)
key 为 ClientName/ServiceName
注:kitex 的熔断实现目前不支持修改全局默认配置(详见 initServiceCB)
更多信息
更多示例请参考 example
注意事项
客户端键名
对于单一客户端配置,您应该将它们的所有配置写入同一对$UserServiceName/$ServerServiceName
中,例如
兼容性
项目中使用了sync/atomic
在 1.19 版本加入的新特性,因此Go 的版本必须 >= 1.19