【个人技术经验及开发技巧分享】 【个人技术经验及开发技巧分享】
首页
  • 操作系统初识
  • JAVA基础
  • JVM
  • 开发框架
  • Redis
  • Zookeeper
  • 消息中间件
  • 持久化
  • 算法
  • 网络
  • 系统架构
  • 并发编程
  • 框架
  • 开发杂货
  • 线上排查
  • 技巧备忘
  • 部署指南
  • 版本管理
  • 工作流程
  • 发版流程
  • 友情链接
  • 网站备忘
  • 在线工具
  • 学习
  • 各种云
  • 应用下载

Louis

首页
  • 操作系统初识
  • JAVA基础
  • JVM
  • 开发框架
  • Redis
  • Zookeeper
  • 消息中间件
  • 持久化
  • 算法
  • 网络
  • 系统架构
  • 并发编程
  • 框架
  • 开发杂货
  • 线上排查
  • 技巧备忘
  • 部署指南
  • 版本管理
  • 工作流程
  • 发版流程
  • 友情链接
  • 网站备忘
  • 在线工具
  • 学习
  • 各种云
  • 应用下载
  • 开发杂货

    • ES查询压测
    • Spring Cloud Stream
    • 线上Tomcat配置参考
    • 配置Prometheus及健康检测
    • Feign支持BasicAuth验证
    • Feign远程调用
    • Hystrix单方法熔断配置
    • 邮件发送自定义Excel
    • 本地开发联调配置
    • RabbitMQ配置备忘
    • Nacos配置中心
      • 1 Nacos配置
        • 1.1 项目配置
        • 1.2 配置参数说明
        • 1.3 服务启动配置
        • 1.4 配置自动刷新
        • 1.5 配置中心隔离级别
        • 1.6 共享配置文件
    • Java代码杂记
    • Oracle脚本备忘
    • Mysql并发数与连接数
    • 批量算费本地工具类
    • Apollo配置模糊查询
    • 异步任务AsyncIAE
    • 生产环境机器配置参考
  • 线上排查

  • 技巧备忘

  • 部署指南

  • 技术应用
  • 开发杂货
luoxiaofeng
2022-06-13
目录

Nacos配置中心

# 1 Nacos配置

# 1.1 项目配置

在服务的pom文件中引入如下配置

<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
1
2
3
4

新建配置文件 bootstrap.yml ,新增spring.cloud.nacos.config段配置,将服务指向正确的nacos服务端。该配置文件中只保留nacos相关的配置即可,其他的配置放到nacos中统一管理。

spring:
  application:
    name: service-louis
  cloud:
    nacos:
      discovery: 
        server-addr: xxxx.xxx.xx.xx:8848 #服务注册地址
      config:
        server-addr: xxxx.xxx.xx.xx:8848 #服务配置地址
        file-extension: yaml   #nacos配置文件后缀,下文配置发布的时候会用到。注意是yaml,不是yml
        group: LOUIS_GROUP  #配置分组,默认分组是DEFAULT_GROUP
1
2
3
4
5
6
7
8
9
10
11

注意

上面这些属性必须配置在 bootstrap.yml或properties 文件中,而不是 application.yml 中,config配置内容才能被正确加载。

因为 bootstrap.yml 加载优先级高于 application.yml ,保证在应用一起动时就去加载配置,对于Spring一些自动装载类来说这很重要。

# 1.2 配置参数说明

image-20220613171911574

Data Id : 该配置文件在nacos系统内的唯一标识。

# 在 Nacos Spring Cloud 中的完整格式如
${prefix}-${spring.profile.active}.${file-extension}
1
2
  1. prefix 默认为 spring.application.name 的值,也可以通过配置项 spring.cloud.nacos.config.prefix来自定义配置。

  2. spring.profile.active 即为当前环境对应的 profile,如:service-louis-dev.yaml中的dev就是指开发环境。

提示

