golang使用nacos配置中心


一、什么配置中心?

1.1 无配置中心

在微服务架构中,当系统从一个单体应用,被拆分成分布式系统上一个个服务节点后,配置文件也必须跟着迁移(分割),这样配置就分散了。不仅如此,分散中还伴随着冗余。如果需要修改配置,需要在每个服务上做一遍修改
在这里插入图片描述

1.2 建立配置中心

创建配置中心,将配置从各个应用中剥离出来,对配置进行统一管理,应用自身不需要自己去管理配置。
配置中心的服务流程:首先,用户在配置中心更新配置信息;然后,服务群及时得到配置更新通知,并从配置中心获取最新配置。
总体来说,配置中心就是一种统一管理各种应用配置的基础服务组件。
在这里插入图片描述
在系统架构中,配置中心是整个微服务基础架构体系中的一个组件,它的功能看上去并不起眼,无非就是配置的管理和存取,但它是整个微服务架构中不可或缺的一环。

二、nacos下载安装

首先确保docker运行正常

2.1 下载并运行nacos

docker pull nacos
docker run -d --name mynacos -p 8848:8848 -e JVM_XMS=512m -e JVM_XMX=512m -e JVM_XMN=256m -e MODE=standalone  nacos/nacos-server

访问ip:8848/nacos
输入默认账号密码:
账号:nacos
密码:nacos

在这里插入图片描述

3.2 创建配置信息

三、nacos使用

3.1 创建命名空间

在这里插入图片描述

3.2 创建配置文件

找对对应的命名空间 上边我们创建的命名空间为 nacos_test
在这里插入图片描述
写入配置文件(可以是多种类型的这里我们以yml为例)

如果yml配置内容不清楚的话 自行了解

在这里插入图片描述

四、golang获取nacos的配置

4.1 安装golang插件

github地址

go get -u github.com/nacos-group/nacos-sdk-go/v2

简单获取nacos配置

package main

import (
	"fmt"
	"time"

	"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"
	"gopkg.in/yaml.v2"
)

// 解析nacos_test.yml配置文件 和上边的字段保持一致
type NacosTestConfig struct {
	Name string `json:"name" yaml:"name" mapstructure:"name"`
	Host string `json:"host" yaml:"host" mapstructure:"host"`
	Port int    `json:"port" yaml:"port" mapstructure:"port"`
}

func main() {
	serverConfig := []constant.ServerConfig{
		{
			IpAddr: "127.0.0.1", //nacos 地址
			Port:   8848,             //nacos 端口
		},
	}

	clientConfig := &constant.ClientConfig{
		NamespaceId:         "44d23f48-afbe-45c4-8a49-7563749d3cfb", //命名空间 比较重要 拿取刚才创建的命名空间ID
		TimeoutMs:           5000,
		NotLoadCacheAtStart: true,
		LogDir:              "/tmp/nacos/log",
		CacheDir:            "/tmp/nacos/cache",
		LogLevel:            "debug",
	}

	configClient, err := clients.NewConfigClient(
		vo.NacosClientParam{
			ClientConfig:  clientConfig,
			ServerConfigs: serverConfig,
		},
	)

	if err != nil {
		//读取配置文件失败
		panic(err)
	}
	var dataId = "nacos_test.yml"
	var group = "dev"
	content, err := configClient.GetConfig(vo.ConfigParam{
		DataId: dataId, //配置文件名
		Group:  group,  //配置文件分组
	})
	if err != nil {
		//读取配置文件失败
		panic(err)
	}

	fmt.Println(content) //这里我们打印一下配置文件的内容

	// 解析配置文件
	var nacosTestConfig *NacosTestConfig
	yaml.Unmarshal([]byte(content), &nacosTestConfig)
	fmt.Println(nacosTestConfig) //这里我们打印一下解析后的配置文件内容

	// 监听配置文件变化
	err = configClient.ListenConfig(vo.ConfigParam{
		DataId: dataId, //配置文件名
		Group:  group,
		OnChange: func(namespace, group, dataId, data string) {
			fmt.Println("配置文件发生变化:", dataId, group, namespace)
			fmt.Println(data) //这里我们打印一下配置文件的内容
			// 解析配置文件
			var nacosTestConfig *NacosTestConfig
			yaml.Unmarshal([]byte(data), &nacosTestConfig)
			fmt.Println(nacosTestConfig) //这里我们打印一下解析后的配置文件内容
		},
	})
	if err != nil {
		panic(err)
	}

	time.Sleep(time.Second * 100) // 这里我们休眠100秒,等待配置文件变化

}


}

打印结果
在这里插入图片描述


总结

感觉观看,加油

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值