Nacos使用说明

nacos官方网站 https://nacos.io/zh-cn/docs/v2/what-is-nacos.html

1、基本配置说明

nacosIP地址:http://xxxxx:8848/nacos/ 服务管理端登录账号:nacos XXX

Java最小配置,其他客户端可参考,配置可对应到第三章的其他客户端实现

spring:

application:

name: xxx #未配置前缀默认前缀

profiles:

active: dev #Java的区分配置文件

cloud:

nacos:

config:

server-addr: xxxx:8848 #nacos地址端口

file-extension: yml #后缀

refresh-enabled: true #动态刷新应用配置

prefix: application #前缀

group: xxxx #通过具体项目模块区分,后端为xxxx

username: nacos

password: xxxxx #后期会做调整以及权限管理

namespace: xxxx #以具体环境为准,现有DEV,TEST,PROD

2.抽取配置

可将所有可配置的内容,包括但不限于Kafka地址,数据库地址,服务器IP,或者具体的一些参数或者日志等级等抽取为一个配置文件,支持yaml和properties方式,然后定义Data ID和Group,Data ID为配置文件名,具体加载规则根据客户端而定,Group则为模块名如后端为xxx,其他名称根据自身组件命名见名知意,然后将配置做好三个环境区分,DEV,TEST,PROD,然后配置相应的namespace

读取维度第一是namespace为环境隔离,生产测试开发,第二是Group为各自项目命名,dataid为具体配置名称。

以下三个配置(红色框内)维度确定到唯一配置:

3、核心概念(对应上图)

官方文档:https://nacos.io/zh-cn/docs/v2/quickstart/quick-start.html

命名空间: 用于进行租户粒度的配置隔离。不同的命名空间下,可以存在相同的Group 或Data ID的配置。Namespace 的常用场景之一是不同环境的配置的区分隔离,例如开发测试环境和生产环境的资源(如配置、服务)隔离等。

配置集: 一组相关或者不相关的配置项的集合称为配置集。在系统中,一个配置文件通常就是一个配置集,包含了系统各个方面的配置。例如,一个配置集可能包含了数据源、线程池、日志级别等配置项。

配置集 ID: Nacos 中的某个配置集的 ID。配置集 ID 是组织划分配置的维度之一。Data ID 通常用于组织划分系统的配置集。一个系统或者应用可以包含多个配置集,每个配置集都可以被一个有意义的名称标识。Data ID 通常采用类 Java 包(如 com.taobao.tc.refund.log.level)的命名规则保证全局唯一性。此命名规则非强制。

配置分组: Nacos 中的一组配置集,是组织配置的维度之一。通过一个有意义的字符串(如Buy 或Trade )对配置集进行分组,从而区分 Data ID 相同的配置集。当您在Nacos 上创建一个配置时,如果未填写配置分组的名称,则配置分组的名称默认采用 DEFAULT_GROUP 。配置分组的常见场景:不同的应用或组件使用了相同的配置类型,如database_url 配置和MQ_topic 配置。

4、各个客户端连接示例代码仅供参考:

2.1python:

要使用Python客户端连接Nacos配置中心,您需要安装Nacos Python客户端库。可以使用pip命令安装该库,如下所示:

pip install nacos-sdk-python

安装完成后,您可以使用以下代码连接到Nacos配置中心:

from nacos import NacosClient

client = NacosClient('localhost:8848', namespace='example_namespace')

data_id = 'example_data_id'

group = 'example_group'

content = client.get_config(data_id, group)

print(content)

这里创建了一个NacosClient实例,并将Nacos Server的地址和命名空间作为参数传递。接下来,使用get_config方法从配置中心获取特定的配置项。您需要指定数据ID和组名,以便从配置中心检索正确的配置。

如果要向配置中心写入配置,可以使用以下代码:

from nacos import NacosClient

client = NacosClient('localhost:8848', namespace='example_namespace')

data_id = 'example_data_id'

group = 'example_group'

content = 'example_content'

client.publish_config(data_id, group, content)

