文章目录
-
- 前言
- 一、项目配置
- 二、校验动态配置
- 三、SpringCloudAlibaba配置项介绍
前言
上一篇文章讲了怎么创建一个Maven聚合项目作为微服务开发脚手架,并且创建了一个认证微服务并注册到注册中心,这篇我们介绍下如何使用Nacos的配置中心,实现我们的动态配置。以及简单介绍下SpringCloudAlibaba的各个配置项(可能是最全面SpringCloudAlibaba配置项介绍)
一、项目配置
- Nacos创建配置
- 在项目的
文件添加配置中心相关配置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
二、校验动态配置
- 项目添加一个接口,用来输出动态配置项的值,测试配置是否能够正常动态刷新
这个注解表示,当前类下加载的配置信息,支持动态刷新@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; } }
-
启动项目并访问接口
可以看到输出了刚才的配置内容
- 编辑配置中心配置文件并发布
- 访问接口看到配置内容已经变了
- 查看控制台,有输出监听到配置文件变化并且刷新了配置内容
三、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 | 环境变量配置 |