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命令对其进行处理。