配置中心
实战案列
git上搭建配置环境
创建yml配置文件
在springcloud01工程下新建config文件夹,并将sp02-itemservice、sp03-userservice、sp04-orderservice中的application.yml文件复制一份并改名为放入config文件夹。
新增yml配置
三个 yml 文件中都新增下面配置,防止配置中心的配置,覆盖本地命令参数
spring:
cloud:
config:
override-none: true
创建Git本地仓库
选择springcloud01工程创建本地仓库
将工程向本地仓库上传(commit 提交本地仓库,ctrl+k,右上角对勾按钮,double shift搜索commit)
创建Getee远程仓库
gitee上创建一个远程仓库,命名为SpringCloudDemo
复制远程仓库的地址
本地仓库上传Getee
将本地仓库的工程上传至gitee上(ctrl+shift+k,右上角向上箭头按钮,double shift搜索push)
上传成功
搭建配置中心
在 springcloud1 下新建模块 sp09-config
pom.xml
添加依赖
- eureka client
- config server
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>springcloud01</artifactId>
<groupId>cn.tedu</groupId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>cn.tedu</groupId>
<artifactId>sp09-config</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>sp09-config</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
</properties>
<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>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
application.yml
添加访问远程仓库配置文件的路径
- 仓库的地址
- 存放配置文件的文件夹路径
spring:
application:
name: config-server
cloud:
config:
server:
git:
uri: https://gitee.com/deven-lee/spring-cloud-dome
search-paths: /config
server:
port: 6001
eureka:
client:
service-url:
defaultZone: http://eureka1:2001/eureka, http://eureka2:2002/eureka
主程序
添加@EnableConfigServer
注解
@EnableConfigServer
@SpringBootApplication
public class Sp09ConfigApplication {
public static void main(String[] args) {
SpringApplication.run(Sp09ConfigApplication.class, args);
}
}
启动测试
启动 sp09-config 服务,访问eureka,检查config 服务是否正常运行
http://eureka1:2001/
分别访问配置中心的配置文件,查看信息
http://localhost:6001/item-service/dev
http://localhost:6001/item-service/dev
http://localhost:6001/item-service/dev
配置中心的客户端
pom.xml
在02、03、04 模块中添加 config client 依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
bootstrap.yml
把 02、03、04模块的的配置文件全部注释掉,并创建 bootstrap.yml 配置文件。
在 02、03、04 bootstrap.yml 文件中分别写入下面配置,根据自己的服务名更改name等信息。
添加配置:
- eureka地址
- 指定配置中心的服务id:
CONFIG-SERVER
- 指定下载的配置文件和 profile
eureka:
client:
service-url:
defaultZone: http://eureka1:2001/eureka, http://eureka2:2002/eureka
spring:
cloud:
config:
discovery:
enabled: true
service-id: config-server
name: item-service
profile: dev
启动服务
当02、03、04服务能成功启动,并显示下面日志,说明连接配置中心成功。
config bus + rabbitmq 消息总线配置刷新
post 请求消息总线刷新端点,服务器会向 rabbitmq 发布刷新消息,接收到消息的微服务会向配置服务器请求刷新配置信息
需要动态更新配置的微服务,添加 spring cloud bus 依赖,并添加 rabbitmq 连接信息
修改以下微服务
sp02-item-service
sp03-user-service
sp04-order-service
sp11-zuul
sp12-config
pom.xml 添加 spring cloud bus 依赖
使用 STS 编辑起步依赖,分别添加 bus、rabbitmq 依赖
management:
endpoints:
web:
exposure:
include: bus-refresh
postman 向 bus-refresh 刷新端点发送 post 请求
http://localhost:6001/actuator/bus-refresh