简介
微服务不可能只有一个,会有很多很多个,比如所有微服务都需要配置mybatis,那么需要修改用户密码时,就需要每个都修改一次,如果有几百个会很难维护,所有我们可以把这些公共配置提取出来放到git里,所有微服务都先去git读取公共配置,这样就很方便了
https://cloud.spring.io/spring-cloud-static/spring-cloud-config/2.2.1.RELEASE/reference/html/
服务端配置与测试
创建git仓库
本地clone仓库
创建cloud-config-center-3344微服务
pom
引入配置中心服务端 <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-config-server</artifactId> </dependency> 引入eureka客户端 <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency>
yml
spring: application: name: cloud-config-center #注册进Eureka服务器的微服务名 cloud: config: server: git: #GitHub上面的git仓库名字 uri: https://gitee.com/a715155890/config-server.git ####搜索目录 search-paths: config-server ####读取分支 default-label: master
主启动 添加@EnableConfigServer
@SpringBootApplication @EnableConfigServer public class CenterMain3344 { public static void main(String[] args) { SpringApplication.run(CenterMain3344.class,args); } }
启动测试
配置读取规则
/{label}/{name}-{profile}.yml(最推荐使用这种方式) master分支 http://config-3344.com:3344/master/config-dev.yml dev分支 http://config-3344.com:3344/dev/config-dev.yml label:分支(branch) name:服务名 profiles:环境(dev/test/prod)
客户端配置与测试
pom
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-config</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency>
yml
application.yml 是应用级配置,我们需要创建bootstrap.yml 这是系统级配置优先级更高
server: port: 3355 spring: application: name: config-client cloud: #Config客户端配置 config: label: master #分支名称 name: config #配置文件名称 profile: dev #读取后缀名称 上述3个综合:master分支上config-dev.yml的配置文件被读取http://config-3344.com:3344/master/config-dev.yml uri: http://localhost:3344 #配置中心地址k #服务注册到eureka地址 eureka: client: service-url: defaultZone: http://localhost:7001/eureka
配置主启动
@SpringBootApplication @EnableEurekaClient public class ConfigClientMain3355 { public static void main(String[] args) { SpringApplication.run(ConfigClientMain3355.class,args); } }
配值业务类
@RestController public class ConfigClientController { @Value("${config.info}") private String configInfo; @GetMapping("/configInfo") public String getConfigInfo() { return configInfo; } }
测试
客户端配置动态刷新
POM引入actuator监控
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency>
修改YML,暴露监控端口
# 暴露监控端点 management: endpoints: web: exposure: include: "*"
@RefreshScope业务类Controller修改
@SpringBootApplication @EnableEurekaClient @RefreshScope public class ConfigClientMain3355 { public static void main(String[] args) { SpringApplication.run(ConfigClientMain3355.class,args); } }
需要运维人员发送Post请求刷新3355
curl -X POST "http://localhost:3355/actuator/refresh"