go語言操作之nacos配置中心
更新時間:2023年06月12日 09:41:34 作者:中二的灰太狼
這篇文章主要介紹了go語言操作之nacos配置中心,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
go語言nacos配置中心
nacos配置中心,由于是阿里開發(fā)的,所以官方文檔支持中文,非常友好,這是官方的go的SDK,已經(jīng)非常詳細了
下面是例子,演示了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, }, } // 創(chuàng)建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", } // 創(chuàng)建動態(tài)配置客戶端的另一種方式 (推薦) 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) //} //監(jiān)聽配置 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) }
結(jié)果:
go使用nacos配置中心進行服務(wù)組件配置
go使用nacos配置中心進行服務(wù)組件配置.
這里因為沒用viper 進行本地配置文件的解析.
所以使用的直接是nacos的明文配置.
zhe
func initNacosFrom() { serverConfigs := []constant.ServerConfig{ //指定nacos服務(wù)地址.配置連接信息 { //IpAddr: Nacos.Host, //這里是指定nacos的服務(wù)連接地址 //Port: Nacos.Port, //指定端口號 // IpAddr: "192.168.75.6", //這里是指定nacos的服務(wù)連接地址 Port: 8848, //指定端口號 }, } clientConfig := constant.ClientConfig{ //配置客戶端配置信息.用來做客戶端初始化配置. TimeoutMs: 5000, //連接超時時間 NamespaceId: "8774e75a-fbe8-4b29-8194-4e70f482924d", //這里寫的是命名空間的地址.用哪個就寫哪個,這里用的是dev的命名空間 //NamespaceId: , //這里寫的是命名空間的地址.用哪個就寫哪個,這里用的是dev的命名空間 CacheDir: "nacos/cache", //nacos緩存目錄 NotLoadCacheAtStart: true, //配置是否在服務(wù)啟動時直接加載緩存?? UpdateCacheWhenEmpty: false, //配置當緩存為空的時候進行主動更新 LogDir: "nacos/log", //日志目錄 LogLevel: "debug", //日志級別 } configClient, err := clients.CreateConfigClient(map[string]interface{}{ //根據(jù)nacos的地址信息和需要的配置頁面信息生成一個客戶端. "serverConfigs": serverConfigs, "clientConfig": clientConfig, }) if err != nil { panic(err) } content, err := configClient.GetConfig(vo.ConfigParam{ //讀取在頁面上配置好de相關(guān)信息. // 這里用的是dev分組中的account_web配置.以后這里的配置可以使用viper進行參數(shù)配置. 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函數(shù)中。
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Go 并發(fā)控制context實現(xiàn)原理剖析(小結(jié))
Golang context是Golang應(yīng)用開發(fā)常用的并發(fā)控制技術(shù),這篇文章主要介紹了Go 并發(fā)控制context實現(xiàn)原理剖析(小結(jié)),具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-10-10Go Struct結(jié)構(gòu)體的具體實現(xiàn)
Go語言中通過結(jié)構(gòu)體的內(nèi)嵌再配合接口比面向?qū)ο缶哂懈叩臄U展性和靈活性,本文主要介紹了Go Struct結(jié)構(gòu)體的具體實現(xiàn),感興趣的可以了解一下2023-03-03