spring cloud nacos 简单配置

Posted 捡黄金的少年

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了spring cloud nacos 简单配置相关的知识,希望对你有一定的参考价值。

 Nacos 是阿里巴巴推出来的开源项目,这是一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平 台。

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

官网:https://nacos.io/zh-cn/

源码:https://github.com/alibaba/nacos

SpingCloud 与 Nacos 版本说明参考: https://github.com/aliba ba/spring-cloud-alibaba/wiki/版本说明

Nacos 与 Spring Cloud 对比

相对于 Spring Cloud Eureka 来说,Nacos 更强大。Eureka 已经闭源,但是还有企业在用。 Nacos = Spring Cloud Eureka + Spring Cloud Config

Nacos 可以与 Spring, Spring Boot, Spring Cloud 集成,并能代替 Spring Cloud Eureka, Spring Cloud Config。

通过 Nacos Server 和 spring-cloud-starter-alibaba-nacos-config 实现配置的动态变更。

通过 Nacos Server 和 spring-cloud-starter-alibaba-nacos-discovery 实现服务的注册与发现。

1、下载nacos并开启注册中心

从 github 下载稳定版: https://github.com/alibaba/nacos/releases
(1)、在nacos下面的config目录下面配置数据源

修改config下面application.properties的文件

开启数据源mysql,创建nacos数据库并导入config下面的nacos-mysql.sql中的数据 

 

 (2)、window下启动注册中心

在nacos下面的bin目录下面

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

startup.cmd -m standalone

启动的状态如下所示

 

二、项目的微服务注册到nacos

(1)模块客户端采用

<!-- nacos 客户端 -->
<dependency>
 <groupId>com.alibaba.cloud</groupId>
 <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>

父工程的客户端注入spring-cloud-alibaba的依赖

<dependency>
 <groupId>com.alibaba.cloud</groupId>
 <artifactId>spring-cloud-alibaba-dependencies</artifactId>
 <version>2.2.1.RELEASE</version>
 <type>pom</type>
 <scope>import</scope>
</dependency>

(2)application.yml中配置注册中心地址

spring: # 注意追加在配置文件中已经有 spring 前缀的后面
  cloud:
    nacos:
      discovery:
         server-addr: localhost:8848 # 服务注册中心地址

注册名article-server

spring:
  application:
    name: article-server # 应用名

3、在启动类加入@EnableDiscoveryClient注解,开启服务的注册与发现

@EnableDiscoveryClient
@SpringBootApplication
@EnableSwagger2Doc
public class ArticleApplication 
    public static void main(String[] args) 
        SpringApplication.run(ArticleApplication.class, args);
    

打开nacos就能看到注册服务 

 三、统一配置管理

集中管理配置文件 不同环境不同配置,

动态化的配置更新,

根据不同环境部署,如 dev/test/prod 运行期间动态调整配置,

不再需要在每个服务部署的机器上编写配置,服务会向配置中心统一拉取自已 的配置信息

当配置发生变动时,服务不需要重启即可感知到配置的变化并使用修改后的配置信息

将配置信息以REST接口的形式暴露

1、创建配置信息

由、 $prefix-$spring.profiles.active.$file-extension

prefix:注册服务的名称,article-server 

spring:
  application:
    name: article-server # 应用名

spring.profiles.active :环境名称,开发环境-dev 生产环境-prod,这个可以不用配置

file-extension :配置的文件类型

简单的配置如下 

 

 

2、微服务配置添加依赖

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

3、创建bootstrap.yml文件

Nacos 与 spring cloud config 一样,在项目初始化时,要保证先从配置中心进行配置拉取,拉取配置之后, 才能保证项目的正常启动。springboot 中配置文件的加载是存在优先级顺序的,bootstrap 优先级高于 application

文件配置内容如下

spring:
  application:
    name: article-server  # 当前服务的应用名
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848   # 注册中心地址
      config:
        server-addr: 127.0.0.1:8848  # 配置中心地址
        file-extension: yml    # 配置中心的配置格式

4、读取nacos上面的配置信息

通过 Spring Cloud 原生注解 @RefreshScope 实现配置自动更新

@RefreshScope
@RestController
public class TestConfig 

    @Value("$user.name")
    private String name;
    @Value("$user.age")
    private String age;

    @GetMapping("/config")
    public String testConfig() 
        String config = "name:" + name + "age:" + age;
        return config;
    

5、访问接口拿取到数据如下

 

以上是关于spring cloud nacos 简单配置的主要内容,如果未能解决你的问题,请参考以下文章

2021-11-22 spring-cloud-nacos配置优先级

spring cloud Nacos Config配置中心

Spring Cloud Nacos基础

1Nacos 配置中心源码解析之 集成 Spring Cloud

1Nacos 配置中心源码解析之 集成 Spring Cloud

Spring Cloud Alibaba整合Nacos