文章目录
一、什么配置中心?
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插件
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秒,等待配置文件变化
}
}
打印结果

总结
感觉观看,加油
1335

被折叠的 条评论
为什么被折叠?



