Spring Cloud Config(maven+idea+eureka+本地文件+加密解密+更新)

1.各个系统配置文件的统一集中管理

2.服务端配置(maven+idea+eureka+本地文件)

2.1.pom.xml

org.springframework.boot

spring-boot-starter-parent

2.1.9.RELEASE

com.tsnt

config-server

0.0.1-SNAPSHOT

config-server

Config Server

5.1.10.RELEASE

2.1.9.RELEASE

Greenwich.SR3

org.springframework.cloud

spring-cloud-config-server

 

org.springframework.cloud

spring-cloud-starter-netflix-eureka-client

org.springframework.boot

spring-boot-starter-test

test

org.springframework.cloud

spring-cloud-dependencies

${spring-cloud.version}

pom

import

org.springframework.boot

spring-boot-maven-plugin

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(只写必须的依赖,其他的和服务端大同小异)

org.springframework.cloud

spring-cloud-starter-netflix-eureka-client

org.springframework.cloud

spring-cloud-config-client

org.springframework.boot

spring-boot-starter-actuator

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.添加配置客户端依赖

org.springframework.boot

spring-boot-starter-actuator

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) ,能实现自动刷新客户端配置

你可能感兴趣的:(Spring Cloud Config(maven+idea+eureka+本地文件+加密解密+更新))