迎着风跑  

Spring Cloud Config 的替代品:Alibaba Nacos

Nacos 是 Alibaba 开发的是用于微服务管理的平台,其核心功能是服务注册与发现、集中配置管理。

  • Nacos 作为服务注册发现组件,可以替换 Spring Cloud 应用中传统的服务注册于发现组件,如:Eureka、Consul 等,支持服务的健康检查。

  • Nacos 作为服务配置中心,可以替换 Spring Cloud Config、Apollo 等。

说明

为什么叫 Nacos?Naming 与 Configuration 的前两个字母的组合,最后的 s 代表 service 。从其命名也能看出其核心功能。

Nacos 作为配置管理中心,实现的核心功能就是配置的统一管理。

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

#1. 连接和使用配置中心

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

注意

和 Spring Cloud Config 一样,连接配置中心的配置『必须』写在 bootstrap 配置文件中,而不是 application 配置文件中

spring:
  application:
    name: xxx-service
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848
      config:
        server-addr: ${spring.cloud.nacos.discovery.server-addr}
        file-extension: yaml   # nacos 配置文件后缀。注意是 yaml,不是 yml
        group: XXX_GROUP  # 配置分组。未配置时,默认分组是 DEFAULT_GROUP
Copied!

通过配置列表右侧的 + 按钮添加配置文件:

nacos-03

点击 + 按钮之后,页面内容如下:

nacos-04

Data ID 是该配置文件在 Nacos 系统内的唯一标识。

在 Nacos Spring Cloud 中,dataId 的完整格式语法如下:

${prefix}-${spring.profile.active}.${file-extension}
Copied!
  • prefix 的值默认与 spring.application.name 的值相同。也可以通过配置项 spring.cloud.nacos.config.prefix 来手动配置,指定一个与 spring.application.name 不一样的值,不过一般不会动它。

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

    **注意:**当 spring.profile.active 为空时,对应的环境定义字符部分将不存在,即为 xxx-service.yml,而不是 xxx-service-.yml 。

  • file-exetension 为配置内容的数据格式,可以通过配置项 spring.cloud.nacos.config.file-extension 来配置。注意,yaml 文件的后缀是 yaml ,不是 yml ,这里不能简写。

Group 的值同 spring.cloud.nacos.config.group 的配置,界面填写的内容与项目中的配置二者『一定要统一』,否则无法正确读取配置,Group 起到配置『隔离』的作用。

配置内容,略。

例如:

nacos-05

#2. 验证和动态刷新

执行以下代码进行验证:

@Value("${xxx.yyy.zzz.username}")
private String username;

@Value("${xxx.yyy.zzz.password}")
private String password;

@RequestMapping("/demo")
public String demo() {
    return username + ", " + password;
}
Copied!

如果想要实现动态刷新功能,那么在 @Value 所在的 @Component(@Controller、@Service、@Repository)上加上 @RefreshScope 即可实现动态刷新。

#3. Nacos 的数据存储

Nacos 的数据是存储在它自带的内嵌 derby 数据库中的,数据文件就在 Nacos 的解压目录下的 data 文件夹中。

你也可以通过修改配置,让 Nacos 将它的数据存储在你指定的 mysql 数据库中。

Nacos 在它的 conf 目录下已经为你准备好了建表脚本:nacos-mysql.sql 。不过脚本中有建表语句,但是没有建库语句!为了后续配置简单起见,建议创建的库命名为 nacos 。

create database nacos 
  DEFAULT CHARACTER SET utf8mb4 -- 乱码问题
  DEFAULT COLLATE utf8mb4_bin -- 英文大小写不敏感问题
;
Copied!

执行完 nacos-mysql.sql 中的建表 SQL 之后,修改同在 conf 文件夹下的 application.properties 配置文件。从 31 行开始的一段配置就是数据库连接相关配置。

修改完 application.properties 配置文件之后,重启 Nacos,你会发现 Nacos 重新编程了一个『干净』的环境。

posted on 2021-11-29 16:05  迎着风跑  阅读(69)  评论(0编辑  收藏  举报