1.各个系统配置文件的统一集中管理
2.服务端配置(maven+idea+eureka+本地文件)
2.1.pom.xml
2.2 yml文件 分两种application.yml和bootstrap.yml(加密解密只能配置在bootstrap里)
server:
port: 9002
spring:
application:
name: tsnt-config-server
profiles:
active: native #读取本地配置文件
cloud:
config:
server:
native:
#常用的两种,不止两种方式:1. file:./config 文件目录位置
#2. classpath src/main/resources/ 下的文件地址
#注意文件同名 配置会存在后面的覆盖前面 所以需要保证不同目录文件名也不一致;不同目录方便管理
search-locations: classpath:/config/gateway,classpath:/config/sso
# Eureka服务中心配置
eureka:
instance:
#以IP注册到Eureka Server上,未设置ip-address Spring就会自动为我们获取本机的第一个非回环IP地址
prefer-ip-address: true
#强制指定IP地址,默认会获取本机的IP地址
#ip-address: 172.16.1.115
#服务中心的信息显示,eureka界面注册服务名,默认是hostname:应用名称:端口
instance-id: ${spring.cloud.client.ip-address}:${spring.application.name}:${server.port}
# 参数用于定义服务续约任务的调用间隔时间,默认30秒
leaseRenewalIntervalInSeconds: 5
# 参数用于定义服务失效的时间,默认90秒
leaseExpirationDurationInSeconds: 10
client:
service-url:
# 注册Eureka Server
defaultZone: http://localhost:9100/eureka/
3.客户端配置
3.1 pom.xml(只写必须的依赖,其他的和服务端大同小异)
3.2 yml文件(bootstrap.yml或者application.yml都可以,系统级与应用级配置文件,加载优先级不同)
#bootstrap配置配置文件会先于application配置文件加载
server:
port: 9101
spring:
application:
name: api-gateway#指定了服务中心serviceId(大写)
cloud:
config:
name: gateway#读取配置文件的前缀名称
#uri: http://localhost:7001/ #无注册中心指定Config server的uri
profile: dev #指定的环境,读取配置文件的后缀名称
#label: master #指定分支,非git无用处
fail-fast: true #快速失败模式
#retry: #重试
#initial-interval: 1100 #首次重试间隔时间,默认1000毫秒
#multiplier: 1.1D #下一次重试间隔时间的乘数,比如开始1000,下一次就是1000*1.1=1100
#max-interval: 2000 #最大重试时间,默认2000
#max-attempts: 3 #最大重试次数,默认6次
discovery:
enabled: true #开启配置服务发现
serviceId: config-server #配置中心在服务中心serviceId(小写)
management:
endpoints:
web:
exposure:
include: refresh #暴露刷新配置的endpoint
# Eureka服务中心配置
eureka:
instance:
#以IP注册到Eureka Server上,未设置ip-address Spring就会自动为我们获取本机的第一个非回环IP地址
prefer-ip-address: true
#强制指定IP地址,默认会获取本机的IP地址
#ip-address: 192.16.1.115
#服务中心的信息显示,eureka界面注册服务名,默认是hostname:应用名称:端口
instance-id: ${spring.cloud.client.ip-address}:${spring.application.name}:${server.port}
# 参数用于定义服务续约任务的调用间隔时间,默认30秒
leaseRenewalIntervalInSeconds: 5
# 参数用于定义服务失效的时间,默认90秒
leaseExpirationDurationInSeconds: 10
client:
service-url:
# 注册Eureka Server
defaultZone: http://localhost:9100/eureka/
4.配置文件敏感信息加密与解密
基于jdk自带的加密与解密
4.1注意需要需要把 jre\lib\security\policy\unlimited下的两个jar拷到jre\lib\security下 不然回报长度key size异常
4.2配置信息需要放在bootstrap.yml配置文件,不能用application.yml配置文件
encrypt:
key-store:
# cmd命令:keytool -genkeypair -alias "config-key" -keyalg "RSA" -keystore D:\config.keystore
location: classpath:config.keystore #利用jdk生成 jks或者keystore文件 拷到resources目录下即可
alias: config-key #key
password: tsntconfig
secret: tsntconfig
4.3加密
可以利用curl进行加密
4.4 yml文件 : '{cipher}密文' #jdk8的密文不能换行
4.5 客户端会来服务端取配置内容,所以加密解密都只是服务端的事,自动解密(也可以客户端自己解密)
5.配置文件的更新
5.1.添加配置客户端依赖
5.2更新配置的配置文件配置
5.2.1配置服务端配置
management:
endpoints:
web:
exposure:
include: "*" #对外暴露所有服务
5.2.2配置客户端的配置
management:
endpoints:
web:
exposure:
include: refresh #对外暴露可刷新服务
5.2.3本地文件更新说明:
针对服务端的配置文件,保存更改的配置文件过后,访问服务端配置文件会自动加载访问的配置文件进内存(native会随着每次访问加载最新配置文件,即说明服务端会自动更新,但是需要客户端的请求进行触发服务端重新加载配置文件);
客户端手动更新 POST 请求http://configclient-host:port/actuator/refresh
spring cloud bus (依赖mq,支持rabbitmq与kafka) ,能实现自动刷新客户端配置