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

前言

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

一、项目配置

  1. Nacos创建配置

    image-20201223163740893

  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. 启动项目并访问接口

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

    image-20201223163400464

  3. 编辑配置中心配置文件并发布

    image-20201223163421308

  4. 访问接口看到配置内容已经变了

    image-20201223163525282

  5. 查看控制台,有输出监听到配置文件变化并且刷新了配置内容

    image-20201223163614295

三、SpringCloudAlibaba配置项介绍

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

通用配置

配置项默认值备注
spring.cloud.nacos.server-addrlocalhost:8848Nacos服务地址
spring.cloud.nacos.usernameNacos用户名(仅在Nacos开启了安全模式时有效)
spring.cloud.nacos.passwordNacos密码(仅在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.weight1服务在注册中心的权重值,取值范围 1 到 100,数值越大,权重越大
spring.cloud.nacos.discovery.enabledtrue是否要把当前服务注册到注册中心
spring.cloud.nacos.discovery.register-enabledtrue是否作为服务提供者注册到注册中心,如果关闭该选项,则只作为服务消费者注册
spring.cloud.nacos.discovery.instance-enabledtrue是否允许其他服务访问调用
spring.cloud.nacos.discovery.network-interface当IP未配置时,注册的IP为此网卡所对应的IP地址,如果此项也未配置,则默认取第一块网卡的地址
spring.cloud.nacos.discovery.ip1在注册中心,该服务的注册IP地址,这个配置项优先级是最高的
spring.cloud.nacos.discovery.port1服务注册端口,默认情况下不用配置,会自动探测
spring.cloud.nacos.discovery.endpoint服务的域名,通过该域名可以动态获取服务器地址。
spring.cloud.nacos.discovery.service${spring.application.name}注册的服务名
spring.cloud.nacos.discovery.namespace在Nacos内的命名空间ID,可以用来做开发、测试、生产环境隔离
spring.cloud.nacos.discovery.groupDEFAULT服务分组,如果两个服务不在同一个分组内,则不能通过内部服务调用进行访问
spring.cloud.nacos.discovery.cluster-nameDEFAULTNacos集群名称
spring.cloud.nacos.discovery.access-key如果使用的是阿里云的Nacos,这里需要配置阿里云的AccessKey
spring.cloud.nacos.discovery.secret-key如果使用的是阿里云的Nacos,这里需要配置阿里云的SecretKey
spring.cloud.nacos.discovery.log-nameNacos服务Log名称
spring.cloud.nacos.discovery.watch.enabledtrue是否开启Nacos Watch,是否要拉取服务注册表,如果关闭该选项,内部服务调用会失败。
spring.cloud.nacos.discovery.watch-delay30默认为30s。客户端在启动时会创建一个线程池,该线程定期去查询服务端的信息列表(注册表),该请求不会立刻返回,默认等待30s,若在30s内,服务端信息列表发生变化,则该请求立刻返回,通知客户端拉取服务端的服务信息列表,若30s内,没有变化,则30s时该请求返回响应,客户端服务列表不变,再次发生该请求。注:推荐该值为30s即可,无需修改
spring.cloud.nacos.discovery.securefalse您的服务是否为Https服务
spring.cloud.nacos.discovery.heart-beat-interval5服务向注册中心发送心跳的时间间隔,默认5秒
spring.cloud.nacos.discovery.heart-beat-timeout15注册中心没有接受到服务心跳请求就将其设为不健康的时间间隔,默认为15s.
spring.cloud.nacos.discovery.ip-delete-timeout30注册中心删除不健康服务的时间间隔
spring.cloud.nacos.discovery.naming-load-cache-at-startfalse默认为false。客户端在启动时是否读取本地配置项(一个文件)来获取服务列表。注:推荐该值为false,若改成true。则客户端会在本地的一个文件中保存服务信息,当下次宕机启动时,会优先读取本地的配置对外提供服务。
spring.cloud.nacos.discovery.ephemeraltrue该服务是否需要频繁向注册中心发送心跳,来保证该服务是一直健康可用的
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.groupDEFAULT服务分组,如果配置文件的分组和该配置不在同一个分组内,则不能正常加载配置
spring.cloud.nacos.config.cluster-nameDEFAULTNacos集群名称
spring.cloud.nacos.config.name配置中心配置名称
spring.cloud.nacos.config.prefix${spring.application.name}配置中心配置前缀值
spring.cloud.nacos.config.file-extensionproperties配置文件类型:properties、yml…
spring.cloud.nacos.config.refresh-enabledtrue是否要从配置中心动态刷新配置
spring.cloud.nacos.config.context-pathNacos配置服务器的上下文路径
spring.cloud.nacos.config.enabledtrue是否启用配置服务端点
spring.cloud.nacos.config.encodeUTF-8配置中心配置文件编码格式
spring.cloud.nacos.config.endpointNacos的端点,即服务的域名,通过该域名可以动态获取服务器地址。
spring.cloud.nacos.config.enable-remote-sync-configtrue如果要在程序首次开始获取配置时自己拉它,并且已注册的侦听器用于将来的配置更新,则可以保持原始代码不变,只需添加系统参数:enableRemoteSyncConfig =“ true” (但是有网络开销)
spring.cloud.nacos.config.extension-configs加载其他拓展配置
spring.cloud.nacos.config.shared-configs加载其他共享配置
spring.cloud.nacos.config.timeout3000ms连接配置中心超时时间
spring.cloud.nacos.config.config-long-poll-timeoutnacos获取配置超时时间
spring.cloud.nacos.config.config-retry-timenacos获取配置失败重试间隔时间
spring.cloud.nacos.config.max-retry加载配置最大重试次数
spring.cloud.nacos.config.environment环境变量配置
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

清晨先生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值