应用私有
少于1分钟
简要概述
对于通过 grpc-kit-cli
生成的每个微服务模版,如果它们存在需要个性化配置与数据结构,那么可以在这里定义。
配置示例
independent:
name: grpc-kit
数据结构
在 github.com/grpc-kit/pkg/cfg 中内置的数据结构,这个由框架管理,用户无法自定义:
type LocalConfig struct {
......
Independent interface{} `json:",omitempty"` // 应用私有配置
......
}
在生成各服务模版的结构,这个由用户自定义:
package modeler
// IndependentCfg 个性配置
type IndependentCfg struct {
Name string `mapstructure:"name"`
}
// Init 用于初始化实例
func (i *IndependentCfg) Init() error {
// 业务代码
return nil
}
应用场景
一个自定义服务
生成以下 app.yaml
配置项:
# 应用私有配置
independent:
# 消息数据写入kafka的topic
message:
cmdb:
# 资产类信息
topic: uptime-alertmanager
metric:
# 性能指标类
topic: uptime
# 主机注册的相关配置
registry:
default:
host_ttl: 60
heartbeat: 10
在对应的 modeler/independent_cfg.go
中数据结构为:
// IndependentCfg 个性配置
type IndependentCfg struct {
Message MessageConfig `mapstructure:"message"`
Registry RegistryConfig `mapstructure:"registry"`
}
// MessageConfig 用于kafka消息的配置
type MessageConfig struct {
CMDB struct {
Topic string `mapstructure:"topic"`
} `mapstructure:"cmdb"`
Metric struct {
Topic string `mapstructure:"topic"`
Drop bool `mapstructure:"drop"`
} `mapstructure:"metric"`
}
// RegistryConfig xx
type RegistryConfig struct {
Default ConfigContent `mapstructure:"default"`
}
// ConfigContent 一个具体的配置项
type ConfigContent struct {
// Address 隧道的地址
Address []string `mapstructure:"address"`
// 主机注册存活的时间
HostTTL int `mapstructure:"host_ttl"`
// 维持主机心跳时间,必须小于 host_ttl
Heartbeat int `mapstructure:"heartbeat"`
}
最后修改 26.12.2023: feat: 添加前端静态托管文档 (2fdddb5)