天天看点

SpringCloudAlibaba(二)Nacos配置中心实现微服务动态配置,SpringCloudAlibaba配置项详解

文章目录

    • 前言
    • 一、项目配置
    • 二、校验动态配置
    • 三、SpringCloudAlibaba配置项介绍

前言

上一篇文章讲了怎么创建一个Maven聚合项目作为微服务开发脚手架,并且创建了一个认证微服务并注册到注册中心,这篇我们介绍下如何使用Nacos的配置中心,实现我们的动态配置。以及简单介绍下SpringCloudAlibaba的各个配置项(可能是最全面SpringCloudAlibaba配置项介绍)

一、项目配置

  1. Nacos创建配置
    SpringCloudAlibaba(二)Nacos配置中心实现微服务动态配置,SpringCloudAlibaba配置项详解
  2. 在项目的

    bootstarp.yml

    文件添加配置中心相关配置
    server:
      port: 8080
    spring:
      profiles:
        active: dev
      application:
        name: auth
      cloud:
        nacos:
          server-addr: 127.0.0.1:8848
          discovery:
            group: FeasyApplication
            namespace: ${spring.profiles.active}
            log-name: ${spring.application.name}
            cluster-name: ${spring.application.name}-${spring.profiles.active}
          config:
            group: FeasyApplication
            namespace: ${spring.profiles.active}
            cluster-name: ${spring.application.name}-${spring.profiles.active}
            prefix: ${spring.application.name}
            file-extension: yaml
               

二、校验动态配置

  1. 项目添加一个接口,用来输出动态配置项的值,测试配置是否能够正常动态刷新

    @RefreshScope

    这个注解表示,当前类下加载的配置信息,支持动态刷新
    package org.feasy.cloud.auth.controller;
    
    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;
    
    /**
     * @author YangXiaohui
     * @since 2020/12/23 16:18
     */
    @RefreshScope
    @RestController
    public class TestController {
        @Value("${test.config:}")
        private String config;
    
        @GetMapping("/testConfig")
        public String testConfig(){
            return config;
        }
    }
    
               
  2. 启动项目并访问接口

    可以看到输出了刚才的配置内容

    SpringCloudAlibaba(二)Nacos配置中心实现微服务动态配置,SpringCloudAlibaba配置项详解
  3. 编辑配置中心配置文件并发布
    SpringCloudAlibaba(二)Nacos配置中心实现微服务动态配置,SpringCloudAlibaba配置项详解
  4. 访问接口看到配置内容已经变了
    SpringCloudAlibaba(二)Nacos配置中心实现微服务动态配置,SpringCloudAlibaba配置项详解
  5. 查看控制台,有输出监听到配置文件变化并且刷新了配置内容
    SpringCloudAlibaba(二)Nacos配置中心实现微服务动态配置,SpringCloudAlibaba配置项详解

三、SpringCloudAlibaba配置项介绍

在我们开发微服务的时候,

spring.application.name=服务名

是各个微服务必须配置的,它是这个服务在整个注册中心的唯一标识,在注册中心可以用来管理微服务,并且在配置中心会使用该值作为前缀进行默认匹配配置文件。

通用配置

配置项 默认值 备注
spring.cloud.nacos.server-addr localhost:8848 Nacos服务地址
spring.cloud.nacos.username Nacos用户名(仅在Nacos开启了安全模式时有效)
spring.cloud.nacos.password Nacos密码(仅在Nacos开启了安全模式时有效)

注册中心配置

