Spring Cloud Alibaba搭建(三):Nacos配置中心

官方文档地址:https://github.com/alibaba/spring-cloud-alibaba/wiki/Nacos-config
注:Spring Cloud Alibaba 2021配置有所变更;文档地址:https://github.com/alibaba/spring-cloud-alibaba/blob/2021.x/spring-cloud-alibaba-docs/src/main/asciidoc-zh/sca-upgrade-guide.adoc

一、Nacos 配置中心介绍

Nacos 提供用于存储配置和其他元数据的 key/value 存储,为分布式系统中的外部化配置提供服务端和客户端支持。具有三个特性,分别为:易维护性、时效性、安全性。
图示Nacos与服务之间的关系
Spring Cloud Alibaba搭建(三):Nacos配置中心_第1张图片
其它配置中心对比图

对比配置中心 Spring Cloud Config Apollo Nacos
开源时间 2014.9 2016.5 2018.6
配置实时推送 支持(Spring Cloud Bus) 支持(Http 长轮询1s内) 支持(Http 长轮询1s内)
版本管理 支持(Git) 自动管理 自动管理
配置回滚 支持(Git) 支持 支持
灰度发布 支持 支持 待支持
权限管理 支持 支持 待支持
多集群多环境 支持 支持 支持
监听查询 支持 支持 支持
多语言 支持Java Go,C++,Python,Java,Net,OpenApi Python,Java,Net,OpenApi
分布式高可用最小集群数量 Config-Server*2+Git+MQ=4 Config-Server*2+Admin*3+Portal*3+Mysql=8 Nacos*3+Mysql=4
配置格式校验 不支持 支持 支持
数据一致性 Git保证数据一致性,Config-Server从Git读取数据 数据库模拟消息队列,Apollo定时读消息 Http 异步通知
单机读 7 9000 15000
单机写 5 1100 1800
3节点读 21 27000 45000
3节点写 5 3300 5600

二、Nacos管理界面开启权限控制

启用权限:修改application.properties

### If turn on auth system:(默认为 false)
nacos.core.auth.enabled=true

注意:开启权限之后,项目配置文件里面需要配置用户名和密码,否则报错:…unknown user…

三、服务端初始化

在Nacos添加如下的配置:
Spring Cloud Alibaba搭建(三):Nacos配置中心_第2张图片

在这里插入图片描述

四、客户端使用

1.添加依赖

		
		<dependency>
			<groupId>com.alibaba.cloudgroupId>
			<artifactId>spring-cloud-starter-alibaba-nacos-configartifactId>
		dependency>

2.添加配置

spring:
  application:
    name:  nacos-client1 # 应用名称(nacos会将该名称当作服务名称)
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848 # Nacos 配置中心地址 (端口不能为空)
        username: nacos # Nacos用户名,默认为 nacos
        password: nacos # Nacos密码,默认为 nacos
        namespace: public # 名称空间,默认为 public
      config:
        group: DEFAULT_GROUP
        server-addr: 127.0.0.1:8848 
  config:
    import:
#      - optional:nacos:nacos-config.yml  # 监听 DEFAULT_GROUP:nacos-config.yml
#      - optional:nacos:nacos-config.yml?group=DEFAULT_GROUP # 覆盖默认 group,监听 DEFAULT_GROUP:nacos-config.yml
      - optional:nacos:nacos-config.yml?group=DEFAULT_GROUP&refreshEnabled=false # 开启动态刷新
#      - nacos:nacos-config.yml # 在拉取nacos配置异常时会快速失败,会导致 spring 容器启动失败

3.具体代码

Spring Cloud Alibaba搭建(三):Nacos配置中心_第3张图片

五、调用结果

在这里插入图片描述

可能有小伙伴发现了用户名(userName)跟我配置的不一样,这个“ppx”从何而来?调查很久之后发现是我的系统用户名,很懵逼,有没有大佬知道具体调用原理的,求解答。
Spring Cloud Alibaba搭建(三):Nacos配置中心_第4张图片

六、自动更新(配合@RefreshScope使用)

跟新配置
Spring Cloud Alibaba搭建(三):Nacos配置中心_第5张图片
配置成功发布之后项目自动检测到配置变更了
Spring Cloud Alibaba搭建(三):Nacos配置中心_第6张图片

注意此时的配置文件

# 可以不带refreshEnabled配置,但是不能为false 否则不生效(亲测)
optional:nacos:nacos-config.yml?group=DEFAULT_GROUP
或
optional:nacos:nacos-config.yml?group=DEFAULT_GROUP&refreshEnabled=true

读取变更之后的配置
在这里插入图片描述

七、其他事项

1. server-addr中端口不能省略

2. 2021版移除了spring-cloud-starter-bootstrap依赖

由官方文档得知之前配置文件写在 bootstrap.properties (或 bootstrap.yml])中
Spring Cloud Alibaba搭建(三):Nacos配置中心_第7张图片

springboot 2.4.0 以下版本的配置

spring:
  application:
    name: nacos-client1
  cloud:
    nacos:
      config:
        server-addr: 127.0.0.1:8848 # Nacos 配置中心地址 (端口不能为空)
        file-extension: yml #指定yml格式的配置
        namespace: public
        extension-configs[0]: # 2.1.0.RELEASE版本时使用的是 ext-config
          - data-id: nacos-config.yml
            group: DEFAULT_GROUP
            refresh: true

你可能感兴趣的:(#,Spring,Cloud,spring,cloud,nacos,java,spring,boot)