上篇介绍了如何使用nacos作为配置管理中心,并使用viper来解析配置
官方介绍nacos不仅可以用来做配置中心还支持服务注册、发现以及动态DNS服务功能
在data中引入nacos服务
//使用wire注入的方式将nacos客户端注入到服务发现和服务注册
var ProviderSet = wire.NewSet(NewNacosConf, NewDiscovery, NewRegistrar)
// NewNacosConf 初始化nacos客户端服务
func NewNacosConf() vo.NacosClientParam {
localConfig := config.ThisConf()
sc := []constant.ServerConfig{
*constant.NewServerConfig(localConfig.GetString("nacos.ip"), localConfig.GetUint64("nacos.prot")),
}
cc := &constant.ClientConfig{
NamespaceId: localConfig.GetString("nacos.namespaceId"),
TimeoutMs: localConfig.GetUint64("nacos.timeoutMs"),
NotLoadCacheAtStart: localConfig.GetBool("nacos.notLoadCacheAtStart"),
LogDir: localConfig.GetString("nacos.logDir"),
CacheDir: localConfig.GetString("nacos.cacheDir"),
RotateTime: localConfig.GetString("nacos.rotateTime"),
MaxAge: localConfig.GetInt64("nacos.maxAge"),
LogLevel: localConfig.GetString("nacos.logLevel"),
}
return vo.NacosClientParam{
ClientConfig: cc,
ServerConfigs: sc,
}
}
// NewDiscovery nacos服务发现注入
func NewDiscovery(param vo.NacosClientParam) registry.Discovery {
client, err := clients.NewNamingClient(param)
if err != nil {
panic(err)
}
return nacos.New(client)
}
// NewRegistrar 服务注册业务注入
func NewRegistrar(param vo.NacosClientParam) registry.Registrar {
client, err := clients.NewNamingClient(param)
if err != nil {
panic(err)
}
return nacos.New(client)
}
在main函数中注册服务
func newApp(logger log.Logger, hs *http.Server, gs *grpc.Server, r registry.Registrar) *kratos.App {
return kratos.New(
kratos.ID(id),
kratos.Name(Name),
kratos.Version(Version),
kratos.Metadata(map[string]string{}),
kratos.Logger(logger),
kratos.Server(
hs,
gs,
),
kratos.Registrar(r),
)
}
注册之后查看nacos发现已经正常注册上去