当前位置: 首页 > news >正文

Nacos配置中心,分组配置参考,以及python、go、bash客户端连接获取

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 #通过具体项目模块区分,后端为xxxxusername: nacospassword: 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 NacosClientclient = 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 NacosClientclient = 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 mainimport ("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 mainimport ("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命令对其进行处理。

相关文章:

Nacos配置中心,分组配置参考,以及python、go、bash客户端连接获取

Nacos使用说明 nacos官方网站 https://nacos.io/zh-cn/docs/v2/what-is-nacos.html 1、基本配置说明 nacosIP地址:http://xxxxx:8848/nacos/ 服务管理端登录账号:nacos XXX Java最小配置,其他客户端可参考,配置可对应到第三章…...

node-red中有关用户登录,鉴权,权限控制的流程解析

前言 默认地,node-red编辑器可以被任何访问的用户操作,包括修改节点,流数据,重新部署流。 这种默认的部署方式只适用于运行在可靠的网络中。下面我就给大家介绍一下,在公网上部署node-red后,如何对其进行安全加固和权限验证。 主要分为三部分 开启https权限保护编辑器和…...

MQTT协议-使用CONNECT报文连接阿里云

使用网络调试助手发送CONNECT报文连接阿里云 参考:https://blog.csdn.net/daniaoxp/article/details/103039296 在前面文章介绍了如何组装CONNECT报文,以及如何计算剩余长度 CONNECT报文:https://blog.csdn.net/weixin_46251230/article/d…...

每日学术速递3.8

CV - 计算机视觉 | ML - 机器学习 | RL - 强化学习 | NLP 自然语言处理 Subjects: cs.CV 1.Unleashing Text-to-Image Diffusion Models for Visual Perception 标题:释放用于视觉感知的文本到图像扩散模型 作者:Wenliang Zhao, Yongming Rao, Zuya…...

测牛学堂:软件测试之接口测试理论基础总结

接口概念 接口:系统之间数据交互的通道。 这个系统,可以是外部和内部,也可以是两个内部系统之间的通道。 比如我们前端的登录信息,主要是用户名和密码,它通过接口传递给后端,后端校验以后,把结…...

基于土壤数据与机器学习算法的农作物推荐算法代码实现

1.摘要 近年来,机器学习方法在农业领域的应用取得巨大成功,广泛应用于科 学施肥、产量预测和经济效益预估等领域。根据土壤信息进行数据挖掘,并在此基础上提出区域性作物的种植建议,不仅可以促进农作物生长从而带来经济效益&#…...

python中html必备基础知识

<!DOCTYPE html>此标签表示这是一个html文件<heml lang"en">向搜索引擎表示该页面是html语言&#xff0c;并且语言为英文网站&#xff0c;其"lang"的意思就是“language”&#xff0c;语言的意思&#xff0c;而“en”即表示English<head>…...

【专项训练】前言:刻意练习,不断的过遍数才是王道

如何精通一个领域? 拆分知识点刻意练习:每个区域的基础动作分解训练和反复刻意练习反馈(主动反馈、被动反馈、及时反馈)任何知识体系都是一颗树,一定要梳理成思维导图,明确知识与知识之间的关系! 通过7-8周密集训练,练好基本功,彻底攻克LeetCode! 严格执行五毒神掌!…...

【Leetcode】反转链表 合并链表 相交链表 链表的回文结构

目录 一.【Leetcode206】反转链表 1.链接 2.题目再现 3.解法A&#xff1a;三指针法 二.【Leetcode21】合并两个有序链表 1.链接 2.题目再现 3.三指针尾插法 三.【Leetcode160】相交链表 1.链接 2.题目再现 3.解法 四.链表的回文结构 1.链接 2.题目再现 3.解法 一.…...

M1、M2芯片Mac安装虚拟机

目录前言一、安装二、网络设置三、连接SSH客户端前言 一直想着给M1 Mac上安装虚拟机&#xff0c;奈何PD收费&#xff0c;找的破解也不稳定&#xff0c;安装上镜像就起不来。 注&#xff1a;挂长久的分享莫名其妙被封&#xff0c;需要安装包请私信我。 一、安装 虚拟机选择&a…...

