海风影像馆 海风影像馆
首页
扎根医疗
学习笔记
技术实战
项目管理
影像空间
驴行天下
阳明心学
  • 学习方法
  • 心情杂货
  • 实用技巧
  • 友情链接
  • 分类
  • 标签
  • 归档

知行旅人

生有热烈,藏于俗常。
首页
扎根医疗
学习笔记
技术实战
项目管理
影像空间
驴行天下
阳明心学
  • 学习方法
  • 心情杂货
  • 实用技巧
  • 友情链接
  • 分类
  • 标签
  • 归档
  • 编程笔记

    • ES查询压测
    • Spring Cloud Stream
    • 配置Prometheus及健康检测
    • RabbitMQ配置备忘
    • Nacos配置中心
      • 1 Nacos配置
        • 1.1 项目配置
        • 1.2 配置参数说明
        • 1.3 服务启动配置
        • 1.4 配置自动刷新
        • 1.5 配置中心隔离级别
        • 1.6 共享配置文件
    • Java代码杂记
    • Mysql并发数与连接数
  • 源码阅读

  • 技巧备忘

  • 问题排查

  • 安装部署

  • 博客搭建

  • 技术实战
  • 编程笔记
zhixinglvren
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-xxx
  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: XXX_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-xxx-dev.yaml中的dev就是指开发环境。

提示

当spring.profile.active为空时,对应的环境定义字符将不存在,如:service-xxx.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-xxx.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-xxx-dev.yml,除去数据库连接外的其他的所有配置,属于子项目(服务)内部的个性化配置。

spring:
  application:
    name: service-xxx
  cloud:
    nacos:
      discovery:
        server-addr: xxxx.xxx.xxx.xxx:8848
      config:
        server-addr: xxxx.xxx.xxx.xxx:8848
        extension-configs:
          - data-id: service-xxx-dev.yaml
            group: XXX_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),否则会出现读取不到配置问题

上次更新: 2022/11/25, 11:12:43
RabbitMQ配置备忘
Java代码杂记

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

最近更新
01
Linux常用指令
11-24
02
GitHub高级搜索技巧
11-24
03
散列表
11-09
更多文章>
Theme by Vdoing | Copyright © 2020-2023 知行旅人 | MIT License | 粤ICP备20036515号-1
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式