nacos配置中心的使用(精通)

Nacos是综合型解决方案
服务治理
服务的发现
配置管理

一、Nacos的启动方式

nacos:注册中心
解压到,非中文名的文件夹下,进入bin目录中,在路径处,输入cmd打开密令窗口

正常启动命令:startup.cmd -m standalone

集群启动命令:startup.cmd -m cluster
验证是否成功启用: http://localhost:8848/nacos

二、配置管理

  1. 提交和获取配置信息

提交配置信息:post请求http://localhost:8848/nacos/v1/cs/configs地址发送请求提交配置信息dataId、group、content三个参数,content为配置内容

获取配置信息:get请求http://localhost:8848/nacos/v1/cs/configs地址发送请求获取配置信息dataId、group两个参数

  1. nacos数据库支持

  1. 默认数据库

默认使用的嵌入式数据库,增删改查不方便
  1. Mysql数据库

⑴ 创建数据库添加表结构
可以使用mysql数据库进行存储nacos数据,在数据库中创建nacos_config库,执行nacos/conf/nacos-mysql.sql文件,创建表结构和数据
⑵ 修改nacos配置文件

修改nacos1.4.2\conf\application.properties文件,将数据库信息修改完整

IP地址、库名、账号、密码等,配置信息如下:
spring.datasource.platform=mysql
db.num=1
db.url.0=jdbc:mysql://localhost:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user.0=root
db.password.0=root

修改完成后,运行nacos

⑶ 添加配置信息

点击+按钮

添加配置信息,配置格式固定,并点击提交按钮

⑷ 查看数据是否已经存在数据库中

三、在Maven项目中获取配置信息

  1. 添加依赖

    <dependency>
         <groupId>com.alibaba.nacos</groupId>
         <artifactId>nacos-client</artifactId>
         <version>1.3.2</version>
    </dependency>
  1. 编写获取配置信息的类


public class SimpleDemoMain {
    public static void main(String[] args) throws NacosException {
        // nacos的访问地址
        String serverAddr = "192.168.16.125:8848";
        // data id
        String dataId = "nacos-simple-demo.yaml";
        // group
        String group = "DEFAULT_GROUP";
        // 创建properties属性,作用是将dataId和group两个属性放进去,先创建出来
        Properties properties = new Properties();
        // 指定nacos地址添加到properties属性中
        properties.put("serverAddr", serverAddr);
        // 获取配置
        ConfigService configService = NacosFactory.createConfigService(properties);
        // 传递的三个属性:dataId、group、超时时间
        String config = configService.getConfig(dataId, group, 5000);
        System.out.println("配置信息:" + config);
    }
}

四、配置模型

对于nacos的配置管理,通过Namespace命名空间、group分组、Data ID文件名称,能够定位到一个配置集

  1. 配置集(data ID)

一个配置文件就是一个配置集,一个配置集可以包含系统的各种配置信息,例如:一个配置集可以包含了数据源、线程池、日志级别等配置项,每个配置集可以定义一个有意义的名称,就是配置集的ID即Data ID
  1. 配置项

配置集中包含的一个个的配置内容就是配置项,它代表一个具体的可配置的参数与其值域,通常以key=value的形式存在,例如:配置系统的日志输出级别 logLevel=INFO|WARN|EROR 就是一个配置项
  1. 配置分组(Group)

配置分组是对配置集进行分组,通过一个有意义的字符串来表示,不同的配置分组下可以有相同的配置集(Data ID),当在Nacos上创建一个配置时,如果未填写配置分组名称,则配置分组的名称默认采用DEFAULT_GROUP,配置分组的常用场景:可用于区分不同的项目或应用,例如:学生管理系统的配置集可以定义group为:STUDENT_GROUP
  1. 命名空间(Namespace)

命名空间可用于进行不同环境的配置隔离,例如可以隔离开发环境、测试环境和生产环境,因为他们的配置各不相同,或者时隔离不同的用户,不同的开发人员使用同一个nacos管理各自的配置,可通过namespace隔离,不同的命名空间下,可以存在相同名称的配置分组(Group)或配置集

