nacos配置中心入门

目录

1 Nacos 简介

2 Nacos 作为配置中心的优势

3 安装与启动

3.1 下载 Nacos

3.2 安装前的系统要求

3.3 启动 Nacos Server

3.3.1 在本地环境启动(单机模式)

3.3.2 集群模式(生产环境)

4 配置中心的基础使用

4.1 通过控制台管理配置

4.1.1 创建新配置

4.1.2 查看和编辑配置

4.2 客户端读取配置

4.2.1 引入依赖

4.2.2 配置 Nacos 地址

4.2.3 取配置数据

4.3 动态刷新配置

4.4 配置监听

5 总结


Nacos 简介

  • 定义与背景:Nacos(Naming and Configuration Service)是一个由阿里巴巴开源的服务发现和配置管理平台。它支持动态服务发现、配置管理和服务健康监控,广泛应用于微服务架构。

  • 核心功能:Nacos 主要提供两大核心功能:服务发现和配置管理。作为配置中心,它的功能尤其突出在于管理和动态更新分布式系统中的配置。

Nacos 作为配置中心的优势

  • 动态配置更新:支持配置的实时推送和更新,不需要重启应用即可使配置生效。

  • 中化管理:提供统一的界面来管理所有的配置,便于运维。

  • 多环境支持:支持多环境隔离,方便不同环境下的配置管理。

  • 丰富的 API:支持 RESTful API,可灵活地与各种编程语言集成。

安装与启动

3.1 下载 Nacos
  1. 从官网或 GitHub 下载:前往 Nacos 官方 GitHub 页面 下载最新稳定版本的二进制包。例如,nacos-server-2.x.x.zip。

  2. 解压缩:将下载的压缩文件解压到指定目录。

3.2 安装前的系统要求
  • 操作系统:支持 Linux、Windows、MacOS 等。

  • Java 环境:确保已安装 Java 8 或更高版本,并将 JAVA_HOME 设置为正确的路径。

3.3 启动 Nacos Server
3.3.1 在本地环境启动(单机模式)
 

//单机模式适合本地开发和简单测试:

//进入解压目录 cd nacos/bin。

//在 Linux/Mac 上运行:-m standalone 参数表示以单机模式启动,而不是集群模式。 ./startup.sh -m standalone

//在 Windows 上运行: startup.cmd -m standalone

//启动成功后,默认会在 http://localhost:8848/nacos 启动控制台。

3.3.2 集群模式(生产环境)
 

//配置集群

//编辑 conf 目录下的 cluster.conf 文件,将集群节点信息添加进去,如: 192.168.1.100:8848

192.168.1.101:8848

192.168.1.102:8848

//确保各个节点间网络互通,并启动 startup.sh 或 startup.cmd,但无需 -m standalone 参数。

//外部数据库配置

//在 conf 目录中,编辑 application.properties 文件: spring.datasource.platform=mysql

db.num=1

db.url.0=jdbc:mysql://<MYSQL_HOST>:3306/nacos_configcharacterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true

db.user=<USERNAME>

db.password=<PASSWORD>

//导入 Nacos 提供的 nacos-mysql.sql 文件到 MySQL 中,以初始化数据库。

//打开浏览器,访问 http://localhost:8848/nacos。

//默认用户名和密码(如果有权限设置)通常为 nacos/nacos,也可以在 application.properties 中修改默认账户设置。

配置中心的基础使用

4.1 通过控制台管理配置

Nacos 提供了直观的 Web 控制台,用户可以方便地创建、修改和查看配置。

4.1.1 创建新配置
  1. 登录到 Nacos 控制台,默认访问地址为 http://localhost:8848/nacos。

  2. 选择“配置管理” > “配置列表”。

  3. 点击“新建配置”按钮,填写以下信息:

  • Data ID:配置项的唯一标识,例如 myapp-config.json。

  • Group:配置所属的分组,默认分组为 DEFAULT_GROUP。可以使用分组来隔离不同的业务模块或环境。

  • 配置内容:输入具体的配置内容,如 JSON、YAML 或纯文本。例如:

 

"database.url": "jdbc:mysql://localhost:3306/mydb", "database.username": "root",

"database.password": "password"

  1. 点击“发布”保存配置。

4.1.2 查看和编辑配置
  • 返回“配置列表”页面,找到刚创建的配置项,点击其名称可以查看详情或进行修改。

  • 进行编辑后点击“发布”以应用新的配置。 

4.2 客户端读取配置

        

在应用程序中读取 Nacos 配置,需要通过客户端 SDK 进行集成。例如,使用 Spring Boot 集成 Nacos 配置中心。

4.2.1 引入依赖

在 pom.xml 中引入 Nacos 配置的依赖:

 

<!-- https://mvnrepository.com/artifact/com.alibaba.cloud/spring-cloud-starter-alibaba-nacos-config -->

<dependency>

        <groupId>com.alibaba.cloud</groupId>

        <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>

        <version>2022.0.0.0</version>

</dependency>

4.2.2 配置 Nacos 地址

在 application.properties 或 application.yml 中添加 Nacos 配置中心的地址:

 