配置项 默认值 备注
spring.cloud.nacos.discovery.server-addr ${spring.cloud.nacos.server-addr} 注册中心Nacos地址
spring.cloud.nacos.discovery.username ${spring.cloud.nacos.username} 注册中心Nacos用户名(仅在Nacos开启了安全模式时有效)
spring.cloud.nacos.discovery.password ${spring.cloud.nacos.password} 注册中心Nacos密码(仅在Nacos开启了安全模式时有效)
spring.cloud.nacos.discovery.weight 1 服务在注册中心的权重值,取值范围 1 到 100,数值越大,权重越大
spring.cloud.nacos.discovery.enabled true 是否要把当前服务注册到注册中心
spring.cloud.nacos.discovery.register-enabled true 是否作为服务提供者注册到注册中心,如果关闭该选项,则只作为服务消费者注册
spring.cloud.nacos.discovery.instance-enabled true 是否允许其他服务访问调用
spring.cloud.nacos.discovery.network-interface 当IP未配置时,注册的IP为此网卡所对应的IP地址,如果此项也未配置,则默认取第一块网卡的地址
spring.cloud.nacos.discovery.ip 1 在注册中心,该服务的注册IP地址,这个配置项优先级是最高的
spring.cloud.nacos.discovery.port 1 服务注册端口,默认情况下不用配置,会自动探测
spring.cloud.nacos.discovery.endpoint 服务的域名,通过该域名可以动态获取服务器地址。
spring.cloud.nacos.discovery.service ${spring.application.name} 注册的服务名
spring.cloud.nacos.discovery.namespace 在Nacos内的命名空间ID,可以用来做开发、测试、生产环境隔离
spring.cloud.nacos.discovery.group DEFAULT 服务分组,如果两个服务不在同一个分组内,则不能通过内部服务调用进行访问
spring.cloud.nacos.discovery.cluster-name DEFAULT Nacos集群名称
spring.cloud.nacos.discovery.access-key 如果使用的是阿里云的Nacos,这里需要配置阿里云的AccessKey
spring.cloud.nacos.discovery.secret-key 如果使用的是阿里云的Nacos,这里需要配置阿里云的SecretKey
spring.cloud.nacos.discovery.log-name Nacos服务Log名称
spring.cloud.nacos.discovery.watch.enabled true 是否开启Nacos Watch,是否要拉取服务注册表,如果关闭该选项,内部服务调用会失败。
spring.cloud.nacos.discovery.watch-delay 30 默认为30s。客户端在启动时会创建一个线程池,该线程定期去查询服务端的信息列表(注册表),该请求不会立刻返回,默认等待30s,若在30s内,服务端信息列表发生变化,则该请求立刻返回,通知客户端拉取服务端的服务信息列表,若30s内,没有变化,则30s时该请求返回响应,客户端服务列表不变,再次发生该请求。注:推荐该值为30s即可,无需修改
spring.cloud.nacos.discovery.secure false 您的服务是否为Https服务
spring.cloud.nacos.discovery.heart-beat-interval 5 服务向注册中心发送心跳的时间间隔,默认5秒
spring.cloud.nacos.discovery.heart-beat-timeout 15 注册中心没有接受到服务心跳请求就将其设为不健康的时间间隔,默认为15s.
spring.cloud.nacos.discovery.ip-delete-timeout 30 注册中心删除不健康服务的时间间隔
spring.cloud.nacos.discovery.naming-load-cache-at-start false 默认为false。客户端在启动时是否读取本地配置项(一个文件)来获取服务列表。注:推荐该值为false,若改成true。则客户端会在本地的一个文件中保存服务信息,当下次宕机启动时,会优先读取本地的配置对外提供服务。
spring.cloud.nacos.discovery.ephemeral true 该服务是否需要频繁向注册中心发送心跳,来保证该服务是一直健康可用的
spring.cloud.nacos.discovery.metadata 服务注册元数据,在注册中心可以看到的服务元数据

配置中心配置

配置项 默认值 备注
spring.cloud.nacos.config.server-addr ${spring.cloud.nacos.server-addr} 配置中心Nacos地址
spring.cloud.nacos.config.username ${spring.cloud.nacos.username} 配置中心Nacos用户名(仅在Nacos开启了安全模式时有效)
spring.cloud.nacos.config.password ${spring.cloud.nacos.password} 配置中心Nacos密码(仅在Nacos开启了安全模式时有效)
spring.cloud.nacos.config.access-key 如果使用的是阿里云的Nacos,这里需要配置阿里云的AccessKey
spring.cloud.nacos.config.secret-key 如果使用的是阿里云的Nacos,这里需要配置阿里云的SecretKey
spring.cloud.nacos.config.namespace 在Nacos内的命名空间ID,可以用来做开发、测试、生产环境隔离
spring.cloud.nacos.config.group DEFAULT 服务分组,如果配置文件的分组和该配置不在同一个分组内,则不能正常加载配置
spring.cloud.nacos.config.cluster-name DEFAULT Nacos集群名称
spring.cloud.nacos.config.name 配置中心配置名称
spring.cloud.nacos.config.prefix ${spring.application.name} 配置中心配置前缀值
spring.cloud.nacos.config.file-extension properties 配置文件类型:properties、yml…
spring.cloud.nacos.config.refresh-enabled true 是否要从配置中心动态刷新配置
spring.cloud.nacos.config.context-path Nacos配置服务器的上下文路径
spring.cloud.nacos.config.enabled true 是否启用配置服务端点
spring.cloud.nacos.config.encode UTF-8 配置中心配置文件编码格式
spring.cloud.nacos.config.endpoint Nacos的端点,即服务的域名,通过该域名可以动态获取服务器地址。
spring.cloud.nacos.config.enable-remote-sync-config true 如果要在程序首次开始获取配置时自己拉它,并且已注册的侦听器用于将来的配置更新,则可以保持原始代码不变,只需添加系统参数:enableRemoteSyncConfig =“ true” (但是有网络开销)
spring.cloud.nacos.config.extension-configs 加载其他拓展配置
spring.cloud.nacos.config.shared-configs 加载其他共享配置
spring.cloud.nacos.config.timeout 3000ms 连接配置中心超时时间
spring.cloud.nacos.config.config-long-poll-timeout nacos获取配置超时时间
spring.cloud.nacos.config.config-retry-time nacos获取配置失败重试间隔时间
spring.cloud.nacos.config.max-retry 加载配置最大重试次数
spring.cloud.nacos.config.environment 环境变量配置

继续阅读