最佳实践

Namespace:代表不同环境,如:开发、测试、生产环境;
Group:代表某项目,如XX医疗项目、XX电商项目
DataId:每个项目下往往有若干个工程,每个配置集(DataId)是一个工程的主配置文件

五、命名空间(namespace)

  1. 创建命名空间

作用:将配置信息进行隔离

  1. 通过项目读取配置信息

Nacos中的数据

向properties属性中添加命名空间ID,就会从指定的命名空间中读取配置信息,

properties属性中不添加命名空间ID,默认会读取保留空间(public)的配置信息

六、导航菜单栏(配置管理)

  1. 配置列表

  1. 命名空间的切换

  1. 增、删、批量删、遍历、详情、查询等

  1. 导出、导入:可以将配置文件导出到本地,可以将配置文件从本地导入到nacos页面

  1. 克隆:可以将一个命名空间的配置文件克隆到另一个命名空间

  1. 历史版本

  1. 命名空间的切换

  1. 通过Data ID和Group查询历史修改记录

  1. 查看历史修改记录的详情

  1. 可以通过历史记录进行回滚

  1. 监听查询

当后台有程序进行监听nacos配置修改情况时,可以查询到监听的地址

也可以通过服务器IP地址查询监控的配置Data ID和Group

后端监听代码

运行结果

七、登录管理

  1. 添加依赖

<dependency>
    <groupId>org.springframework.security</groupId>
    <artifactId>spring-security-core</artifactId>
    <version>5.5.4</version>
</dependency>
  1. 获取加密的密码

代码如下:


public static void main(String[] args) {
    // 获取加密密码
    String encode = new BCryptPasswordEncoder().encode("123");
    System.out.println("加密后的密码:"+encode);
}

运行结果:123:$2a$10$k91omOHSw36IqsjxpiTlw.M93m.ZZWXlZCnppfS52c2sZmYAJRmQy

  1. 添加数据库用户信息

Sql:向用户表和角色表添加信息,将生成的密码添加进去


INSERT INTO USERS(username,PASSWORD,enabled) VALUES('小马','$2a$10$o/OZjz/JOO/Vi0H4iu9LeeOdtunj4ru35IJQrxAUdbrQCbA9gUCWW',true);

INSERT INTO roles (username,role) VALUES('小马','ROLE_ADMIN');

测试登录

  1. 设置免登录

修改nacos1.4.2\conf\application.properties配置文件,配置信息如下