spring.cloud.nacos.config.server-addr=127.0.0.1:8848 spring.application.name=my-app spring.cloud.nacos.config.namespace=public # 可选,指定命名空间

4.2.3 取配置数据

在代码中使用 @Value 注解来动态注入配置项:

import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class ConfigController {

    @Value("${database.url}")
    private String databaseUrl;

    @GetMapping("/config")
    public String getConfig() {
        return "Database URL: " + databaseUrl;
    }
}
4.3 动态刷新配置

Nacos 配置中心支持自动刷新配置,应用程序无需重启即可应用新配置。在 Spring Boot 中,需要在配置类或启动类上添加 @RefreshScope 注解:

import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.stereotype.Component;

@RefreshScope
@Component
public class MyConfigComponent {
    @Value("${database.url}")
    private String databaseUrl;

    @GetMapping("/config")
    public String getConfig() {
        return "Database URL: " + databaseUrl;
    }
}

4.4 配置监听

Nacos 支持配置的监听功能,应用程序可以监听配置变化并触发特定逻辑。

import com.alibaba.nacos.api.config.annotation.NacosConfigListener;
import org.springframework.stereotype.Component;

@Component
public class ConfigChangeListener {

    @NacosConfigListener(dataId = "myapp-config.json", groupId = "DEFAULT_GROUP")
    public void onChange(String newConfig) {
        System.out.println("Config updated: " + newConfig);
        // 执行更新后的逻辑
    }
}

总结

        通过这篇文章的介绍,相信你已经了解了 Nacos 作为配置中心的基本使用方法,从创建和管理配置到客户端集成和动态更新。Nacos 为分布式系统提供了安全、灵活的配置管理方案,使开发和运维人员可以轻松管理复杂的配置需求。希望这些内容能帮助你更好地应用 Nacos 来提升系统的稳定性与可维护性。如果需要更深入的研究或有进一步的问题,欢迎随时探讨!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/915790.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

NVT新能德科技入职测评SHL题库更新:数字推理+演绎推理高分答案、真题解析

新能德的入职Verify测评主要考察应聘者的逻辑推理能力、数学能力、数据分析能力以及处理信息的能力。根据搜索结果&#xff0c;测评通常包含以下几个部分&#xff1a; 1. **语言理解**&#xff1a;这部分包括阅读理解、逻辑填空和语句排序。要求应聘者在17分钟内完成30题&#…

HBase理论_背景特点及数据单元及与Hive对比

本文结合了个人的笔记以及工作中实践经验以及参考HBase官网&#xff0c;我尽可能把自己的知识点呈现出来&#xff0c;如果有误&#xff0c;还请指正。 1. HBase背景 HBase作为面向列的数据库运行在HDFS之上&#xff0c;HDFS缺乏随机读写操作&#xff0c;HBase正是为此而出现。…

Linux:进程概念

文章目录 前言一、冯诺依曼体系二、操作系统(Operator System)2.1.操作系统的概念2.2 系统调⽤和库函数概念 三. 进程3.1 基本概念3.1.1 描述进程3.1.2 task_struct 3.2 查看进程3.2.1 getpid3.2.2 proc3.2.3 getppid 总结 前言 • 课本概念&#xff1a;程序的⼀个执⾏实例&am…

el-form el-table 前端排序+校验+行编辑

一、页面 <template><div class"bg" v-if"formData.mouldData?.length 0">当前暂无模板&#xff0c;点击<view class"add" click"addMould">立即创建</view></div><div v-else><el-col :x…

jmeter常用配置元件介绍总结之后置处理器

系列文章目录 安装jmeter jmeter常用配置元件介绍总结之后置处理器 8.后置处理器8.1.CSS/JQuery提取器8.2.JSON JMESPath Extractor8.3.JSON提取器8.4.正则表达式提取器8.5.边界提取器8.5.Debug PostProcessor8.6.XPath2 Extractor8.7.XPath提取器8.8.结果状态处理器 8.后置处理…

基于Java Springboot旅游信息推荐系统

一、作品包含 源码数据库设计文档万字全套环境和工具资源部署教程 二、项目技术 前端技术&#xff1a;Html、Css、Js、Vue 数据库&#xff1a;MySQL 后端技术&#xff1a;Java、Spring Boot、MyBatis 三、运行环境 开发工具&#xff1a;IDEA 数据库&#xff1a;MySQL8.0…

基础网络安全知识

1.ctfhub技能树 1.1 Web-SQL注入 Web-SQL注入-整数型 && 字符型 && MySQL结构 参考&#xff1a;5.9.6MySql注入 Web-SQL注入-报错注入 step1: 查库名 ?id1 and extractvalue(1,concat(0x7e,database(),0x7e))-- step2: 查看表名 ?id1 and extractvalue(1…

01-Ajax入门与axios使用、URL知识

欢迎来到“雪碧聊技术”CSDN博客&#xff01; 在这里&#xff0c;您将踏入一个专注于Java开发技术的知识殿堂。无论您是Java编程的初学者&#xff0c;还是具有一定经验的开发者&#xff0c;相信我的博客都能为您提供宝贵的学习资源和实用技巧。作为您的技术向导&#xff0c;我将…