在这里,使用publish_config方法将配置写入Nacos配置中心。您需要指定数据ID、组名和配置内容。

2.2go:

要使用Go语言连接到Nacos配置中心,您可以使用Nacos Go客户端库。可以使用go get命令安装该库,如下所示:

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

安装完成后,您可以使用以下代码连接到Nacos配置中心:

package main

import (

"fmt"

"github.com/nacos-group/nacos-sdk-go/clients/config_client"

"github.com/nacos-group/nacos-sdk-go/common/constant"

"github.com/nacos-group/nacos-sdk-go/common/logger"

)

func main() {

// 创建配置客户端

configClient, err := config_client.NewConfigClient(

constant.NewClientConfig(

// Nacos Server地址

[]constant.ServerConfig{

{

IpAddr: "localhost",

Port: 8848,

},

},

constant.WithNamespaceId("example_namespace"),

),

)

if err != nil {

logger.Error("创建配置客户端失败:", err)

return

}

// 从配置中心获取配置

dataId := "example_data_id"

group := "example_group"

content, err := configClient.GetConfig(

constant.ConfigParam{

DataId: dataId,

Group: group,

},

)

if err != nil {

logger.Error("获取配置失败:", err)

return

}

fmt.Println(content)

}

在这里,创建了一个配置客户端实例,并将Nacos Server的地址和命名空间作为参数传递。接下来,使用GetConfig方法从配置中心获取特定的配置项。您需要指定数据ID和组名,以便从配置中心检索正确的配置。

如果要向配置中心写入配置,可以使用以下代码:

package main

import (

"fmt"

"github.com/nacos-group/nacos-sdk-go/clients/config_client"

"github.com/nacos-group/nacos-sdk-go/common/constant"

"github.com/nacos-group/nacos-sdk-go/common/logger"

)

func main() {

// 创建配置客户端

configClient, err := config_client.NewConfigClient(

constant.NewClientConfig(

// Nacos Server地址

[]constant.ServerConfig{

{

IpAddr: "localhost",

Port: 8848,

},

},

constant.WithNamespaceId("example_namespace"),

),

)

if err != nil {

logger.Error("创建配置客户端失败:", err)

return

}

// 向配置中心写入配置

dataId := "example_data_id"

group := "example_group"

content := "example_content"

success, err := configClient.PublishConfig(

constant.ConfigParam{

DataId: dataId,

Group: group,

Content: content,

},

)

if err != nil {

logger.Error("写入配置失败:", err)

return

}

fmt.Println(success)

}

在这里,使用PublishConfig方法将配置写入Nacos配置中心。您需要指定数据ID、组名和配置内容。

2.3bash/openAPI:

您可以使用curl命令从Nacos配置中心获取配置内容。假设您的Nacos Server运行在localhost:8848上,并且您要获取名为example_data_id的配置项,组名为example_group,您可以使用以下命令:

curl -X GET 'http://localhost:8848/nacos/v1/cs/configs?dataId=example_data_id&group=example_group'

如果您已经将命名空间设置为example_namespace,则需要使用以下命令:

curl -X GET 'http://localhost:8848/nacos/v1/cs/configs?dataId=example_data_id&group=example_group&namespaceId=example_namespace'

如果Nacos配置中心启用了安全认证,您需要在curl命令中指定用户名和密码。假设您的用户名为example_user,密码为example_password,您可以使用以下命令:

curl -X GET 'http://example_user:example_password@localhost:8848/nacos/v1/cs/configs?dataId=example_data_id&group=example_group'

这些命令将返回一个JSON格式的响应,其中包含名为example_data_id的配置项的内容。您可以使用标准的Bash命令来解析和处理响应。例如,您可以使用jq工具来提取JSON响应中的特定字段:

curl -X GET 'http://localhost:8848/nacos/v1/cs/configs?dataId=example_data_id&group=example_group' | jq -r '.content'

这将返回名为example_data_id的配置项的内容,您可以将其存储在一个变量中或使用其他标准Bash命令对其进行处理。