ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

微服务中的配置中心nacos讲解

2022-03-19 12:05:53  阅读:338  来源: 互联网

标签:group err 配置 namespace nacos 讲解 data id


为什么需要分布式配置中心

不使用配置中心存在的问题

使用配置中心的方便

配置中心的选型


  1. 命名空间的作用:可以隔离配置集,将某些配置集放到某一个命名空间下,命名空间我们一般用来区分微服务
  2. DataId: 配置集,一般一个配置集就是一个配置文件,实际上可以更灵活
  3. 组:抛出一个问题,现在确实能够隔离微服务,但是不同的微服务的开发、测试、生产环境如何区别,组可以用来区别开发、测试、生产环境

python操作nacos配置

github 源码

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

  1. nacos-skd-go中文文档
  2. 代码实现
点击查看代码
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 {}

}

标签:group,err,配置,namespace,nacos,讲解,data,id
来源: https://www.cnblogs.com/mayanan/p/16000826.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有