iStore OS 插件的手动安装与特殊卸载

有些插件在iStore 中并没有展示,因此需要手动安装,手动安装无法通过前端彻底卸载,本文提供方法和流程。 1.插件手动安装 1.1地址 github 项目地址根据自己需求选择。本人以x86_64 为主。 https://github.com/AUK9527/Are-u-ok/tree/main/x86 点击后下载得到run安装包 1…

neo4j desktop基本入门

下载安装不在赘述&#xff0c;本文只记述一些neo4j的基本入门操作 连接本地neo4j数据库 1. 点击ADD添加连接 端口一般是7687 账户名和密码忘记了&#xff0c;可以通过neo4j web&#xff08;默认为neo4jneo4j://localhost:7687/neo4j - Neo4j Browser&#xff09;重置密码 AL…

ElasticSearch的Python Client测试

一、Python环境准备 1、下载Python安装包并安装 https://www.python.org/ftp/python/3.13.0/python-3.13.0-amd64.exe 2、安装 SDK 参考ES官方文档: https://www.elastic.co/guide/en/elasticsearch/client/index.html python -m pip install elasticsearch一、Client 代…

强化学习入门笔记(Reinforcement Learning,RL) 强推!

由于本人的近期研究方向涉及到强化学习&#xff0c;本科时已经学习过了&#xff0c;但是感觉还是有些概念和算法没有学懂学透&#xff0c;所以想重新系统性的学习一下&#xff0c;记录了整个学习过程&#xff0c;而且对当时没有理解不是特别深刻的内容有了一些更加深刻的理解&a…

redis 原理篇 26 网络模型 Redis是单线程的吗?为什么使用单线程

都是学cs的&#xff0c;有人月薪几万&#xff0c;有人月薪几千&#xff0c;哎&#xff0c; 相信 边际效用&#xff0c; 也就是说&#xff0c; 随着技术提升的越来越多&#xff0c;薪资的提升比例会更大 一个月几万&#xff0c;那肯定是高级开发了&#xff0c; 一个月几千&…

UE4 Cook 从UAT传递参数给UE4Editor

需求 一句Cook的命令如下&#xff1a; ${EnginePath}/Engine/Build/BatchFiles/RunUAT.sh BuildCookRun -project${ClientPath}/${ProjectName}.uproject -noP4 -platformIOS -cooksinglepackage -client -clientconfig${CookConfig} -iterate -skipbuild -nocompile -NoMutex…

jmeter基础05_第1个http请求

本节课使用网站“httpbin.org”进行基础的http请求全流程。 请求获取httpbin.org的首页&#xff1a; 请求方法&#xff1a;GET URL&#xff1a;http://httpbin.org 参数&#xff1a;无 1、操作步骤 ① 打开jmeter&#xff1a;命令行窗口输入“jmeter”并回车。 ② 添加线程组…

【Ubuntu24.04】从双系统到虚拟机再到单系统的故事

故事 在大学前期&#xff0c;我使用Ubuntu系统都是为了学习一些命令或者其它Linux的东西&#xff0c;对性能的要求不高&#xff0c;所以选择了虚拟机&#xff0c;后来为了做毕设&#xff0c;选择安装了Ubuntu20.04双系统&#xff0c;因为虚拟机实在带不动&#xff0c;那时我的主…

力扣 LeetCode 18. 四数之和(Day3:哈希表)

解题思路&#xff1a; 需要先弄懂三数之和&#xff0c;思路类似 三数之和&#xff1a;指针 i &#xff0c;left &#xff0c;right 四数之和&#xff1a;指针 k &#xff0c;i &#xff0c;left &#xff0c;right&#xff08;相当于多了一个 k &#xff0c;多了一个外层 fo…

30 秒!用通义灵码画 SpaceX 星链发射流程图

不想读前人“骨灰级”代码&#xff0c; 不想当“牛马”程序员&#xff0c; 想像看图片一样快速读复杂代码和架构&#xff1f; 来了&#xff0c;灵码又加新 buff&#xff01;&#xff01; 通义灵码支持代码逻辑可视化&#xff0c; 可以把你的每段代码画成流程图。 你可以把…

sql注入之二次注入(sqlilabs-less24)

二阶注入&#xff08;Second-Order Injection&#xff09;是一种特殊的 SQL 注入攻击&#xff0c;通常发生在用户输入的数据首先被存储在数据库中&#xff0c;然后在后续的操作中被使用时&#xff0c;触发了注入漏洞。与传统的 SQL 注入&#xff08;直接注入&#xff09;不同&a…

Warped Universe游戏即将在Sui上推出,为玩家提供多样化的游戏体验

Warped Games选择Sui作为其即将推出的创新多类型游戏Warped Universe的首选Web3技术。Warped Universe让玩家可以体验第三视角实时动作、回合制策略和基地建设等玩法。该游戏使用Unreal Engine 5开发&#xff0c;将借助Sui的技术使玩家能够拥有、交易和变现其游戏内资产。 War…