Skip to content

SpringCloud_Nacos-基础使用

基础概念

Namespace+Group+DataID三者的关系

image.png|400

多环境配置

注意事项

命名空间id用于唯一标识命名空间, 新建命名空间时候,如果不填写命名空间id,则系统会自动生成命名空间id,生成规则为UUID方式。

但在spring 项目中集成nacos 的时候,配置文件中填写的namespace就是命名空间的id

image.png

因此尽量保持nacos的命名空间名称和id 一致

image.png

服务发现

在 spring-cloud-alibaba-service 的主启动类上,使用 @EnableDiscoveryClient 注解开启 Nacos 服务发现功能

你访问该服务下的某个请求链接,再查看 nacos “服务管理”下的“服务列表”,会发现已经注册上了。

一般在消费端会引入 spring-cloud-loadbalancer 进行调用服务提供者提供的服务


参考: https://cloud.tencent.com/developer/article/2226330

服务发现是先获取本地缓存,如果没有本地缓存,就请求Nacos Server服务端获取数据,如果Nacos Server挂了,也不会影响服务的调用。

服务发现:

image.png

配置中心

动态获取配置内容

在应用的 POM 文件中引入 spring-cloud-starter-alibaba-nacos-config ,可实现配置的获取与动态刷新

示例

bootstrap.yml 文件配置

server:
  port: 3377 #端口号
spring:
  application:
    name: config-client #服务名
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848 #Nacos服务注册中心地址
      config:
        server-addr: 127.0.0.1:8848 #Nacos作为配置中心地址
        file-extension: yaml #指定yaml格式的配置
  profiles:
    active: dev #激活 dev 的配置

在 icu.luoqi.nacos.controller 包下,创建一个名为 ConfigClientController 的 Controller 类,并在该类上使用 @RefreshScope 注解实现配置的自动更新,代码如下

import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RefreshScope
public class ConfigClientController {

    @Value("${config.info}")
    private String ConfigInfo;
    
    @GetMapping("/config/info")
    public String getConfigInfo(){
        return ConfigInfo;
    }
}

主启动类上,使用 @EnableDiscoveryClient 注解开启服务发现功能

启动 Nacos Server,并在 Nacos Server 控制台的“配置管理”下的“配置列表”中,点击“+”按钮,新建如下配置

Data ID:        config-client-dev.yaml

Group:          DEFAULT_GROUP

配置格式:       YAML

配置内容:       config:
                   info: xxxx

在 Nacos Server 中,配置的 dataId(即 Data ID)的完整格式如下:

${prefix}-${spring.profiles.active}.${file-extension}

启动该服务,并使用浏览器访问“http://localhost:3377/config/info”,

在这种情况下,能够实现不重启后台服务,当你手动修改 nacos 的配置时,能够动态获取到配置内容。

Nacos Config配置集的三种方式和加载顺序

  • 通过 spring.cloud.nacos.config.shared-configs 配置项,支持多个共享 Nacos 配置集。
  • 通过 spring.cloud.nacos.config.extension-configs 配置项,支持多个拓展 Nacos 配置集。
  • 通过 spring.cloud.nacos.config.name 配置项,支持一个 Nacos 配置集。

当三种方式共同使用时,它们的优先级关系是:A < B < C。另外,A 和 B 的命名带有“共享”或是“拓展”,没有任何含义,只是优先级不同


参考