spring.security.enabled=false
management.security=false
security.besic.enabled=false
nacos.securtiy.ignore.urls=/**

修改后重新启动nacos,关闭浏览器重新访问:localhost:8848/nacos

八、在Maven项目中动态读取配置

子项目继承父项目

  1. 父子项目中添加依赖

⑴ 父项目中添加依赖,设置好版本,小心版本冲突问题

<!--表示为父工程,方便进行管理-->
<packaging>pom</packaging>

<properties>
    <project.build.sourceEncoding>UTF_8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF_8</project.reporting.outputEncoding>
    <java.version>1.8</java.version>
</properties>

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-alibaba-dependencies</artifactId>
            <version>2.1.0.RELEASE</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>Greenwich.RELEASE</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-dependencies</artifactId>
            <version>2.1.3.RELEASE</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>

⑵ 子项目中添加依赖

<artifactId>service1</artifactId>

<dependencies>
    <dependency>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
</dependencies>
  1. 添加读取nacos的yml配置文件

注意:该配置要放在bootstrap.xml配置文件中,千万不要放在application.xml配置文件中,bootstrap.xml优先级大于application.xml的优先级,文件拓展名dataId和测试组名称要与nacos中对应,namespace是nacos中的命名空间id,一定要与nacos的各属性名称一致
spring:
  application:
    name: service1
  cloud:
    nacos:
      config:
        # 配置中心地址
        server-addr: 192.168.16.125:8848
        # 配置文件扩展名 data ID的名称就是application的name加file-extension service1.yaml
                # 如果这里是properties文件,就设置为:properties,相对应配置文件扩展名 data ID就为service1.properties
                        file-extension: yaml
                        # 开发环境,这里的值是nacos中的命名空间id,从nacos中获取
                        namespace: 5149b373-af61-4bdd-a19c-589d2c71179e
                        # 测试组,从nacos中获取
                        group: TEST_GROUP
  1. 设置启动类,测试读取配置信息

⑴ 设置启动类=>测试静态读取配置信息=>测试动态读取信息

这里直接在启动类进行的测试,可以自定义controller类进行测试

⑵ Nacos中配置信息:

⑶ 运行项目查看配置结果是否一致:

  1. 自定义拓展dataId(实现读取多个nacos配置文件)

⑴ 添加配置进行测试(方法一建议使用)

在bootstrap.xml配置文件中添加配置

# 读取多个配置文件,下标从0开始
ext-config[0]:
  # 设置dataId 如果不设置group默认为DEFAULT_GROUP
  data-id: ext-config-common01.properties
# 未设置动态刷新配置,所以在nacos中修改会不会刷新
ext-config[1]:
  data-id: ext-config-common02.properties
  group: GLOBALE_GROUP
# 设置了动态配置所以可以动态刷新
ext-config[2]:
  data-id: ext-config-common03.properties
  group: REFRESH_GROUP
  # 动态刷熊
  refresh: true

进行测试:

测试结果:

Nacos中的配置:

⑵ 添加配置进行测试(方法二不建议使用)

注意:这个配置方式只能识别分组名称为DEFAULT_GROUP(默认)的文件,在bootstrap.xml配置文件中添加配置
# 读取多个nacos配置文件,只识别组名为DEFAULT_GROUP(默认)的文件
shared-dataids: ext-config-common01.properties,ext-config-common02.properties,ext-config-common03.properties
# 设置文件可以动态刷新配置文件
refreshable-dataids: ext-config-common01.properties

进行测试:

测试结果:

Nacos中的配置:

  1. 配置的优先级(看图)

九、nacos集群

至少三个nacos

  1. 修改nacos\conf\application.properties文件

将每个nacos文件的端口号设置成不同的例如:8848、8849、8850

设置ip地址:127.0.0.1

修改完成后,项目的配置文件也要修改ip地址和端口号,多个用逗号分割

  1. 修改nacos\conf\cluster.conf.example文件

文件名修改为cluster.conf

修改里面内容,格式为:ip地址:端口号,分别指定所有nacos,例如:

192.168.16.101:8847

192.168.16.102:8848

192.168.16.103:8849

  1. 启动所有nacos


集群启动命令:startup.cmd -m cluster

当nacos启动后,有一个nacos宕机后,nacos还可以正常使用

  • 15
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Nacos可以作为配置中心使用,它是一种主流的配置中心解决方案之一。作为配置中心Nacos可以用于管理和动态更新应用程序的配置信息。为什么需要使用配置中心呢?因为在微服务架构中,应用程序的配置信息可能分散在不同的地方,如果需要修改配置,就需要修改多个地方的配置文件,非常不便捷。而使用配置中心可以集中管理和动态更新配置信息,使得配置的修改和更新更加方便。 在使用Nacos作为配置中心时,可以通过Spring Boot来进行整合。通过在应用程序中引入Nacos的相关依赖,配置Nacos的连接信息,就可以通过Nacos来管理应用程序的配置了。 配置的动态刷新是配置中心最核心的功能之一。当需要修改配置时,可以直接在Nacos中修改配置,然后配置中心会自动将修改的配置信息推送给应用程序,使得配置的更新可以实时生效。例如,如果需要修改配置项user.name的值,可以直接在Nacos中修改为"zhangsan",然后配置中心会将新的配置更新到应用程序中,使得应用程序获取到最新的配置信息。这样,就避免了重启应用程序来使配置生效的操作。 因此,使用Nacos作为配置中心可以方便地管理和更新应用程序的配置信息,并且实现配置的动态刷新。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [Nacos配置中心用法详细介绍](https://blog.csdn.net/a745233700/article/details/122916208)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

i源

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值