go语言操作之nacos配置中心
作者:中二的灰太狼
这篇文章主要介绍了go语言操作之nacos配置中心,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
go语言nacos配置中心
nacos配置中心,由于是阿里开发的,所以官方文档支持中文,非常友好,这是官方的go的SDK,已经非常详细了
下面是例子,演示了golang如何使用从nacos获取配置的信息,返回的是字符串
package main import ( "fmt" "github.com/nacos-group/nacos-sdk-go/clients" "github.com/nacos-group/nacos-sdk-go/common/constant" "github.com/nacos-group/nacos-sdk-go/vo" "time" ) func main() { // 至少一个ServerConfig serverConfigs := []constant.ServerConfig{ { IpAddr: "192.168.72.146", Port: 8848, }, } // 创建clientConfig clientConfig := constant.ClientConfig{ NamespaceId: "1cf91be1-d0e3-4494-aef7-b3cb8177e04e", // 如果需要支持多namespace,我们可以场景多个client,它们有不同的NamespaceId。当namespace是public时,此处填空字符串。 TimeoutMs: 5000, NotLoadCacheAtStart: true, LogDir: "tmp/nacos/log", CacheDir: "tmp/nacos/cache", RotateTime: "1h", MaxAge: 3, LogLevel: "debug", } // 创建动态配置客户端的另一种方式 (推荐) configClient, err := clients.NewConfigClient( vo.NacosClientParam{ ClientConfig: &clientConfig, ServerConfigs: serverConfigs, }, ) if err != nil { panic(err) } //获取配置信息 //content, err := configClient.GetConfig(vo.ConfigParam{ // DataId: "user-web.yaml", // Group: "dev"}) //if err != nil { // fmt.Println("GetConfig err: ",err) //} //监听配置 err = configClient.ListenConfig(vo.ConfigParam{ DataId: "user-web.yaml", Group: "dev", OnChange: func(namespace, group, dataId, data string) { fmt.Println("group:" + group + ", dataId:" + dataId + ", data:" + data) }, }) if err!=nil{ return } time.Sleep(time.Second*1000) }
结果:
go使用nacos配置中心进行服务组件配置
go使用nacos配置中心进行服务组件配置.
这里因为没用viper 进行本地配置文件的解析.
所以使用的直接是nacos的明文配置.
zhe
func initNacosFrom() { serverConfigs := []constant.ServerConfig{ //指定nacos服务地址.配置连接信息 { //IpAddr: Nacos.Host, //这里是指定nacos的服务连接地址 //Port: Nacos.Port, //指定端口号 // IpAddr: "192.168.75.6", //这里是指定nacos的服务连接地址 Port: 8848, //指定端口号 }, } clientConfig := constant.ClientConfig{ //配置客户端配置信息.用来做客户端初始化配置. TimeoutMs: 5000, //连接超时时间 NamespaceId: "8774e75a-fbe8-4b29-8194-4e70f482924d", //这里写的是命名空间的地址.用哪个就写哪个,这里用的是dev的命名空间 //NamespaceId: , //这里写的是命名空间的地址.用哪个就写哪个,这里用的是dev的命名空间 CacheDir: "nacos/cache", //nacos缓存目录 NotLoadCacheAtStart: true, //配置是否在服务启动时直接加载缓存?? UpdateCacheWhenEmpty: false, //配置当缓存为空的时候进行主动更新 LogDir: "nacos/log", //日志目录 LogLevel: "debug", //日志级别 } configClient, err := clients.CreateConfigClient(map[string]interface{}{ //根据nacos的地址信息和需要的配置页面信息生成一个客户端. "serverConfigs": serverConfigs, "clientConfig": clientConfig, }) if err != nil { panic(err) } content, err := configClient.GetConfig(vo.ConfigParam{ //读取在页面上配置好de相关信息. // 这里用的是dev分组中的account_web配置.以后这里的配置可以使用viper进行参数配置. DataId: "account_all.json", Group: "dev", }) if err != nil { panic(err) } err = json.Unmarshal([]byte(content), &AppConf) if err != nil { fmt.Println(err) zap.S().Error("反序列化错误") } }
这里声明的方法信息用在初始化配置时使用,按在init函数中。
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。