SpringCloud 使用SpringCloudConfig搭建远程配置中心
SpringCloud 使用SpringCloudConfig配置远程配置中心
前言
随着服务数量越来越多,模块越来越多我们的各种服务的配置文件也越来越多,同时多个服务在项目中采用配置文件的方式,越来越显得力不从心,往往一次更改配置文件很是麻烦,这时候SpringCloudConfig出现,他的出现让我们集中配置配置文件,服务端集中管理,客户端一次读取,同时采用更改推送的方式,即时同步更新配置文件,可谓方便至极,极大的解放了长修改多个配置文件生产力。
远程git仓库
首先需要注册一个远程存储配置文件的存储仓库,用来存储各种配置文件。
新建一个git仓库
然后新建一个mysql的配置文件
一个测试
一个dev
然后提交到Github
点击红色区域获取git链接
内容如下
# 数据库驱动:
driverClassName=com.mysql.jdbc.Driver
# 数据库链接地址:
url=jdbc:mysql://101.10.10.10:3306/db_app?useUnicode=true&characterEncoding=utf8&characterSetResults=utf8
#数据库用户名:
username=root
# 数据库密码:
password=root
配置eureka注册中心
导入config-server依赖
<!-- config-server 依赖-->
<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-server</artifactId>
</dependency>
配置yml文件
1 需要配置将此服务注册到注册中心,这里采用也可以自己注册自己,注册到注册中心可以让其他服务进行读取配置。
需要说明当config-server启动的时候会把远端git仓库拉取到本地,至于拉到本地哪,在下面的 basedir 配置。
2 远端git可以使用账号密码,也可以配置私钥访问,比如配置 private-key
#tomcat端口
server:
port: 5001
spring:
application:
#指定服务名称
name: config-server
#配置服务注册中心
cloud:
config:
server:
git:
#git地址
uri: https://github.com/pomestyle/spring-config-server.git
# git账号密码
#username: ××××××××
#password: ××××××××
#本地仓库
basedir: D:/localGit/
#也可以使用私钥链接远程仓库
#private-key:
# eureka 服务配置
eureka:
client:
registerWithEureka: false #是否将自己注册到Eureka服务中,本身就是服务,所以无需注册
fetchRegistry: false # 是否从Eureka 中获取注册信息
serviceUrl: # Eureka 客户端与Eureka服务端进行交互的地主
defaultZone: http://127.0.0.1:6868/eureka/
instance:
#将自己的ip注册到eureka服务中
prefer-ip-address: true
main 启动类
config-server作为一个服务必须要注册到eureka才能被其他服务发现调用,所以需要 EnableDiscoveryClient
//启用configServer
@EnableConfigServer
//启用eurekaServer 服务端
@EnableEurekaServer
//启用eurekaClient 客户端
@EnableDiscoveryClient
@SpringBootApplication
public class SpringcloudconfigserverApplication {
public static void main(String[] args) {
SpringApplication.run(SpringcloudconfigserverApplication.class, args);
}
}
访问配置文件
启动config-server
在启动完成后我们可以按照如下规则访问config-server
/{application}/{profile}[/{label}]
/{application}-{profile}.yml
/{label}/{application}-{profile}.yml
/{application}-{profile}.properties
/{label}/{application}-{profile}.properties
label : git仓库的分支
application :配置文件的文件名,如我的残酷里的clientOne.yml 中的“clientOne”,对应服务的应用名,这个后面再说
profile:这个很熟悉,配置文件的后缀,可以对应服务启用的环境
访问配置文件
- 默认访问
默认访问的是master分支
- 分支访问
访问mysql-dev.properties
访问mysql-test.properties
yaml格式的配置,使用properties格式的也是一样的
代码地址 传送门
config-client客户端
添加依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
<!--eurekaClient-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
main方法
//启动eureka客户端服务
@EnableEurekaClient
yml
将applicatin.yml 改为bootstrap.yml
bootstrap.yml 文件启动优先于 applicatin.yml 伴随着服务器启动并访问远程配置中心
# cloud-config-client配置
spring:
cloud:
config:
name: mysql #对应config server Url中的{application}
profile: dev #配置环境,对应config server Url中的{profile}
label: master #配置分支(不配置则默认:git则是master,svn则是trunk),
uri: http://127.0.0.1:5001/ #配置中心地址
获取文件内容
@RestController
@RefreshScope
public class TestController {
@Value("${password}")
private String password;
@GetMapping("/getMessage")
public String getPassword(){
return this.password;
}
}
推荐阅读
-
SpringCloud学习系列之五-----配置中心(Config)和消息总线(Bus)完美使用版
-
SpringCloud学习笔记(7):使用Spring Cloud Config配置中心
-
使用Spring Cloud Config搭建配置中心
-
使用Spring Cloud Config搭建配置中心
-
springCloud使用Nacos作为服务发现与注册中心,配置中心
-
Nacos的集群搭建 和 服务配置中心的 使用
-
【记录】springcloud配置中心之apollo使用
-
SpringCloud:分布式配置中心客户端使用实战(十七)
-
springcloud~配置中心实例搭建
-
SpringCloudConfig配置服务器搭建与使用