Spring Cloud Config配置中心
1.创建Spring Cloud Config配置中心服务
1.1.选用阿里云仓库,需要集成注册中心客户端和配置中心服务端的能力,需要引入cloud config,eureka client依赖,等待完成项目构建。(全量配置)
<dependency>
<-- Cloud Config配置中心服务依赖 -->
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-server</artifactId>
</dependency>
<dependency>
<-- Eureka注册中心客户端依赖 -->
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
1.2.如果没有/resources/application.yml文件需自行创建。(全量配置)
server:
port: 9700 #本项目服务端口
spring:
application:
name: configuration-center-server #设置服务名称
cloud:
config:
server:
git:
uri: https://gitee.com/xxxxxx/xxxxxx.git #设置远端gitee仓库地址
default-label: master #默认分支路径
search-paths: config1 #设置获取文件路径
username: xxxxxx #账号
password: xxxxxx #密码
eureka:
instance:
prefer-ip-address: true #将hostname:port变为ip:port
instance-id: server:${server.port} #注册中心页面显示服务:server:port
client:
service-url:
defaultZone: http://localhost:9800/eureka/,http://localhost:9801/eureka/,http://localhost:9802/eureka/ #将配置中心服务注册到注册中心
1.3.启动分类增加注解@EnableConfigServer,表示启动Spring-Cloud-Config。
2.Eureka注册中心配置修改
2.1.上篇文章的Eureka注册中心,也需要集成配置中心客户端的能力,添加依赖。(全量配置)
<dependency>
<-- Eureka注册中心服务依赖 -->
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
<dependency>
<-- Config配置中心客户端依赖 -->
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-client</artifactId>
</dependency>
<dependency>
<-- Cloud Config在2020之后还需引入bootstrap依赖 -->
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bootstrap</artifactId>
</dependency>
2.2.将application.yml文件信息放入远端,如gitee,具体配置如下registry-center-config-prd.yml。(全量配置)
spring:
application:
name: registry-center-server #统一的项目名称
eureka:
instance:
prefer-ip-address: true #将hostname:port变为ip:port
instance-id: server:${server.port} #统一服务显示的名称:server:9800
client:
register-with-eureka: true #是否向Eureka服务端注册自己
fetch-registry: true #是否从Eureka服务端获取服务注册表
service-url:
defaultZone: http://localhost:9800/eureka,http://localhost:9801/eureka,http://localhost:9802/eureka #【高可用配置,可以配置不同Ip地址下的注册中心相互注册,但存在一个问题,指定IP后DS Replicas会失效】
2.3.新建bootstrap.yml文件,它优先于application.yml执行,可读取远端配置信息,具体配置如下,高可用配置只需要给服务修改不同的端口就可以,具体有几个注册中心可以在远端配置具体的地址信息。(全量配置)
server:
port: 9800 #本项目服务端口
spring:
application:
name: registry-center-config #从配置中心获取信息(1):registry-center-config-prd.yml
cloud:
config:
profile: prd #从配置中心获取信息(2):registry-center-config-prd.yml
discovery:
enabled: true #启动配置的发现
service-id: configuration-center-server #这里需要与配置中心服务名称一致
config:
import: optional:configserver:http://localhost:9700 #指定配置中心地址
2.4.启动类增加注解@EnableEurekaServer,表示启动Eureka。
3.Eureka公共服务类配置修改
3.1.上篇文章的Eureka服务类,也需要集成配置中心客户端和配置修改后自动更新的能力,添加依赖。(全量配置)
<dependency>
<-- Web依赖 -->
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<-- Eureka注册中心客户端依赖 -->
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<dependency>
<-- Config配置中心客户端依赖 -->
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-client</artifactId>
</dependency>
<dependency>
<-- Cloud Config在2020之后还需引入bootstrap依赖 -->
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bootstrap</artifactId>
</dependency>
<dependency>
<-- 配置更新依赖 -->
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
3.2.将application.yml文件信息放入远端,如gitee,具体配置如下common-config-prd.yml。(全量配置)
spring:
application:
name: common-server #项目名称
eureka:
instance:
prefer-ip-address: true #将hostname:port变为ip:port
instance-id: server:${server.port} #注册中心页面显示服务:server:port
client:
service-url:
defaultZone: http://localhost:9800/eureka/,http://localhost:9801/eureka/,http://localhost:9802/eureka/
3.3.新建bootstrap.yml文件,它优先于application.yml执行,可读取远端配置信息,具体配置如下,高可用配置只需要给服务修改不同的端口就可以,具体有几个注册中心可以在远端配置具体的地址信息。(全量配置)
server:
port: 9600 #默认端口号
spring:
application:
name: product-config #从配置中心获取信息(1):product-config-prd.yml
cloud:
config:
profile: prd #从配置中心获取信息(2):registry-center-config-prd.yml
discovery:
enabled: true #启动配置的发现
service-id: configuration-center-server #这里需要与配置中心服务名称一致
config:
import: optional:configserver:http://localhost:9700 #指定配置中心地址
management:
endpoints:
web:
exposure:
include: refresh #刷新配置
3.4.服务类增加注解@RefreshScope,表示该类配置信息修改时需要被更新。
3.5.需要gitee的管理中配置WebHooks:刷新地址:http://localhost:9600/actuator/refresh的POST请求,本地可以使用内网穿透工具验证:ngrok工具。