一. 搭建配置中心
-
准备git仓库:
-
新建springboot应用,创建config-server
-
pom.xml中添加依赖
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-server</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
-
添加application.yml
#服务名称
spring:
application:
name: config-server
cloud:
config:
server:
git:
uri: https://gitee.com/waitforxy/config_cloud
username: 794666918@qq.com
password: xdclass.net123
timeout: 5
default-label: master
#服务的端口号
server:
port: 9100
#指定注册中心地址
eureka:
client:
serviceUrl:
defaultZone: http://localhost:8761/eureka/
-
启动类添加注解
@SpringBootApplication
@EnableConfigServer
public class ConfigServerApplication {
public static void main(String[] args) {
SpringApplication.run(ConfigServerApplication.class, args);
}
}
-
访问方式(一定要注意语法,如果有问题,会出错)
-
类型
-
/{name}-{profiles}.properties
-
/{name}-{profiles}.yml
-
/{name}-{profiles}.json
-
/{label}/{name}-{profiles}.yml
-
-
变量解释:
-
name 服务器名称
-
profile 环境名称,开发、测试、生产
-
lable 仓库分支、默认master分支
-
-
注意:git放的yml但是后缀更改properties,git会自动转码
二. 配置客户端
-
添加依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-client</artifactId>
</dependency>
-
修改对应服务的配置文件,把application.yml 改为 bootstrap.yml
#指定注册中心地址
eureka:
client:
serviceUrl:
defaultZone: http://localhost:8761/eureka/
#服务的名称
spring:
application:
name: product-service
#指定从哪个配置中心读取
cloud:
config:
discovery:
service-id: CONFIG-SERVER
enabled: true
profile: test
#建议用lable去区分环境,默认是lable是master分支
#label: test
-
注意点:
-
配置文件要用bootstrap.yml
-
默认读取文件名是 服务名称
-
三. 配置中心动态刷新
-
在config-clinet的pom.xml中新增spring-boot-starter-actuator监控模块,其中包含了/refresh刷新API。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
-
通过上面的介绍,大家不难想到,该功能还可以同Git仓库的Web Hook功能进行关联,当有Git提交变化时,就给对应的配置主机发送/refresh请求来实现配置信息的实时更新。但是,当我们的系统发展壮大之后,维护这样的刷新清单也将成为一个非常大的负担,而且很容易犯错,那么有什么办法可以解决这个复杂度呢?后续我们将继续介绍如何通过Spring Cloud Bus来实现以消息总线的方式进行通知配置信息的变化,完成集群上的自动化更新。