欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

nacos配置中心使用

程序员文章站 2022-07-15 09:47:36
...

先将文档贴出来
https://github.com/alibaba/spring-cloud-alibaba/wiki/Nacos-config
https://nacos.io/zh-cn/docs/what-is-nacos.html

作为配置中心,我们希望这个配置中心有哪些功能以满足我们的业务需要呢?
1、配置管理 2、动态刷新 3、灰度发布 4、历史版本回滚

配置管理

1、jar包引入

<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>

2、项目中的配置
注意:配置文件名 一定是 以bootstrap命名

# 该配置 不解释  每个项目都有的  
spring.application.name=项目名

#nacos作为配置中心的配置  建议使用以下这种方式
spring.cloud.nacos.config.namespace=*****
spring.cloud.nacos.config.server-addr=配置中心的地址多个使用逗号间隔
spring.cloud.nacos.config.ext-config[0].data-id=nacos中创建的配置文件名称(完整名称 带有后缀的)
spring.cloud.nacos.config.ext-config[0].refresh=true
spring.cloud.nacos.config.ext-config[0].group=*****

3、管理后台创建对应的配置
nacos配置中心使用
data Id 的值 就是 spring.cloud.nacos.config.ext-config[0].data-id 的值
group 的值 就是 spring.cloud.nacos.config.ext-config[0].group 的值
nacos配置中心使用
上图中 箭头指向的值 就是 spring.cloud.nacos.config.namespace 的值
如果配置文件 创建在public下 可以没有 namespace 但是 创建在别的组下 namespace 就必须要有

4、项目中的配置说明及建议
引入多个配置文件
配置文件中 会看见 ext-config[0] 这种字样 实际上 这是一个配置文件组 一个项目可以在nacos后台创建多个配置文件 。项目中 想将这些配置文件引入 则可以使用 ext-config[0] ext-config[1] 这种方式
配置文件可以分为数据库 mq nacos注册中心 redis spring的 和自定义的
当项目使用的mq nacos注册中心 redis spring的配置与初始化的基本配置相同时,直接拿过来引用就好了,无需再创建,只需要创建自定义配置文件即可。

开启动态刷新
添加以下配置 即可开启动态刷新 但是前提在业务代码的类上要加入 刷新注解 @RefreshScope

spring.cloud.nacos.config.ext-config[0].refresh=true

线上环境与测试环境切换
使用 spring.profiles.active=***来区分启动的是线上环境还是测试环境或者是自己本地环境
使用方式如图,创建四个配置文件 bootstrap.properties bootstrap-dev.properties bootstrap-local.properties bootstrap-prod.properties。bootstrap.properties中只有一行配置确定使用哪个配置文件

 spring.profiles.active=local  

在项目启动脚本中添加

#线上Jenkins添加 
#-Dspring.profiles.active=prod  
#测试环境Jenkins 添加
#-Dspring.profiles.active=dev  
#本地使用 
#-Dspring.profiles.active=local

5、一些建议
建议 使用一个或几个properties类 全部接收自定义配置 在需要使用项目中 引入配置类即可
效果如下

//配置类
@RefreshScope
@Data
@Component
public class APPProperties {

    @Value("${login.code.phone.temp.id}")
    private String loginCodeTempId;

    @Value("${spring.isdev}")
    private String isDev;

    @Value("${user.name}")
    String userName;
}
//使用类
@Resource
APPProperties appProperties;

建议 在管理后台创建多个 配置文件 比如 通用的配置文件 数据库的配置文件 mq的配置文件 自定义的配置文件 通用配置可以配置不动态刷新 自定义的配置文件动态刷新 refresh=true

动态刷新

如果完成上述配置后,在管理后台 更改配置后 项目即可完成刷新

灰度发布

完成上述配置,项目启动后我们可以在nacos管理后台找到我们所有项目集群IP信息 在修改配置文件时勾选Beta发布 并将需要发布的IP 填写上 点击 发布Beta 即可(勾选完Beta发布 按钮才显示)
具体操作示意图如下
nacos配置中心使用
查看集群IP
nacos配置中心使用
回到配置文件中 修改配置文件 勾选 Beta发布 填写 需要发布的服务器IP
nacos配置中心使用
点击Beta发布后 按钮会变为 停止Bate 点击停止后,配置文件恢复
nacos配置中心使用
或者点击 发布 将配置文件 发送到全部的服务器集群上

历史版本回滚

nacos配置中心使用
点击回滚 进入详情页面 详情页面中 点击回滚配置即可
nacos配置中心使用

升级

如果想动态修改spring或者其他比如说gateway网关的配置 怎么办呢?
添加一个 一个自己的listener implements com.alibaba.nacos.api.config.listener.Listener

import com.alibaba.nacos.api.config.listener.Listener;

import java.util.concurrent.Executor;

/**
 *
 * @author qql
 * @version V1.0
 * @since 2020-01-06 17:36
 */
public class MySelfListener implements Listener {
    @Override
    public Executor getExecutor() {
        return null;
    }

    @Override
    public void receiveConfigInfo(String s) {
        System.out.println(s);
    }
}

你可以看到打印出来了配置文件(这个data-id中的全部配置)然后 就在去调用不同方法去修改配置就好了 配置文件都能拿到了 能不能修改网关等配置 就看自己怎么写了

相关标签: nacos