微服務中的配置中心nacos講解
阿新 • • 發佈:2022-03-19
為什麼需要分散式配置中心
不使用配置中心存在的問題
使用配置中心的方便
配置中心的選型
- 名稱空間的作用:可以隔離配置集,將某些配置集放到某一個名稱空間下,名稱空間我們一般用來區分微服務
- DataId: 配置集,一般一個配置集就是一個配置檔案,實際上可以更靈活
- 組:丟擲一個問題,現在確實能夠隔離微服務,但是不同的微服務的開發、測試、生產環境如何區別,組可以用來區別開發、測試、生產環境
python操作nacos配置
import json import nacos SERVER_ADDRESSES = "nacos.xxxxxxx.cn:80" NAMESPACE = "19225xxxxxxxxd0dca" # 這裡是namespace的id # auth mode client = nacos.NacosClient(SERVER_ADDRESSES, namespace=NAMESPACE, username="xxxxx", password="xxxxxx") # get config data_id = "user-srv.json" group = "dev" rsp = json.loads(client.get_config(data_id, group)) # 返回的是字串 for k, v in rsp.items(): print(k, v)
監聽配置檔案的變化
import json import time import nacos SERVER_ADDRESSES = "nacos.xxxx.cn:80" NAMESPACE = "19225222xxxxxxxx0dca" # 這裡是namespace的id # auth mode client = nacos.NacosClient(SERVER_ADDRESSES, namespace=NAMESPACE, username="nxxxxs", password="xxxxx") # get config data_id = "user-srv.json" group = "dev" rsp = json.loads(client.get_config(data_id, group)) # 返回的是字串 for k, v in rsp.items(): print(k, v) def test_cb(args): print("配置檔案產生變化") for k, v in args.items(): print(k, v) if __name__ == '__main__': # 監聽配置檔案的變化 client.add_config_watcher(data_id, group, test_cb) time.sleep(60)
go操作nacos
- nacos-skd-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" ) func main() { // 至少一個ServerConfig sc := []constant.ServerConfig{ { IpAddr: "nacos.xxx.cnbc", ContextPath: "/nacos", Port: 80, Scheme: "http", }, } // 建立clientConfig cc := constant.ClientConfig{ NamespaceId: "19225222-xxxxxxxxe5d0dca", // 如果需要支援多namespace,我們可以場景多個client,它們有不同的NamespaceId。當namespace是public時,此處填空字串。 TimeoutMs: 5000, NotLoadCacheAtStart: true, LogDir: "tmp/nacos/log", CacheDir: "tmp/nacos/cache", LogLevel: "debug", Username: "nacos", Password: "nacos", } // 建立動態配置客戶端的另一種方式 (推薦) configClient, err := clients.NewConfigClient( vo.NacosClientParam{ ClientConfig: &cc, ServerConfigs: sc, }, ) if err != nil{ panic(err) } // 獲取配置 content, err := configClient.GetConfig(vo.ConfigParam{ DataId: "user-web.yaml", Group: "dev", }) if err != nil{ panic(err) } fmt.Println(content) // 監聽配置變化 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{ panic(err) } select {} }