算法刷题-只出现一次的数字、输出每天是应该学习还是休息还是锻炼、将有序数组转换为二叉搜索树

只出现一次的数字&#xff08;位运算、数组&#xff09; 给定一个非空整数数组&#xff0c;除了某个元素只出现一次以外&#xff0c;其余每个元素均出现两次。找出那个只出现了一次的元素。 说明&#xff1a; 你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗&…...

详解专利对学生、老师和企业员工、创业者、积分落户、地方补助的好处

大家好,我是英子老师。作为一名知识产权专家,深耕于专利行业十余年,具有丰富的专利工作经验:曾在大型专利代理机构从事专利代理工作、专利质检工作(抽查代理机构的专利代理人的撰写质量并评分);之后在知名上市企业、行业龙头企业担任高级专利工程师的职位,主要工作内容…...

Python图像处理:频域滤波降噪和图像增强

图像处理已经成为我们日常生活中不可或缺的一部分&#xff0c;涉及到社交媒体和医学成像等各个领域。通过数码相机或卫星照片和医学扫描等其他来源获得的图像可能需要预处理以消除或增强噪声。频域滤波是一种可行的解决方案&#xff0c;它可以在增强图像锐化的同时消除噪声。 …...

智能手机高端“酣战”,转机在何方?

经过多年发展&#xff0c;如今全世界有七成手机由中国制造&#xff0c;但在利润最丰厚的高端市场&#xff0c;国产厂商在很长一段时间之内都是形单影只&#xff0c;曾经一度跻身高端的“华为”因为封禁成了“绝唱”。 华为“失声”高端之后&#xff0c;其他一众国产厂商或主动…...

K8s pod 动态弹性扩缩容 HPA

一、概述Horizontal Pod Autoscaler&#xff08;HPA&#xff0c;Pod水平自动伸缩&#xff09;&#xff0c;根据平均 CPU 利用率、平均内存利用率或你指定的任何其他自定义指标自动调整 Deployment 、ReplicaSet 或 StatefulSet 或其他类似资源&#xff0c;实现部署的自动扩展和…...

C++中的类简要介绍

文章目录前言一、什么是类什么是对象1.类的概述2.对象的概述二、如何创建使用类三、class和struct创建类时的区别1.访问级别2.继承方式总结前言 本篇文章讲给大家介绍一个C中重要的概念&#xff0c;了解了这个概念大家就明白了为什么C会叫做面向对象编程了。 一、什么是类什么…...

项目管理工具DHTMLX Gantt灯箱元素配置教程:只读模式

DHTMLX Gantt是用于跨浏览器和跨平台应用程序的功能齐全的Gantt图表。可满足项目管理应用程序的大部分开发需求&#xff0c;具备完善的甘特图图表库&#xff0c;功能强大&#xff0c;价格便宜&#xff0c;提供丰富而灵活的JavaScript API接口&#xff0c;与各种服务器端技术&am…...

从LiveData迁移到Kotlin的 Flow,才发现是真的香!

LiveData 对于 Java 开发者、初学者或是一些简单场景而言仍是可行的解决方案。而对于一些其他的场景&#xff0c;更好的选择是使用 Kotlin 数据流 (Kotlin Flow)。虽说数据流 (相较 LiveData) 有更陡峭的学习曲线&#xff0c;但由于它是 JetBrains 力挺的 Kotlin 语言的一部分&…...

【BOOST C++】组件编程(2)-- 组件的设计原理

GitHub - ros2/demos at foxy 一、说明 为了研究ROS2的组件编程&#xff0c;首先要理解如何何为组件。组件本是微软的发明物体&#xff0c;但是在ubuntu上需要自己从底层实现&#xff0c;就说ROS2不用你写&#xff0c;但是就能看明白也是需要一点理论功底的。本篇按照COM内幕的…...

基于单细胞多组学数据无监督构建基因调控网络

在单细胞分辨率下识别基因调控网络&#xff08;GRNs&#xff0c;gene regulatory networks&#xff09;一直是一个巨大的挑战&#xff0c;而单细胞多组学数据的出现为构建GRNs提供了机会。 来自&#xff1a;Unsupervised construction of gene regulatory network based on si…...

