Spring Cloud Config为分布式系统中的外部配置提供服务器和客户端支持
服务端
新建项目,修改
pom.xml
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-config-server</artifactId> </dependency>
启动类加
@EnableConfigServer
注解使用
创建一个git仓库
配置文件
server.port=8801 spring.application.name=service-config # git仓库地址 spring.cloud.config.server.git.uri=https://gitee.com/ybd0612/ybd0612-config-test.git # 搜索路径 spring.cloud.config.server.git.search-paths=config spring.cloud.config.server.git.username=ybd0612@qq.com spring.cloud.config.server.git.password=abbcb508cde6c7
启动
HTTP服务具有以下格式的资源:
/{application}/{profile}[/{label}]
/{application}-{profile}.yml
/{label}/{application}-{profile}.yml
/{application}-{profile}.properties
/{label}/{application}-{profile}.properties
{application}
映射到客户端的“spring.application.name”;{profile}
映射到客户端上的“spring.profiles.active”(逗号分隔列表); 和{label}
这是一个服务器端功能,标记“版本”的一组配置文件。
加密
要使用加密和解密功能,您需要在JVM中安装全面的JCE(默认情况下不存在)。您可以从Oracle下载“Java加密扩展(JCE)无限强度管理策略文件”,并按照安装说明(实际上将JRE lib / security目录中的2个策略文件替换为您下载的文件)
只有早于 8u161、7u171 和 6u181 的 JDK 8、7 和 6 更新才需要无限制策略文件,应该没人用那么低的版本吧
在bootstrap.properties
里面加encrypt.key
# 加密
curl localhost:8888/encrypt -d mysecret
# 解密
curl localhost:8888/decrypt -d 682bc583f4641835fa2db009355293665d2647dade3375c0ee201de2a49f7bda
要解密的位置值前面加{cipher}
,会自动解密
客户端
引入依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
配置
spring.application.name=application
spring.cloud.config.profile=reception
spring.cloud.config.label=master
spring.cloud.config.uri=http://localhost:8801/
刷新
局部刷新
依赖
<!-- actuator-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
增加@RefreshScope
注解
访问项目localhost:11001/actuator/refresh
即可刷新
全局刷新
在config中引入依赖
<!-- bus-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bus-amqp</artifactId>
</dependency>
<!-- actuator-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
配置
# 配置rabbitmq
spring.rabbitmq.host=192.168.2.252
spring.rabbitmq.port=5672
spring.rabbitmq.username={cipher}639989404ed78b34b5af9f40414ca3d2f20f0b0729e7eb4d483c907cb86faf52
spring.rabbitmq.password={cipher}0fc8a937821e0e7cb68ddeda983b7f5f3bf63f8b66a65685c5a881a519c8b427
# 暴露端点
management.endpoints.web.exposure.include=bus-refresh
客户端也要引入bus
依赖,配置mq
高可用
config引入依赖
<!-- eureka-client-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
配置文件
# 心跳检测
eureka.instance.lease-renewal-interval-in-seconds=2
# 心跳超时时间
eureka.instance.lease-expiration-duration-in-seconds=10
# 实例以ip作为链接,而不是取机器名
eureka.instance.ip-address=true
# 服务实例名称
eureka.instance.instance-id=${spring.application.name}-${server.port}
# 实例注册中心
eureka.client.service-url.defaultZone=http://eureka8761:8761/eureka/
客户端配置在bootstrap中加
spring.cloud.config.discovery.enabled=true
spring.cloud.config.discovery.service-id=service-config
eureka.client.service-url.defaultZone=http://eureka8761:8761/eureka/
去掉spring.cloud.config.uri=http://localhost:8801/
配置
安全认证
pom引入依赖
<!-- security-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
配置账号密码
#配置访问账号
spring.security.user.name=hbnwEuLMhU4j2ubL6x8Me7aUzntTVUBE
#配置访问密码
spring.security.user.password=w0jy7EAyhoSMUsy78ikV4eb3n75tmpeh
客户端:
在bootstrap.properties
文件中配置访问账号和密码:
spring.cloud.config.username=hbnwEuLMhU4j2ubL6x8Me7aUzntTVUBE
spring.cloud.config.password=w0jy7EAyhoSMUsy78ikV4eb3n75tmpeh