目前 Viper 支持的 Remote 远程读取配置如 etcd, consul;目前还没有对Nacos进行支持。Viper for Nacos 是一个开源的 Nacos 的 Viper 支持库,实现这个仓库的主要目的是为了,最终集成到我们的 yoyogo 框架中。
Viper是适用于Go应用程序的完整配置解决方案。它被设计用于在应用程序中工作,并且可以处理所有类型的配置需求和格式。
viper.SetConfigFile("./config.yaml") // 指定配置文件路径
viper.SetConfigName("config") // 配置文件名称(无扩展名)
viper.SetConfigType("yaml") // 如果配置文件的名称中没有扩展名,则需要配置此项
viper.AddConfigPath("/etc/appname/") // 查找配置文件所在的路径
viper.AddConfigPath("$HOME/.appname") // 多次调用以添加多个搜索路径
viper.AddConfigPath(".") // 还可以在工作目录中查找配置
err := viper.ReadInConfig() // 查找并读取配置文件
if err != nil { // 处理读取配置文件的错误
panic(fmt.Errorf("Fatal error config file: %s \n", err))
}
本篇文章重点着重于remote部分,Nacos的支持.
在Viper中启用远程支持,需要在代码中匿名导入viper/remote这个包。
import _ "github.com/spf13/viper/remote"
通过remote,Viper将支持读取从Key/Value存储( 例如etcd或Consul或本文中的Nacos ).
磁盘上的配置文件 > 命令行标志位 > 环境变量 > 远程Key/Value存储 > 默认值 。
引用我们的开源库 https://github.com/yoyofxteam/nacos-viper-remote
import (
"github.com/spf13/viper"
remote "github.com/yoyofxteam/nacos-viper-remote"
)
在项目中使用:
runtime_viper := viper.New()
// 配置 Viper for Nacos 的远程仓库参数
remote.SetOptions(&remote.Option{
Url: "localhost", // nacos server 多地址需要地址用;号隔开,如 Url: "loc1;loc2;loc3"
Port: 80, // nacos server端口号
NamespaceId: "public", // nacos namespace
GroupName: "DEFAULT_GROUP", // nacos group
Config: remote.Config{ DataId: "config_dev" }, // nacos DataID
Auth: nil, // 如果需要验证登录,需要此参数
})
err := remote_viper.AddRemoteProvider("nacos", "localhost", "")
remote_viper.SetConfigType("yaml")
_ = remote_viper.ReadRemoteConfig() //sync get remote configs to remote_viper instance memory . for example , remote_viper.GetString(key)
_ = remote_viper.WatchRemoteConfigOnChannel() //异步监听Nacos中的配置变化,如发生配置更改,会直接同步到 viper实例中。
appName := remote_viper.GetString("key") // sync get config by key
fmt.Println(appName)
// 这里不是必须的,只为了监控Demo中的配置变化,并打印出来
go func() {
for {
time.Sleep(time.Second * 30) // 每30秒检查配置是否发生变化
appName = config_viper.GetString("yoyogo.application.name")
fmt.Println(appName)
}
}()
实现这个仓库的主要目的是为了,最终集成到我们的yoyogo框架中。
https://gitee.com/yoyofx/nacos-viper-remote
https://gitee.com/yoyofx/yoyogo
���� YoyoGo is a simple, light and fast , dependency injection based micro-service framework written in Go. Support Nacos ,Consoul ,Etcd ,Eureka ,kubernetes.
配置文件加载: 主流的配置文件格式:toml、yaml、json、xml、ini(conf、properties) 配置的来源:文本文件、环境变量、配置中心(携程开源的apollo配置中心、nacos) 支持配置热加载 viper是适用于GO应用程序的完整配置解决方案。它被设计用于在应用程序中工作,并且可以处理所有类型的配置需求和格式。 安装 go get github.com/spf13/vip
viper是用来读取的配置的库,viper可以从环境变量,yaml文件,json文件,命令行等读取配置,存到自己的key,value中 话不多说,看示例 go get github.com/spf13/viper 设置默认值 func InitConfig() { v := viper.New() v.SetDefault("ContentDir", "content") fmt.Prin
golang 实现nacos获取配置和服务注册-支持集群 初始化客户端,结构体中IpAddres 可以配置多个地址 package utils import ( "github.com/nacos-group/nacos-sdk-go/clients/config_client" "github.com/nacos-group/nacos-sdk-go/clients/naming_clie
我明白了。错误和不理解缺少的部分。 在nod和chromedriver上安装了chromehttps://github.com/SeleniumHQ/selenium/wiki/ChromeDriver 用Chrome驱动程序测试 消息:测试方法SeleniumGridSimkeTest.单元测试1.引发异常:System.无效操作异常:无法创建新服务: ChromeDriverService构建
本文向大家介绍Oracle 配置远程访问教程,包括了Oracle 配置远程访问教程的使用技巧和注意事项,需要的朋友参考一下 服务端配置 如果不想自己写,可以通过 Net Manager 来配置. 以下配置文件中的 localhost 改为 ip 地址,否则,远程不能访问. 1.网络监听配置 多个IP时,如下: 2.TNS 配置 多个IP时,如下: 3.停止和启动服务 先停止以下服务,然后再启动.
我创建了一个新的存储库: 然后我想将我的提交推送到github上创建的空远程存储库,因此我必须设置远程。 使用以下命令之间有什么区别 最后我执行推送: 当我在之后调用时会发生什么?是否创建来源?如果origin在之后已经存在,那么在我的场景中使用这些命令没有区别,对吧?
Firebase远程配置有其他选择吗?我需要为中国市场提供一个应用程序,我不确定它是否会起作用
在创建adobe公共存储库的远程存储库时,我正在努力进行一个使用JFrog Artifictory云的简单测试。 我配置一个远程作为maven存储库,在URL我已经插入https://repo.adobe.com/nexus/content/repositories/public和测试确定的名称只是给一个adobe-public名称,并点击保存和完成。 在那之后,我试图从中获得一个现有的(在rep
利用光环板的Wi-Fi功能,可以实现账号云广播,云广播通过互联网将消息或数值传递给舞台角色,从而实现舞台角色与硬件的互动。本程序中,实现了通过点击舞台中的灯泡,远程控制光环板灯环亮灭的功能。 启用上传模式 点击启用上传模式。 舞台背景与角色 1. 删除默认角色Panda 2. 选择“背景”,点击“造型”,添加背景“Office3” 3. 选择“角色”,添加“bulb”,并设置造型为“bulb2”
似乎至少有三种方法可以做听起来相同的事情。 他们的区别是什么 注意:这看起来可能是这个的重复,但这些答案是不完整的,并且不能解释更改URL与“远程”的区别? 编辑: 做一些进一步的谷歌搜索:从这个SO答案中: git中的远程基本上是另一个存储库的书签,您可能希望从中提取或推送代码。带书签的存储库可能位于本地计算机上的另一个文件夹、远程服务器上,甚至可能是存储库本身。。。但最简单的类比是书签。存储库