蓝桥杯-最优清零方案(2022省赛)

蓝桥杯-最优清零方案1、问题描述2、解题思路3、代码实现1、问题描述 给定一个长度为 N 的数列 1,2,⋯,A1,A2,...,ANA_1,A_2,...,A_NA1​,A2​,...,AN​ 。现在小蓝想通过若干次操作将 这个数列中每个数字清零。 每次操作小蓝可以选择以下两种之一: 1. 选择一个大于 0 的整数, 将…...

Mac免费软件下载网站推荐(最全免费,替代MacWk)

一、Appstorrent 官方网站&#xff1a; https://appstorrent.ru/ 这是一个俄语网站&#xff0c;其他很多网站资源都来自这里。点击右上角切换到中文。不需要登录网站&#xff0c;直接从软件详情页下载即可。体验非常好。 二、Xclient 官方网站&#xff1a; https://xclie…...

GPU是什么

近期ChatGPT十分火爆&#xff0c;随之而来的是M国开始禁售高端GPU显卡。M国想通过禁售GPU显卡的方式阻挡中国在AI领域的发展。 GPU是什么&#xff1f;GPU&#xff08;英语&#xff1a;Graphics Processing Unit&#xff0c;缩写&#xff1a;GPU&#xff09;是显卡的“大脑”&am…...

20230305学习计划

目录 第二天学习开发框架 前言 一、巩固复习第一天20230304学习笔记 二、SpringMVC中的控制器是不是单例模式&#xff1f;如果是&#xff0c;如何保证线程安全&#xff1f; 1、控制器是单例模式&#xff0c;是线程不安全的。 2、Spring中保证线程安全的方法&#xff1a; …...

SocketCan 应用编程

SocketCan 应用编程 由于 Linux 系统将 CAN 设备作为网络设备进行管理&#xff0c;因此在 CAN 总线应用开发方面&#xff0c;Linux 提供了SocketCAN 应用编程接口&#xff0c;使得 CAN 总线通信近似于和以太网的通信&#xff0c;应用程序开发接口更加通用&#xff0c;也更加灵…...

从零学习python - 04函数方法与返回值

函数&#xff1a;Function-也称为方法&#xff0c;是组织好的、可重复使用的&#xff0c;用来实现指定功能的代码块。函数的定义与调用:创建函数目的是封装业务逻辑&#xff0c;实现代码复用# 创建函数关键字:def(definition)def fun1(x, y):print(x y)函数的参数:python函数中…...

MySQL实战之事务到底是隔离的还是不隔离的

1.前言 我们在MySQL实战之事务隔离&#xff1a;为什么你改了我还看不见讲过事务隔离级别的时候提到过&#xff0c;如果是可重复读隔离级别&#xff0c;事务T启动的时候会创建一个视图read-view,之后事务T执行期间&#xff0c;即使有其他事务修改了数据&#xff0c;事务T看到的…...

Elasticsearch:理解 Master,Elections,Quorum 及 脑裂

集群中的每个节点都可以分配多个角色&#xff1a;master、data、ingest、ml&#xff08;机器学习&#xff09;等。 我们在当前讨论中感兴趣的角色之一是 master 角色。 在 Elasticsearch 的配置中&#xff0c;我们可以配置一个节点为 master 节点。master 角色的分配表明该节点…...

【致敬女神】HTMLReport应用之Unittest+Python+Selenium+HTMLReport项目自动化测试实战

HTMLReport应用之UnittestPythonSeleniumHTMLReport项目自动化测试实战1 测试框架结构2 技术栈3 实现思路3.1 使用HtmlTestRunner3.2 使用HTMLReport4 TestRunner参数说明4.1 源码4.2 参数说明5 框架代码5.1 common/reportOut.py5.2 common/sendMain.py5.3 report5.3.1 xxx.htm…...

JAVA的16 个实用代码优化小技巧

一、类成员与方法的可见性最小化 举例&#xff1a;如果是一个private的方法&#xff0c;想删除就删除。 如果一个public的service方法&#xff0c;或者一个public的成员变量&#xff0c;删除一下&#xff0c;不得思考很多。 二、使用位移操作替代乘除法 计算机是使用二进制…...