Nacos配置与注册中心

Nacos配置与注册中心

Nacos简介

Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。

Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。 Nacos 是构建以“服务”为中心的现代应用架构 (例如微服务范式、云原生范式) 的服务基础设施。

官方文档:https://nacos.io/zh-cn/docs/what-is-nacos.html

安装

下载地址:https://github.com/alibaba/nacos/releases

下载完成并解压后 执行启动命令

Linux/Unix/Mac

启动命令(standalone代表着单机模式运行,非集群模式):

sh startup.sh -m standalone

Windows

启动命令(standalone代表着单机模式运行,非集群模式):

startup.cmd -m standalone

Nacos管理界面:http://127.0.0.1:8848/nacos/index.html

用户名:nacos

密码:nacos

服务发现

依赖

<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>

配置

bootstrap.yml 或 application.yml

添加Nacos服务发现配置

server:
  port: 5000

spring:
  profiles:
    active: dev
  application:
    name: user-server
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848

启动类添加注解:@EnableDiscoveryClient

@SpringBootApplication
@EnableDiscoveryClient
public class UserServerApplication {

    public static void main(String[] args) {
        SpringApplication.run(UserServerApplication.class, args);
    }

}

服务管理

启动项目,进入Nacos管理后台,点击 服务管理-服务列表

image-yntz.png

配置中心

依赖

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

配置

bootstrap.yml 或 application.yml

添加Nacos配置

server:
  port: 5000

spring:
  profiles:
    active: dev
  application:
    name: user-server
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848
      config:
        server-addr: 127.0.0.1:8848
        file-extension: yml
        shared-configs:
          - application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}

配置文件完整格式(dataId):

${prefix}-${spring.profiles.active}.${file-extension}
  • prefix 默认为 spring.application.name 的值,也可以通过配置项 spring.cloud.nacos.config.prefix来配置。
  • spring.profiles.active 即为当前环境对应的 profile,不配置时将会忽略。
  • file-exetension 为配置内容的数据格式,可以通过配置项 spring.cloud.nacos.config.file-extension 来配置。目前只支持 properties 和 yaml 类型。
  • shared-configs 配置指定的文件为共享配置。将一些配置信息作为全局配置,配置到一个配置文件里,然后在 shared-configs 里面指定这个文件,它是一个数组,可以使用 '-' 指定多个文件。

如按上面配置,则配置文件全名为:user-server-dev.yml

共享配置全名为:application-dev.yml

进入Nacos管理后台,点击 配置管理-配置列表 然后点击 + 号,新增两个配置文件

application-dev.yml

image-uqnu.png

user-server-dev.yml

image-wpmc.png

测试

动态配置注入

添加 @RefreshScope 注解可以使配置更改时刷新代码里的配置

@Getter
@Configuration
@RefreshScope
public class SysConfig {

    @Value("${xe.version}")
    private String version;

}

添加查看当前版本号接口

@RestController
@RequestMapping("/sys")
public class SysController {

    @Resource
    private SysConfig sysConfig;

    @GetMapping("/version")
    public String getVersion() {
        return "当前版本:" + sysConfig.getVersion();
    }

}

调用接口测试

image-ytzs.png

进入Nacos管理后台,修改 user-server-dev.yml 里的配置,将版本改为 1.0.1

xe:
  version: 1.0.1

修改保存后,重新调用接口,发现版本已经自动更新了

image-qjwv.png