nacos 配置中心使用
主要解决一个配置进行更改,所有实例都要进行配置重启的问题
命名空间:用来隔离配置,一般一个微服务一个命名空间
组:一般用来区分开发环境、测试环境、生产环境
docker 安装启动
docker run --name nacos-standalone -e MODE=standalone -e JVM_XMS=512m -e JVM_XMX=512m -e JVM_XMN=256m -p 8848:8848 -d nacos/nacos-server:latest
访问地址 http://localhost:8848/nacos/index.html
账号/密码:nacos/nacos
go 读取 nacos,使用 nacos-sdk-go
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() { // 配置中心信息 serverConfigs := []constant.ServerConfig{ { IpAddr: "192.168.1.8", ContextPath: "/nacos", Port: 8848, Scheme: "http", }, } // 客户端信息 clientConfig := constant.ClientConfig{ NamespaceId: "85e41fdb-0887-48b0-b776-1f521e5c7a6d", // 如果需要支持多namespace,我们可以场景多个client,它们有不同的NamespaceId。当namespace是public时,此处填空字符串。 TimeoutMs: 5000, NotLoadCacheAtStart: true, LogDir: "tmp/nacos/log", CacheDir: "tmp/nacos/cache", LogLevel: "debug", } // 创建动态配置客户端 configClient, err := clients.NewConfigClient( vo.NacosClientParam{ ClientConfig: &clientConfig, ServerConfigs: serverConfigs, }, ) if err != nil { panic(err) } //// 获取配置 //content, err := configClient.GetConfig(vo.ConfigParam{ // DataId: "config", // Group: "prod"}) // //if err != nil { // panic(err) //} // //fmt.Println(content) //监听配置中心变化 err = configClient.ListenConfig(vo.ConfigParam{ DataId: "config", Group: "prod", OnChange: func(namespace, group, dataId, data string) { fmt.Println("group:" + group + ", dataId:" + dataId + ", data:" + data) }, }) if err != nil { panic(err) } time.Sleep(time.Hour) }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)