当spring.profile.active为空时,对应的环境定义字符将不存在,如:service-louis.yaml

  1. file-exetension 为配置内容的数据格式,可以通过配置项 spring.cloud.nacos.config.file-extension来配置。目前只支持 properties 和 yaml 类型。注意我们使用的是 yaml 类型,不是 yml 。虽然二者是一个意思,但是nacos只认 yaml 。

Group:同spring.cloud.nacos.config.group配置,Group起到配置“隔离”的作用。

# 1.3 服务启动配置

启动服务的时候,加上-Dspring.profiles.active=dev参数,这个参数是和DataId匹配的,如:

  1. -Dspring.profiles.active=dev会去找xxxxx-dev.yaml配置文件。

  2. -Dspring.profiles.active=pro会去找xxxxx-pro.yaml配置文件。

# 启动服务并加载`aservice-rbac-dev.yaml`配置文件
java -jar service-louis.jar -Dspring.profiles.active=dev
1
2

# 1.4 配置自动刷新

大部分配置管理中心, @Value 和 @ConfigurationProperties 都需要配合 @RefreshScope 注解才能实现动态刷新,但也有例外。

配置管理平台 Value ConfigurationProperties
nacos 需要结合RefreshScope才能生效 需要结合RefreshScope才能生效
apollo 不需要结合RefreshScope就能生效(例外) 需要结合RefreshScope才能生效
spring cloud config 需要结合RefreshScope才能生效 需要结合RefreshScope才能生效

结合springcloud ,@Value获取最新值要加 @RefreshScope 注解,配置文件中配置 refresh: true

下面两个例子都可以将nacos配置 user.password键对应的值热更新到 password 和 defaultPwd 对象上。这两个注解需要结合@RefreshScope注解使用才能使配置动态更新生效。

@RefreshScope   //这里需要加上RefreshScope注解
@ConfigurationProperties(prefix = "user")
public class User{
    private String password;
}
1
2
3
4
5
@RefreshScope   //这里需要加上RefreshScope注解
public class Test{
    @Value("${user.password}")
    private String defaultPwd;
}
1
2
3
4
5

# 1.5 配置中心隔离级别

隔离级别
举例一
举例二
namespace(一级) 一套部署环境一个namespace。
如:DEV开发环境;PRO生产环境
一个公司的一个部门建立一个namespace。
如:开发一部,开发二部
group(二级) 一个微服务综合项目一个组 一个微服务综合项目一个组
dataid(三级) 微服务配置文件xxxx.yaml、yyyy.yaml 微服务配置文件xxxx-dev.yaml、xxxx-pro.yaml来区分部署环境

例:

spring:
  cloud:
    nacos:
      ##服务的注册
      discovery:
        server-addr: xxxx.xxx.xxx.xxx:8848
        namespace: xxxxx
      ##服务配置中心
      config:
        server-addr: xxxx.xxx.xxx.xxx:8848
        file-extension: yaml
        namespace: xxxxxx
        group: cloudwarehouse-eur-test
1
2
3
4
5
6
7
8
9
10
11
12
13

# 1.6 共享配置文件

例:

两份配置文件:

一份叫做common-datasource.yaml,放在DEFAULT_GROUP默认分组下,是数据库连接等配置,属于公有配置。

一份仍然叫做service-louis-dev.yml,除去数据库连接外的其他的所有配置,属于子项目(服务)内部的个性化配置。

spring:
  application:
    name: service-louis
  cloud:
    nacos:
      discovery:
        server-addr: xxxx.xxx.xxx.xxx:8848
      config:
        server-addr: xxxx.xxx.xxx.xxx:8848
        extension-configs:
          - data-id: service-louis-dev.yaml
            group: LOUIS_GROUP
            refresh: true
          - data-id: common-datasource.yaml
            group: DEFAULT_GROUP
            refresh: false
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

注意

nacos配置DataId需要将配置文件后缀加上(.yaml),否则会出现读取不到配置问题

RabbitMQ配置备忘
Java代码杂记

← RabbitMQ配置备忘 Java代码杂记→

最近更新
01
SpringBoot
10-21
02
Spring
10-20
03
Sentinel
10-14
更多文章>
Copyright © 2022-2023 Louis | 粤ICP备2022060093号-1
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式